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
Soft-UART ist das Stichwort. Gibst von Atmel als Application Note.
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
Guck mal in der AVRlib von Pascal Stang: http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib/
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/
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
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
Christian wrote: > @Peda: Hast du das vielleicht auch noch als RX-Version? http://www.mikrocontroller.net/attachment/32545/lcd1wire.zip 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.