ATMega644p USART-Interruptvector?

Gast #5586317
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?
Gast #5586335
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.
Gast #5586349
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.
#5586356
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 
\...
Angehängte Dateien:
#5586365
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"!
Angehängte Dateien:
#5586398
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.
Gast #5586886
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.
Gast #5586950
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).
Gast #5586981
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.
Gast #5586999
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.
#5587030
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 :)
#5587085
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.
Gast #5587105
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...
#5587274
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
#5590159
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.
#5590180
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren