www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Arduino 2560 in prekinitve - interrupt

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
MojsterMiha
Član
Član



Pridružen-a: Ned 09 Nov 2008 20:28
Prispevkov: 14
Aktiv.: 0.07
Kraj: Ormož

PrispevekObjavljeno: Ned Maj 12, 2013 1:41 pm    Naslov sporočila:  Arduino 2560 in prekinitve - interrupt Odgovori s citatom

Pozdravljeni
V programiranju sem začetnik z veliko volje, ki pa mi počasi že pojenja, ko naletim na takšne težave:

Na arduinotu 2560 želim sprogramirati čisto enostavno prekinitev, ki bi prižigala in ugašala dve led diodici. Prekinitev generiram z encoderjem.
Do sem vse lepo in prav in zadeva tudi deluje, dokler v programček ne vstavim zanke Do - Loop.
Takrat prekinitev več ne deluje. Takoj ko odstranim zanko spet dela.

Kje ga biksam?
Vsaka pomoč mi bo prihranila veliko živcev...

Hvala vsem

$regfile = "m2560def.dat"
$crystal = 12000000 ' generated. Take care that the chip supports all fuse bytes.$PROG &HFF,&HE3,&HD9,&H00' generated. Take care that the chip supports all fuse bytes.000000
$hwstack = 100
$swstack = 100
$framesize = 100


Config Portc = Output
Config Portd = Input

Cha Alias Pind.3
Chb Alias Pind.2

Config Chb = Input
Config Cha = Input

