Forum: Mikrocontroller und Digitale Elektronik ATMega644p USART-Interruptvector?


von Zorg (Gast)


Lesenswert?

Hi,

ich versuche gerade, GRBL für den ATMega644p zu compilieren, scheitere 
aber an der Definition für den USART-Interrupt.

Laut Datenblatt sind das USART_RXC bzw. USART1_RXC. Wenn ich aber 
USART_RXC_vect bzw. USART1_RXC_vect verwende, bekomme ich immer eine 
Fehlermeldung

Warnung: »USART1_RXC_vect« appears to be a misspelled signal handler, 
missing __vector prefix [-Wmisspelled-isr]

Was mache ich da falsch?

von HildeK (Gast)


Lesenswert?

USART0_RX_vect und USART1_RX_vect sind die Namen, die bei meiner 
Installation (WinAVR) im File iom644pa.h definiert sind.

Welche Unterschiede es gibt zwischen dem 644p und dem 644pa weiß ich 
aber nicht auswendig.

von Max M. (jens2001)


Lesenswert?

Zorg schrieb:
> USART_RXC

Zorg schrieb:
> USART1_RXC

Zorg schrieb:
> Laut Datenblatt

Wo liest du das???

Zorg schrieb:
> appears to be a misspelled

: Bearbeitet durch User
von Zorg (Gast)


Lesenswert?

Max M. schrieb:

> Zorg schrieb:
>> Laut Datenblatt
>
> Wo liest du das???

http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42744-ATmega644P_Datasheet.pdf 
Seite 80, Kapitel "Interrupt Vectors in ATmega644P"

> Zorg schrieb:
>> appears to be a misspelled

Fehlermeldungen kann ich lesen, deswegen weiß ich aber noch immer nicht, 
wie es richtig wäre.

von Zorg (Gast)


Lesenswert?

HildeK schrieb:
> USART0_RX_vect und USART1_RX_vect sind die Namen

Das war's - Danke!!! :-)

von Neverever (Gast)


Lesenswert?

Zorg schrieb:
> Fehlermeldungen kann ich lesen, deswegen weiß ich aber noch immer nicht,
> wie es richtig wäre.


Na dann schaut man in die Header-Dateien, wo es definiert wird.
Eigentlich gar nicht schwer und dauert auch keine zwei Minuten...

von HildeK (Gast)


Lesenswert?

Zorg schrieb:
> 
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42744-ATmega644P_Datasheet.pdf
> Seite 80, Kapitel "Interrupt Vectors in ATmega644P"

Ist mir bei anderen AVRs auch schon begegnet, dass der Name im 
Datenblatt nicht exakt so im Headerfile übernommen wurde bzw. zu 
verwandten AVRs abweicht.
Siehe hier: Beitrag "INT0 IRQ beim Tiny44A vs. Tiny44 (WINAVR-20100110 )"
Dort hat mir aber auch niemand sagen können, warum das so ist. Die 
Hinweise auf 'veraltete' Toolchain waren nicht korrekt.

von Veit D. (devil-elec)


Angehängte Dateien:

Lesenswert?

Hallo,

bin auch schon über die verschiedene Namensgebung gestolpert und habe 
mich gewundert warum das Datenblatt nicht stimmt bzw. der Compiler 
meckert. Falls noch mehr benötigt werden sollte hänge ich die 
Definitionsdatei aus Atmel Studio ran.

C:\Program Files 
(x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr 
\...

von HildeK (Gast)


Lesenswert?

Übrigens: du hättest als Quelle in dem verlinkten Datenblatt auf Seite 
78, die Tabelle 13-1 nehmen können. :-)

von Max M. (jens2001)


Angehängte Dateien:

Lesenswert?

Zorg schrieb:
>> Zorg schrieb:
>>> appears to be a misspelled
>
> Fehlermeldungen kann ich lesen, deswegen weiß ich aber noch immer nicht,
> wie es richtig wäre.

Dann guckt man einfach mal in die originale Intrruptvektortabelle!

http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42744-ATmega644P_Datasheet.pdf

Seite 78/79 "Interrupt Vectors"!

von Veit D. (devil-elec)


Lesenswert?

Aufregen aber nicht lesen können, sowas kann ich leiden.

Im Datenblatt steht z.Bsp. der ISR Vektorname "USART_TXC". Und nützt 
einem das was? Nein. Denn der heißt "USART0_TX_vect" bzw. 
"USART1_TX_vect".

Bei den Timern wird in der Register-Namensgebung mit n und x hantiert um 
ja alles Haarfein zu erklären und bei den Interruptvektoren versagt das 
Datenblatt seit Jahren komplett.

von Georg G. (df2au)


