Forum: Mikrocontroller und Digitale Elektronik Software UART gesucht (AVR, GCC)


von Paul H. (powl)


Lesenswert?

Hi!

Ich möchte gerne meinen ATtiny26 und ggf. auch einen ATtiny12 zu 
Debug-zwecken mit einem UART ausstatten.

Gibt es da schon was fertiges? Ein Timer wird wohl auf alle fälle 
gebraucht werden hm? Wichtig ist zunächst mal senden, empfangen kann 
später noch nachgerüstet werden.

Schön wäre es, wenn man das an jeden Pin legen könnte wie man möchte. 
Die Baudrate muss nicht hoch sein. Dient nur um kurze Zeichenketten mit 
ca. 10 Zeichen Länge zu übertragen.

lg PoWl

von Falk B. (falk)


Lesenswert?

Soft-UART ist das Stichwort.
Gibst von Atmel als Application Note.

von Paul H. (powl)


Lesenswert?

Habs gesehen. Allerdings gibt es da wohl nicht ganz das was ich möchte.

AVR304 Half Duplex Interrupt Driven Software UART
Basiert auf einem externen Interrupt und kann somit nur an einem 
bestimmten Pin genutzt werden

AVR305 Half Duplex Compact Software UART
Ist in ASM geschrieben und wartet mittels einer schleife auf den Empfang 
von Zeichen.

Ich hätte gerne dass mittels Timer auf den UART gewartet wird und wenn 
das Startbit somit erkannt wurde kann empfangen werden.

Wie gesagt, muss nicht schnell gehen. 2400-9600bps dachte ich mir. Kann 
es sein dass diese C-Softwareschnipsel schwierig in den eigenen code zu 
integrieren sind? Ich bin noch ein C-Anfänger und die kommen mir vor wie 
spanische Dörfer.

lg PoWl

von Oliver K. (ozel-)


Lesenswert?


von Oliver K. (ozel-)


Lesenswert?

Ich sehe gerade, dass das AVRlib Zip Archiv auf obiger Seite fehlt. Hier 
geht der Link noch:
http://hubbard.engr.scu.edu/embedded/avr/avrlib/

von Paul H. (powl)


Lesenswert?

Hm, ich finde diese ganzen Codes irgendwie recht unüberschaubar und 
undurchsichtig. Scheinbar nichts für Anfänger, kommen Fortgeschrittene 
damit besser zurecht?

Wollte nur ungern auf einen ATmega8 umsteigen. Sind zwar nur 35cent 
teurer aber auch größer und ich brauch die UART Kommunikation eignetlich 
nur einmal zum abstimmen.

Ausserdem bräuchte ich das desöfteren mal. Manchmal auch nur ein 
Sende-Port zum debuggen, wie auch hier.

Senden müsste doch eigentlich garnicht so schwer selbst zu machen sein, 
oder?

Bitte korrigieren wenn ich falsch liege:
9600 Baud bedeutet dass es 9600 Takte pro Sekunde gibt. Macht 104,16 µS 
zwischen den Takten.

Nehmen wir mal an ich probiere das mit dem internen RC-Oszillator @ 4Mhz 
(kann ja abgestimmt werden das Teil). Der Timer0 des Tiny12 kann ja 
leider nichts anderes als zählen und einen overflow Interrupt auslösen.

D.h. der TimerInterrupt würde 4000000/256 = 15625 mal in der Sekunde 
ausgeführt. Unpraktisch, da ja 9600mal ein Takt stattfinden muss und 
15625 nicht gerade ein vielfaches von diesem ist.

Wäre es also halbwegs sinnvoll (vielleicht bei noch höherer Baudrate um 
die Wartezeit zu verkürzen) das ganze einfach mit Zählschleifen zu 
realisieren?

Doch wie realisiert man so eine Zählschleife in C am besten und 
genausten? Ein Logicanalyzer zur Abstimmung wäre hilfreich :-/

Zum Test könnte man ja erstmal einen 4Mhz Quarz nehmen bevor man den 
ungenauen RC-Oszillator da ranlässt. Oder man stimmt ihn mittels 
Frequenzzähler ab.

lg PoWl

von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

Paul Hamacher wrote:

> Ich möchte gerne meinen ATtiny26 und ggf. auch einen ATtiny12 zu
> Debug-zwecken mit einem UART ausstatten.
>
> Gibt es da schon was fertiges? Ein Timer wird wohl auf alle fälle
> gebraucht werden hm? Wichtig ist zunächst mal senden, empfangen kann
> später noch nachgerüstet werden.


Siehe Anhang.

Ist allerdings für den ATtiny24.

Beim ATtiny26 mußt Du den Prescaler entsprechend einstellen, daß die 
Bitzeit kleiner 256 Takte ist, da der nur nen 8Bit-Timer hat.


Peter

von Christian (Gast)


Lesenswert?

@Peda:  Hast du das vielleicht auch noch als RX-Version?

von Peter D. (peda)


Lesenswert?

Christian wrote:
> @Peda:  Hast du das vielleicht auch noch als RX-Version?

http://www.mikrocontroller.net/attachment/32545/lcd1wire.zip


Peter

von Default U. (shyguy)


Lesenswert?

Für Debug-Ausgaben ist das hier ganz nett:
Beitrag "Kleines Programm für Debug Ausgaben"

Stefan


---

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.