Hallo, bin gearde nen AT90Can128 und nen ATmega32, leider habe ich das Problem das ich nicht weis wie zu eimen Interrupt das Signal ( oder Vector ) heist... z.B. SIGNAL( SIG_OVERFLOW0 ) { // Die ISR //.... } Das SIG_OVERFLOW0 habe ich nur durch zufall im Forum gefunden.... kann mir jemand sagen wo das steht ? Im Datenblatt habe ich nichts gefunden. Danke und Gruß Dirk :-)
Das hängt ganz und gar vom C-Compiler und der C-Bibliothek ab. Du verwendest scheinbar GCC und die GLIBC -- schau da nach. http://www.nongnu.org/avr-libc/user-manual/index.html
SIGNAL und die ganzen SIG_XXX-Vektornamen sind veraltet. SIGNAL wurde mittlerweile durch ISR ersetzt. In der Dokumentation zur AVR-libc stehen alle Vektornamen in der Beschreibung der interrupt.h. Die aktuellen Vektornamen setzen sich im Regelfall (es gibt leider auch ein paar Ausnahmen) aus dem im Datenblatt angegebenen Namen und dem Zusatz _vect zusammen, wobei Leerzeichen im Namen durch Unterstriche zu ersetzen sind. beim externen Interrupt 0 wäre das z.B. INT0_vect.
Eine fein säuberliche Auflistung der ISR-Namen bekommst Du zB für ATmega32 mit
1 | avr-gcc -E -dM file.c -mmcu=atmega32 | grep vect | sort |
wobei file.c die <avr/io.h> includen muss.
oder man folgt der io.h manuell, dort wird dann target-spezifisch eine datei eingebunden, und da stehen dann ziemlich weit unten irgendwo die definitionen für die interrupt-vektor-adressen...
Oder man liest sich einfach die verfluchte Original-Dokumentation durch?! Da steht sogar hinter jeder ISR eine Auflistung der Prozessoren, die den ISR besitzen...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.