Forum: Compiler & IDEs Fehler in iom16a.h?


von Markus (Gast)


Lesenswert?

In der avr-libc 1.6.8 gibt es eine Header Datei für den ATmega16A. Darin 
wurden anscheinend einige Verbesserungen vorgenommen und Altlasten über 
Bord geworfen.

Allerdings scheinen sich auch Fehler eingeschlichen zu haben. Zum 
Beispiel fehlen bei einigen IRQ Vektoren Unterstriche im Namen, zum 
Beispiel USARTRXC_vect statt USART_RXC_vect

Außerdem sind einzelne Bits im UDR definiert, UDR0, UDR1 usw. Aber da 
für andere Controller UDR0 für das gesamte Register definiert ist gibt 
es da Probleme. Man sollte auf die Bit Definitionen ganz verzichten oder 
die Bezeichnung zumindest in UDR_0 ändern.

Überhaupt gibt es zum Beispiel für manche Interrupt Vectoren vier 
unterschiedliche Varianten. Eine würde reichen, zwei wären noch 
nachvollziehbar. Aber vier?

USART0_RX_vect
USART_RX_vect
USARTRXC_vect
USART_RXC_vect

von ... (Gast)


Lesenswert?

Markus schrieb:
> USARTRXC_vect statt USART_RXC_vect
Ist in der avr-libc 1.7.1 immer noch so. Da hat wohl der Codegenerator 
versagt. Sieht so aus, als wärst Du der erste der drüber stolpert, hab 
jedenfalls nicht derartiges in der Buglist gefunden. Also am besten hier 
als Bug melden:
http://www.nongnu.org/avr-libc/
bzw. genauer hier:
https://savannah.nongnu.org/bugs/?group=avr-libc

von Markus B. (markus_b77)


Lesenswert?

So, mal angemeldet


Ok, erledigt. Ich hoffe, ich hab es richtig gemacht. Ich kenne mich auf 
der Plattform nämlich nicht aus und ich mag sie auch nicht sonderlich. 
Außerdem ist mein englisch für sowas etwas holprig. Hoffe, die 
verstehen, was ich meine.

Warum wurden in der Header Datei eigentlich für alle einzelnen Bits 
jetzt Namen vergeben? Die einzelnen Bits in UDR wird man wohl nur 
äußerst selten verwenden.

von ... (Gast)


Lesenswert?

Markus B. schrieb:
> Warum wurden in der Header Datei eigentlich für alle einzelnen Bits
> jetzt Namen vergeben? Die einzelnen Bits in UDR wird man wohl nur
> äußerst selten verwenden.

Vermutlich, weil das so in den XML-Files von Atmel drin steht (z.B. 
ATmega16A.xml):
1
      <UDR>
2
        <IO_ADDR>0x0C</IO_ADDR>
3
        <MEM_ADDR>0x2C</MEM_ADDR>
4
        <UDR0_MASK>0x01</UDR0_MASK>
5
        <UDR1_MASK>0x02</UDR1_MASK>
6
        <UDR2_MASK>0x04</UDR2_MASK>
7
        <UDR3_MASK>0x08</UDR3_MASK>
8
        <UDR4_MASK>0x10</UDR4_MASK>
9
        <UDR5_MASK>0x20</UDR5_MASK>
10
        <UDR6_MASK>0x40</UDR6_MASK>
11
        <UDR7_MASK>0x80</UDR7_MASK>
12
      </UDR>
Die Headerfiles werden wohl mehr oder weniger automatisch aus den XMLs 
generiert. Da Atmel sich aber öfter mal neue Schreibweisen einfallen 
läßt, gibts da halt gelegentllich Problem. Genaueres kann Dir sicher 
Jörg Wunsch sagen, wenn er mal hier vorbei kommt.

CU

PS: Da Du es vergessen hast, hier noch der Link zum Bugreport:
http://savannah.nongnu.org/bugs/?33799

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.