Lesenswert?

Veit D. schrieb:
> Im Datenblatt steht z.Bsp. der ISR Vektorname "USART_TXC". Und nützt
> einem das was? Nein. Denn der heißt "USART0_TX_vect" bzw.
> "USART1_TX_vect".

Vorsicht! Es gibt den 644 mit einem und mit zwei UARTs. Da kann man 
schon mal die Datenblätter verwechseln.

von John Doe (Gast)


Lesenswert?

Georg G. schrieb:
> Vorsicht! Es gibt den 644 mit einem und mit zwei UARTs. Da kann man
> schon mal die Datenblätter verwechseln.

Nö.
Es gibt den ATmega644 mit einem UART und den ATmega644P mit zwei UART.
Eindeutig unterschiedliche Typen.

von Georg G. (df2au)


Lesenswert?

John Doe schrieb:
> Es gibt den ATmega644 mit einem UART und den ATmega644P mit zwei UART.

Das Kennzeichen für die zwei UARTs ist der Suffix "A". Das "P" bedeutet 
"Pico Power".

Das Datenblatt des 644 wurde in der Vergangenheit mehrfach überarbeitet. 
In der aktuellen Version der "ein-UART-Variante" hat der Vector auch die 
"0" im Namen.

von Stefan F. (Gast)


Lesenswert?

Ich schaue immer hier nach, um herauszufinden, wie die 
Interrupt-Vektoren wirklich heißen.

http://nongnu.org/avr-libc/user-manual/group__avr__interrupts.html

Die Datenblätter stimmen leider nicht immer 100% damit überein.

von Thomas E. (thomase)


Lesenswert?

Veit D. schrieb:
> Im Datenblatt steht z.Bsp. der ISR Vektorname "USART_TXC". Und nützt
> einem das was? Nein. Denn der heißt "USART0_TX_vect" bzw.
> "USART1_TX_vect".

Ja, eine Sauerei ist das. Aber welcher Idiot guckt in das Datenblatt des 
Atmega8, wenn er einen 644P programmieren will?

von Neverever (Gast)


Lesenswert?

Georg G. schrieb:
> John Doe schrieb:
>> Es gibt den ATmega644 mit einem UART und den ATmega644P mit zwei UART.
>
> Das Kennzeichen für die zwei UARTs ist der Suffix "A". Das "P" bedeutet
> "Pico Power".


Nein, der 644P (ohne A) hat auch zwei UARTs.

von Georg G. (df2au)


Lesenswert?

Neverever schrieb:
> Nein, der 644P (ohne A) hat auch zwei UARTs.

Wieder was gelernt. Den kennt mein Datenblatt nicht, weder das des alten 
644 (Rev 2593O, die 15. Version) noch das des neuen (Rev 8272D, die 4. 
Version).

Halten wir fest: Es geht munter durcheinander bei dem 644ern.

von Thomas E. (thomase)


Lesenswert?

Georg G. schrieb:
> Den kennt mein Datenblatt nicht

Mein Datenblatt, dein Datenblatt? Sowas kenne ich gar nicht. Ich benutze 
die Datenblätter, die ich mit ein paar Klicks auf der Website von 
Microchip finde. Die sind immer aktuell.

Georg G. schrieb:
> Halten wir fest: Es geht munter durcheinander bei dem 644ern.

Ja, aber dafür sorgst du eindeutig selbst.

von Zorg (Gast)


Lesenswert?

Veit D. schrieb:
> Aufregen aber nicht lesen können, sowas kann ich leiden.

Ich rege mich nicht auf, ich habe nur auf eine sinnlos-pampige Antwort 
in ähnlicher Weise reagiert. Wenn jemand nicht verträgt, dass er genau 
so angepflaumt wird, wie er das selber tut, sollte derjenige meiner 
Meinung nach einen Arzt aufsuchen.

Im übrigen hat HildeK meine Frage schon längst sachlich richtig und 
sinnvoll beantwortet.

von Max M. (jens2001)


Lesenswert?

Zorg schrieb:
> Ich rege mich nicht auf

ICH REGE MICH AUCH NICHT AUUF!!!!

;-)

Ich wundere mich nur regelmäßig über Leute die erstmal einen Thread 
aufmachen statt einfach ins DB zu sehen.

von Stefan F. (Gast)


Lesenswert?

Max M. schrieb:
> Ich wundere mich nur regelmäßig über Leute die erstmal einen Thread
> aufmachen statt einfach ins DB zu sehen.

Manche Leute tun sich mit Englisch schwer.

