mikrocontroller.net

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


Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soft-UART ist das Stichwort.
Gibst von Atmel als Application Note.

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver Keller (ozel-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guck mal in der AVRlib von Pascal Stang:
http://www.mil.ufl.edu/~chrisarnold/components/mic...

Autor: Oliver Keller (ozel-)
Datum:

Bewertung
0 lesenswert
nicht 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/

Autor: Paul H. (powl)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peda:  Hast du das vielleicht auch noch als RX-Version?

Autor: Peter Dannegger (peda)
Datum:

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

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


Peter

Autor: Default User (shyguy)
Datum:

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

Stefan


---

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.