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?
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.
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...
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
\...
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.
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.
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.
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.
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?
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.
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.
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.
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.
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.
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).
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!
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.
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 :)
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.
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 :)
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.
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...
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?
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.
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.
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