Wenn ich in meiner Jugendzeit alles auf Englisch hätte lesen müssen, 
wäre ich nie Hobby-Elektroniker geworden - wahrscheinlich nicht einmal 
Softwareentwickler. Denn mein Englisch war mangels Motivation schlecht. 
Das kam erst später im Erwachsenen Alter, als die Weichen für meine 
Berufswahl längst gestellt und überfahren waren.

In den 80er Jahren gab es noch reichlich Informationen auf deutsch. 
Viele Autoren und ganze Verlage verdienten ihr Geld damit, englische 
Literatur (auch Datenblätter) auf deutsch zu übersetzen. Viele 
Interessante Mikrochips wurden auch von deutschen Firmen hergestellt und 
von denen direkt auf deutsch dokumentiert (z.B. Siemens 80C535).

von Max M. (jens2001)


Lesenswert?

Stefanus F. schrieb:
> Manche Leute tun sich mit Englisch schwer.

Als ich im vorigen Jahrtausend Englisch lernen musste war ich immer froh 
wenn ich  zur Versetzung eine 4- hinbekommen habe.
Aber um Infos aus BÜCHERN (offline aus der Bücherei) zu extrahieren hat 
es dann doch meist gereicht.
Die Option I-Net stand nicht zur Verfügung!

von c-hater (Gast)


Lesenswert?

Stefanus F. schrieb:

> Manche Leute tun sich mit Englisch schwer.

Dann sollen sie halt maschinelle Translator+gesunden Menschenverstand 
verwenden. Ist doch heute (im Gegensatz zu den 80ern) nicht mehr schwer, 
jedenfalls wenn man den gesunden Menschenverstand schonmal hat...

Ich "lese" auf diese Art z.B. chinesische Datenblätter, denn mit 
Mandarin tue ich mich auch echt schwer (und es wird nur sehr langsam 
besser).

Und wenn's mit dem gesunden Menschverstand hapert->sowieso falsches 
Hobby gewählt. Die sollen dann Briefmarken sammeln, Buddelschiffe bauen 
oder irgendwas anderes machen. Bloß nicht Programieren und/oder Hardware 
benutzen. Das überfliegt dann einfach deren Horizont. Das sollten sie 
dann einfach einsehen.

Ich maße mir ja auch nicht an, z.B. Brücken konstruieren zu wollen. Ich 
weiss, dass ich das nicht annähernd kompetent leisten könnte, also lasse 
ich es einfach. Und wenn ich entscheiden würde, dass ich das unbedingt 
zu meinem Hobby machen wollte, dann würde ich halt LERNEN, bis ich 
alles dafür Nötige weiss.

So einfach ist das. Das einzige, was einen vom Lernen abhalten kann, ist 
Faulheit. Und faule Leute sollte man nicht unterstützen.

von Joachim B. (jar)


Lesenswert?

c-hater schrieb:
> Ich maße mir ja auch nicht an, z.B. Brücken konstruieren zu wollen. Ich
> weiss, dass ich das nicht annähernd kompetent leisten könnte

wieso nicht, die heutigen Brückenbauer können das ja auch nicht besser?

Früher haben Brücken 100 Jahre und mehr überlebt, heute nicht mal 30 
Jahre :)

von c-hater (Gast)


Lesenswert?

Joachim B. schrieb:

> Früher haben Brücken 100 Jahre und mehr überlebt

Sehr viel mehr.

Es gibt heute noch etliche voll funktionsfähige Brücken aus der 
Römerzeit, auch in Deutschland. Die sind also ca. 1600..2000 Jahre alt.

Klar: heutigen 40-Tonnern sind die natürlich nicht gewachsen, das 
konnten die Römer nicht vorhersehen. Aber das, wofür sie konstruiert 
wurden, können sie noch heute leisten. Und das ist eine 
Ingenieursleistung, vor der man nur absolute Hochachtung empfinden kann.

von Joachim B. (jar)


Lesenswert?

c-hater schrieb:
> Joachim B. schrieb:
>
>> Früher haben Brücken 100 Jahre und mehr überlebt
>
> Sehr viel mehr

ich dachte gerade an die Brooklyn Bridge
https://de.wikipedia.org/wiki/Brooklyn_Bridge

auch die bewältigt den heutigen Verkehr an den vor 100 Jahren keiner 
dachte, aber hast Recht aus der Römerzeit gibt es ältere Steinbrücken 
die noch stehen, aber das römische Reich ist auch untergegangen mit Brot 
& Spiele :)

von S. R. (svenska)


Lesenswert?

Thomas E. schrieb:
>> Den kennt mein Datenblatt nicht
>
> Mein Datenblatt, dein Datenblatt? Sowas kenne ich gar nicht. Ich benutze
> die Datenblätter, die ich mit ein paar Klicks auf der Website von
> Microchip finde. Die sind immer aktuell.

