AVR und UART/USART

Gast #5582360
Lesenswert?
• ▲
▼
Hallo zusammen,

ich wollte zum ersten mal eine USART Kommunikation mit einem ATmega und 
einem BLE-Modul mit Atmel Studio realisieren. Mir ist aufgefallen, dass 
die Register wie z.B. UBRRH oder RXEN vom Editor nicht erkannt werden. 
Ich habe nachgeschaut und eine Library von Peter Fleury gefunden.

Ist das eine Standardlibrary vom ihm, welches man immer einsetzen darf 
oder gibt es da noch einen anderen Weg?

MfG
Gast #5582369
Lesenswert?
• ▲
▼
Welcher Editor?

Meinst Du vielleicht eine IDE? Welche?

Aber selbst wenn, ist eine andere Library keine Lösung dafür das die IDE 
die Peripherie-Registerdefinitionen nicht kennt. Eine Library gibt ja 
keine Informationen für den Editor/IDE über Registerdefinitionen.

Das Problem muss gelöst werden, nicht die Symptome beseitigt.
Gast #5582374
Lesenswert?
• ▲
▼
Theor schrieb:
> ist eine andere Library keine Lösung dafür das die IDE
> die Peripherie-Registerdefinitionen nicht kennt.

Das ist ja das Problem. Ich benutze Atmel Studio 7. Die Register für die 
AD-Wandlung hat er gefunden. Aber nachdem ich die USART Kommunikation 
implementieren wollte, habe ich gemerkt, dass die zuständigen Register 
für UART und USART von der IDE nicht erkannt werden.

Theor schrieb:
> Das Problem muss gelöst werden, nicht die Symptome beseitigt.

Das denke ich auch...
Gast #5582380
Lesenswert?
• ▲
▼
@VR schrieb:

> ich wollte zum ersten mal eine USART Kommunikation mit einem ATmega und
> einem BLE-Modul mit Atmel Studio realisieren. Mir ist aufgefallen, dass
> die Register wie z.B. UBRRH oder RXEN vom Editor nicht erkannt werden.

Erstens: RXEN ist kein Register, sondern bestenfalls ein Bit in einem 
Register.

Zweitens: der Editor kann Register genauso wie Registerbits nur dann 
"erkennen" wenn die Datei included wird, die ihm diese Sachen vertellt. 
Woher soll er es denn sonst wissen? Darüber solltest du mal nachdenken!

Drittens: es gibt Zieldevices, die garnicht über eine USART verfügen und 
es gibt Zieldevices, die über mehrere verfügen...
Gast #5582387
Lesenswert?
• ▲
▼
@VR schrieb:
> Theor schrieb:
>> ist eine andere Library keine Lösung dafür das die IDE
>> die Peripherie-Registerdefinitionen nicht kennt.
>
> Das ist ja das Problem.
Was meinst Du damit? Das eine Library, der IDE die Register-Definitionen 
bekannt machen sollten, es aber nicht tun? Wie kommst Du darauf? Eine 
Library ist einfach nur Code, der noch nicht reloziert wurde. Da stecken 
keine Register-Definitionen drin.

> Ich benutze Atmel Studio 7. Die Register für die
> AD-Wandlung hat er gefunden. Aber nachdem ich die USART Kommunikation
> implementieren wollte, habe ich gemerkt, dass die zuständigen Register
> für UART und USART von der IDE nicht erkannt werden.
>
> Theor schrieb:
>> Das Problem muss gelöst werden, nicht die Symptome beseitigt.
>
> Das denke ich auch...

Das deutet eher darauf hin, dass Du im Studio nicht den korrekten Typ 
des ATMega gewählt hast. Überprüf das mal.
Gast #5582388
Lesenswert?
• ▲
▼
c-hater schrieb:
> Erstens: RXEN ist kein Register, sondern bestenfalls ein Bit in einem
> Register.

Sorry, da hast du recht.

c-hater schrieb:
> Drittens: es gibt Zieldevices, die garnicht über eine USART verfügen und
> es gibt Zieldevices, die über mehrere verfügen...

Mein ATmega32u4 verfügt über USART.

c-hater schrieb:
> Zweitens: der Editor kann Register genauso wie Registerbits nur dann
> "erkennen" wenn die Datei included wird, die ihm diese Sachen vertellt.
> Woher soll er es denn sonst wissen? Darüber solltest du mal nachdenken!

Das ist mir schon klar. Nur welche Headerfile soll das sein? Bei der 
Recherche bin ich halt auf die "uart.h" von Peter Fleury gestoßen.
Gast #5582398
Lesenswert?
• ▲
▼
Das header file wird nur vom Compiler beachtet. Der IDE ist das völlig 
schnurz.

Ich kenne die tatsächliche Strukrut von Studio 7 nicht. Aber bis Studio 
4, gab es ein Verzeichnis mit XML-Dateien, in denen die 
Registerstrukturen drin stehen. Welche XML-Datei die IDE tatsächlich 
berücksichtigt hängt davon ab, was in den Projekteinstellungen der IDE 
steht. Nicht davon, welche include Dateien Du einfügst.

Also: Wähle die richtige CPU in den Projekteinstellungen aus.
Gast #5582407
Lesenswert?
• ▲
▼
Theor schrieb:
> Aber bis Studio
> 4, gab es ein Verzeichnis mit XML-Dateien, in denen die
> Registerstrukturen drin stehen.

Das ist im Grunde immer noch so!
Mit den Abweichungen:
1. Andere Dateiendung, nicht mehr *.xml, ist aber noch XML drin
2. Es sind ein paar dazugekommen
3. Die Daten für den Simulator sind nicht mehr drin
Gast #5582430
Lesenswert?
• ▲
▼
Stefan E. schrieb:
> @VR schrieb:
>> Mein ATmega32u4 verfügt über USART.
>
> Und das Register heißt dort nicht UBRRH, sondern UBRR1H.
> Und das Bit nicht RXEN, sondern RXEN1.

Ok. Daran lag es. Jetzt klappt es. Aber im C Beispiel auf Seite 194 des 
Controller Datenblattes steht das nicht.

Danke :)

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