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: > USART_RXC Zorg schrieb: > USART1_RXC Zorg schrieb: > Laut Datenblatt Wo liest du das??? Zorg schrieb: > appears to be a misspelled
:
Bearbeitet durch User
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.
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...
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.
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 \...
Übrigens: du hättest als Quelle in dem verlinkten Datenblatt auf Seite 78, die Tabelle 13-1 nehmen können. :-)
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"!
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.
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.
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?
S. R. schrieb: > Das ist wahrlich fleißig. Beeindruckt dich das? Wenn du meinst. Mich kostet das einen Klick aufs Lesezeichen.
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
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
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.