'''''''''''''''''''''''''''''''''''''''''''''



Led0 Alias Portc.5
Led1 Alias Portc.3




Enable Interrupts
Enable Int4
'Config Int4 = Falling
On Int4 Prekinitev



Do

''ko vstavim zanko Prekinitev več ne dela !!!!!!!!

Loop


Prekinitev:
If Chb = 0 Then
Set Led0
Reset Led1
Else
Reset Led0
Set Led1
End If

Return



End
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
skalpel
Član
Član



Pridružen-a: Tor 31 Jan 2012 19:46
Prispevkov: 432
Aktiv.: 2.92
Kraj: Šenčur

PrispevekObjavljeno: Ned Maj 12, 2013 2:25 pm    Naslov sporočila:   Odgovori s citatom

Zakaj ne uporabiš bolj preproste kode?

Koda:

int ledPin1 = 13;
int ledPin2 = 12;

void setup()
    {
    pinMode(ledPin1, OUTPUT);
    pinMode(ledPin2, OUTPUT);
   }

void loop()
    {
      digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, LOW);
      delay(1000);

      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, HIGH);
      delay(1000);
     }

Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
MojsterMiha
Član
Član



Pridružen-a: Ned 09 Nov 2008 20:28
Prispevkov: 14
Aktiv.: 0.07
Kraj: Ormož

PrispevekObjavljeno: Ned Maj 12, 2013 3:04 pm    Naslov sporočila:   Odgovori s citatom

Vse kar mi je do sedaj uspelo sprogramirati je bilo v BASCOM-u
Skalpel, tvoj primer je izven mojih zmožnosti Sad

Pa saj ne gre toliko za sam program, pač pa za tisti firbec zakaj NE DELA!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
skalpel
Član
Član



Pridružen-a: Tor 31 Jan 2012 19:46
Prispevkov: 432
Aktiv.: 2.92
Kraj: Šenčur

PrispevekObjavljeno: Ned Maj 12, 2013 3:13 pm    Naslov sporočila:   Odgovori s citatom

Imaš vse pravilno nastavljeno?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
MojsterMiha
Član
Član



Pridružen-a: Ned 09 Nov 2008 20:28
Prispevkov: 14
Aktiv.: 0.07
Kraj: Ormož

PrispevekObjavljeno: Ned Maj 12, 2013 3:50 pm    Naslov sporočila:   Odgovori s citatom

Hja, upam.
Če v programu ni zanke Do - Loop dela kot je treba.
Takoj ko pa vstavim zanko (tudi če v njej ni nič) pa prekinitve več ne delajo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Ned Maj 12, 2013 4:27 pm    Naslov sporočila:   Odgovori s citatom

Sicer Bascoma ne poznam ne vem kako, vendar ali ne bi moral biti End takoj za Do-Loop in ne na koncu?
Vsaj v Helpu za Bascom je tako:



Bascom_Interupt.JPG
 Opis:
 Velikost datoteke:  36.36 KB
 Pogledana:  16 krat

Bascom_Interupt.JPG



_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
MojsterMiha
Član
Član



Pridružen-a: Ned 09 Nov 2008 20:28
Prispevkov: 14
Aktiv.: 0.07
Kraj: Ormož

PrispevekObjavljeno: Ned Maj 12, 2013 5:09 pm    Naslov sporočila:   Odgovori s citatom

Tudi z End takoj po zanki sem poskušal, pa tudi ne gre.
Pravzaprav, če postavim End pred Prekinitev potem le ta sploh ne dela (tudi če ni zanke)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Pobesneli
Član
Član



Pridružen-a: Sre 02 Jan 2008 1:24
Prispevkov: 1070
Aktiv.: 5.41
Kraj: Ajdovščina

PrispevekObjavljeno: Ned Maj 12, 2013 5:26 pm    Naslov sporočila:   Odgovori s citatom

Program gre v do-loop zanko in iz nje ne gre več, v njej pa ni nič. Mogoče ti zaradi tega ne dela?
V help v bascom pise v primerih:

Do
!Nop
Loop

Nisem ne testiral in ne prakticiral. Poskusi pa porocaj
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Ned Maj 12, 2013 5:34 pm    Naslov sporočila:   Odgovori s citatom

@MojsterMiha: s čim pa sprožiš prekinitev?
Kakor vidim iz tvojega programa ne greš nikoli v prekinitveno rutino.
End mora biti za Do-Loop, kajti tukaj je konec programa. Prekinitev je podprogram!

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
MojsterMiha
Član
Član



Pridružen-a: Ned 09 Nov 2008 20:28
Prispevkov: 14
Aktiv.: 0.07
Kraj: Ormož

PrispevekObjavljeno: Ned Maj 12, 2013 7:41 pm    Naslov sporočila:   Odgovori s citatom

Jaka, prav imaš!

Sedaj ko sem malo bolj natančno pogledal vezavo in datasheet sem ugotovil, da prekinitve ne sprožim, ker imam vezano na pin, ki je INT3 in ne INT4 kot sem mislil.

Seveda je takoj po odpravi napake steklo.... Very Happy

Malo sem jezen sam nase, obenem pa vesel, ker zadeva deluje.

Hvala vsem...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.11

PrispevekObjavljeno: Tor Feb 16, 2016 6:08 pm    Naslov sporočila:   Odgovori s citatom

Skoraj 3 leta kasneje ...

Naletel sem na čisto brezvezno mino v zvezi s pini.

Imam Mega 2560 ploščico in nanjo pritrjeno svojo ploščico. Vsi pini so povezani in imajo neko funkcijo.

Enkoder sem vezal na Arduino pina 14 in 15, ki sta na Atmel-u fizično vezana na port J00 in J01. Njuni funkciji v procesorju sta PCINT9 in PCINT10 (pin change interrupt ...). Zadostuje mi ena prekinitev.


Problem je v tem, da Arduino okolje za 2560 predvideva prekinitve samo na Arduino pinih
2, 3, 18, 19, 20, 21 .

Ali se da to zadrego rešiti programsko ali s predelavo knjižnice (katere?), ali moram prekinjati sledi po tiskanini in po zraku narediti prevezavi in zamenjavi naprimer med pinoma 15 in 18 (ki sta sorazmerno blizu) Question




https://www.arduino.cc/en/Reference/AttachInterrupt DODAJANJE PREKINITEV
https://www.arduino.cc/en/Main/ArduinoBoardMega2560 LASTNOSTI MEGA PLOŠČICE

Dodajam:
V
C:\Program Files\Arduino\hardware\arduino\avr\variants\mega
je datoteka pins_arduino.h , kjer so definirane povezave med pini procesorja in Arduino pini. Kako spremeniti digitalPinToInterrupt , da bo prekinitev na pinu 13 ?
Kar spremenim eno 18 v ==13 in malo pogoljufam?
Še <= 13 moram odstraniti iz povsod ... in jo nadomestiti z <= 12 ...

Joooj ... 15, ne 13 !! Eh, no ... popravljam v prvotno stanje ...

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Tor Feb 16, 2016 6:36 pm    Naslov sporočila:   Odgovori s citatom

igo mogoče tole oz. tole?
_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.11

PrispevekObjavljeno: Tor Feb 16, 2016 8:29 pm    Naslov sporočila:   Odgovori s citatom

Hvala.
Sicer se mi zdi, da bi tudi moja predelava morala delovati, ker je sorazmerno podobna, a imam trenutno še bolj odbito težavo d'oh! . Par sekund po tistem, ko sem prej napisal "popravljam v prvotno stanje ..." je zmanjkalo elektrike.
Do jutri dopoldne naj bi odpravili okvaro ... vsekakor sporočim rezultate predelave.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.11

PrispevekObjavljeno: Sre Feb 17, 2016 7:07 pm    Naslov sporočila:   Odgovori s citatom

Univerzalni programerji in spolnost ...



JE[samocenzura]EM VAM univerzalne programerje, ki pišejo univerzalne knjižnice za cel kup različnih MCU in osnovnih ploščic, da vse skupaj postane nepregledno in med seboj navzkrižno povezano in večkrat definirano !!!

Normalen programer za vsak MCU napiše samo 3 knjižnice.
Prvo, CORE2MCU.h , ki predefinira notranje oznake drobovja (strojne naslove registrov, portov, ...) v razumljive kratice iz datasheeta in naprej na zunanje pine MCU. Pri PIC MCU-jih je to v .inc datoteki vse na enem mestu.
Drugo, FUN2PIN.h , ki z zaporedjem zbirniških ukazov dodeli pinu ustrezno funkcijo (ADC, PWM, INT, vhod, izhod, ...).
Tretjo, MCU2BRD.h , ki pravzaprav samo predefinira vsako številko MCU pina v številko na osnovni ploščici (naprimer Atmega2560 MCU pin 97 je na Arduino Mega 2560 ploščici preimenovan v pin ADC0). Kdor bi MCU naspajkal na svojo ploščico, bi naredil svojo, ali pa tudi ne (če ne bi bila namenjena množični prodaji ali univerzalni uporabi).

Uporabnik bi potem zvlekel dol obe knjižnici za svoj MCU in knjižnico za ploščico (če je kupil že kompletek, ne le golega MCU) in začel normalno delati.
V Setup() bi samo nametal funkcije iz FUN2PIN in definiral funkcijo vsakega uporabljenega pina. Ostali, neuporabljeni, bi bili vhodi z aktivnimi pull-up, ali nekaj, kar ne troši toka in ne pobira motenj iz okolice.

Take knjižnice bi bile vitke (brez ifndef, ifdef, switch, ... include medsebojno navzkrižno sklicevanje, ... nesnage) in absolutno optimizirane (beri: Ni čudno, da bo Microchip kupil Atmel). V njih bi bili vsi ukazi, da bi lahko potem razni programerji po svetu s pomočjo tistih ukazov lahko izdelovali ostale namenske knjižnice za GLCD, serial595, serial485, Touch, EEPROM, 1-wire, ...


V glavnem sem po 100 spremembah na 100 mestih, kupih errorjev, zaradi navzkrižne povezanosti definicij,... vse skupaj povrnil v prvotno stanje (sem delal kopije) in uporabil knjižnico iz druge povezave, ki jo je zgoraj pripel Jaka57 Applause . (Tista iz prve povezave ima zame preveč čuden način uporabe.)

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Jaka57
Moderator
Moderator



Pridružen-a: Ned 12 Dec 2004 21:47
Prispevkov: 5766
Aktiv.: 25.97
Kraj: Grosuplje

PrispevekObjavljeno: Sre Feb 17, 2016 9:05 pm    Naslov sporočila:   Odgovori s citatom

igo je napisal/a:
Univerzalni programerji in spolnost ...

=BEM VAM univerzalne programerje, ki pišejo univerzalne knjižnice za cel kup različnih MCU in osnovnih ploščic, da vse skupaj postane nepregledno in med seboj navzkrižno povezano in večkrat definirano !!!.......
Se popolnoma strinjam.
In še vedno niso popravili definicij za ploščice v boards.txt Brick wall .

igo je napisal/a:
..........Take knjižnice bi bile vitke (brez ifndef, ifdef, switch, ... include medsebojno navzkrižno sklicevanje, ... nesnage) in absolutno optimizirane (beri: Ni čudno, da bo Microchip kupil Atmel). V njih bi bili vsi ukazi, da bi lahko potem razni programerji po svetu s pomočjo tistih ukazov lahko izdelovali ostale namenske knjižnice za GLCD, serial595, serial485, Touch, EEPROM, 1-wire, ...
Točno tako in vključiš kar potrebuješ.
Sicer pa, važno, da si rešil Dancing .

PS. Samocenzuro sem jaz popravil Very Happy

_________________
Lp, Jaka
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group