Forum: Compiler & IDEs Verwendung von UART und stdio.h auf einem AVR


von Paul H. (powl)


Lesenswert?

Hi!

Ich würde gerne ein paar Debugfunktionen in mein Programm integrieren, 
eventuell auch eine Möglichkeit, es über UART etwas zu steuern.

In meinem schlauen aber mittlerweile auch nicht mehr so brandaktuellen 
AVR Buch steht drin, dass man für Terminalfunktionen die stdio.h 
verwenden könne. Leider ist das darin auch recht schwammig thematisiert 
und im Internet finde ich nix gescheites darüber.

Kann jemand mal kurz erklären ob mir stdio.h Funktionen bereitstellt mit 
denen ich so ohne größere Hürden ganz einfach Sachen auf dem UART 
ausgeben kann?

lg PoWl

von Oliver (Gast)


Lesenswert?

Immer aktuell und hilfreich ist die mitgelieferte Dokumentation. Die 
findet sich auf deiner Festplatte, aber auch online hier:

http://www.nongnu.org/avr-libc/

Im Kapitel zu stdio.h
http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html

gibt es ein Beispiel zur Verwendung von printf.
Wenn du nur Texte ausgeben willst, reicht auch uart_putchar aus dem 
Beispiel.

Oliver

von Paul H. (powl)


Lesenswert?

sry, gerade das verstehe ich nicht. Ich sehe da keine Funktion wie 
uartinit(). Muss ich die selbst schreiben? Dann kann ich auch gleich 
alles selbst entwickeln ;-)

von Εrnst B. (ernst)


Lesenswert?

Du musst nur eine Methode bereitstellen, um ein einzelnes Zeichen 
rauszusenden. Die ist im einfachsten Fall ein Zweizeiler, den du direkt 
aus der Dokumentation rauskopieren kannst.

Wenn du mehr/andere Features brauchst, halt entsprechend 
umfangreicher... Bsp: einen Stream der über Ethernet/TCP ausgibt, 
Bufferung des UARTS, senden über IRQ usw.

von Oliver (Gast)


Lesenswert?

>Muss ich die selbst schreiben?

Nee. Du musst nur google intelligent anwenden, es gibt tonnenweise Code 
dazu im Netz (auch hier in der Codesammlung).

Aber was solls, hier z.B.
Beitrag "Fernbedien RC5 Empfänger"
ist eine minimal-uart-Augabe drin.

Zusammenbasteln musst du dir das aber schon selber.

Ausserdem: AVR-Programmieren, ohne das Datenblatt zu lesen, geht nicht. 
Auch wenn das alles auf English ist, würg dich da durch. Da gibt es auch 
Code-Schnipsel.

Oliver

von Peter D. (peda)


Lesenswert?

Paul Hamacher wrote:
> sry, gerade das verstehe ich nicht. Ich sehe da keine Funktion wie
> uartinit(). Muss ich die selbst schreiben? Dann kann ich auch gleich
> alles selbst entwickeln ;-)

Ja, beim AVR muß man das selber machen. Der Grund sind die vielen 
verschiedenen Implementierungen (4 verschiedene Namen für den 
Empfangsinterrupt usw.).
Außerdem will der eine die UART mit Polling, der andere über Interrupts, 
der eine mit FIFO, der andere mit Linearpuffer, der nächste invertiert 
usw. usw.


Ich habe hier mal versucht die AVRs mit HW-UART zu erschlagen (als 
Interrupt mit FIFO):

Beitrag "AVR-GCC: UART mit FIFO"



Peter

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.