Du lädst also jedesmal eine neue PDF-Datei runter, um ein Register 
nachzuschlagen? Das ist wahrlich fleißig.

Ich hab nur einen Ordner mit Datenblättern, denn die allgemeine 
Erfahrung sagt, dass Informationen aus dem Netz auch mal verschwinden 
können. Wenn ich schnell was wissen will, dann schaue ich auch da zuerst 
rein, weil es griffbereit liegt.

von Zorg (Gast)


Lesenswert?

Max M. schrieb:
> Zorg schrieb:
>> Ich rege mich nicht auf
>
> ICH REGE MICH AUCH NICHT AUUF!!!!
>
> ;-)
>
> Ich wundere mich nur regelmäßig über Leute die erstmal einen Thread
> aufmachen statt einfach ins DB zu sehen.

Und ich wundere mich immer wieder über Leute, die anderen Blödheit 
vorwerfen, aber es selber nicht schaffen, die eigentliche Frage zu 
erfassen bzw. den Thread vollständig zu lesen.

Was dir noch immer entgangen ist (OK, vermutlich schaffst du es auch 
dieses mal wieder nicht, bis hier hin zu lesen): ich habe ins 
Datenblatt geschaut und ich habe die Namen verwendet, die dort drin 
beschrieben waren - nur dummerweise hatten die halt nicht viel mit den 
Definitionen in den zugehörigen Headern zu tun! Andere hier im Thread 
haben diesen Umstand übrigens auch schon bemerkt...

von Veit D. (devil-elec)


Lesenswert?

Thomas E. schrieb:
> Veit D. schrieb:
>> Im Datenblatt steht z.Bsp. der ISR Vektorname "USART_TXC". Und nützt
>> einem das was? Nein. Denn der heißt "USART0_TX_vect" bzw.
>> "USART1_TX_vect".
>
> Ja, eine Sauerei ist das. Aber welcher Idiot guckt in das Datenblatt des
> Atmega8, wenn er einen 644P programmieren will?

Häh was bitte? Du weißt worum es geht?

von Thomas E. (thomase)


Lesenswert?

S. R. schrieb:
> Das ist wahrlich fleißig.

Beeindruckt dich das? Wenn du meinst. Mich kostet das einen Klick aufs 
Lesezeichen.

von Oliver S. (oliverso)


Lesenswert?

Zorg schrieb:
>> Wo liest du das???
>
> 
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42744-ATmega644P_Datasheet.pdf
> Seite 80, Kapitel "Interrupt Vectors in ATmega644P"

Das ist ein Codebeispiel, keine Dateblatttabelle. Niemand hat da jemals 
zugesichert, daß die Beispiele für die avrlibc passen.

Seite 20,
1
About Code Examples
2
This documentation contains simple code examples that briefly show how to use various parts of the device. These code examples assume that the part specific header file is included before compilation. Be aware that not all C compiler vendors include bit definitions in the header files and interrupt handling in C is compiler dependent. Confirm with the C compiler documentation for more details.

Oliver

von Veit D. (devil-elec)


Lesenswert?

Hallo,

ist ja richtig, nur wenn ich das orignale Datenblatt verwende und die 
IDE vom gleichen Hersteller, in dem Fall Atmel Studio, dann sollten alle 
aufgeführten Namen identisch sein. Das stimmt ja auch alles überein, 
eben bis auf die Namen der Interrupt Vektoren. Im Grunde gibt das 
Datenblatt ja nur den Auszug der Headerfile Definitionen wieder. Bei den 
Registernamen und Bits ist das ja auch so. Nur bei den Interrupt 
Vektoren gibt es Abweichungen. Man könnte das Kapitel im Datenblatt 
demzufolge auch ganz weglassen und gleich auf das Headerfile verweisen. 
Oder man macht copy paste ins Datenblatt. Hat man das Namensschema 
einmal verstanden ist es ja kein Problem, soweit so gut. Nur schön ist 
es dennoch nicht. Es sorgt für Verwirrung was sich einfach vermeiden 
lassen könnte.

von Oliver S. (oliverso)


Lesenswert?

Veit D. schrieb:
> ist ja richtig, nur wenn ich das orignale Datenblatt verwende und die
> IDE vom gleichen Hersteller, in dem Fall Atmel Studio, dann sollten alle
> aufgeführten Namen identisch sein.

Tja. hätte, sollte, müsste...

DIe C-Beispiele in den Datenblätern sind auch nicht direkt passend für 
Atmel Studio (resp. avr-gcc), sondern für IAR. Ist halt so.

Oliver

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
Noch kein Account? Hier anmelden.