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 :-)
Gast
#894127
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.
ja ich verwende Win AVR... Vielen Dank... bist mein Held
Eine fein säuberliche Auflistung der ISR-Namen bekommst Du zB für ATmega32 mit
1 | |
wobei file.c die <avr/io.h> includen muss.
Gast
#894356
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...
Gast
#894370
Oder man liest sich einfach die verfluchte Original-Dokumentation durch?! Da steht sogar hinter jeder ISR eine Auflistung der Prozessoren, die den ISR besitzen...
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.