mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie Baudrate einstellen


Autor: Bastelphilipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich programmier mit einem ATtiny25.
Jetzt habe ich doch noch einen Pin freischaufeln können und möchte dort 
eine nur einseitige RS232 Verbindung vom ATtiny zum PC mit 19200 Baud 
machen.
Ich will mit Hyperterminal mitlesen können was der Attiny so grade 
macht.

1. Wie kann ich in C Meßwerte über RS232 ausgeben?
2. Wie kann ich die Baudrate einstellen.
3. Ich habe keinen Quarz angeschlossen, ist die Taktrate überhaupt 
stabil genug so?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bastelphilipp schrieb:
> 1. Wie kann ich in C Meßwerte über RS232 ausgeben?

Tutorial, Datenblatt

> 2. Wie kann ich die Baudrate einstellen.

Tutorial, Datenblatt

> 3. Ich habe keinen Quarz angeschlossen, ist die Taktrate überhaupt
> stabil genug so?

Nur wenn du Glück hast und darauf baust, daß es so bleibt..

Autor: Steffen B. (flite)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitteschön:
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...

Hier sollten all deine Fragen beantwortet werden.
Mit Quarz wäre die Übertragung sicherer, aber fürs Debugging wird die 
interne Taktquelle schon ausreichen.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf all Deine Fragen findest Du hier im Forum reichlich antworten...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da der Tiny25 keine UART hat, sondern nur eine USI musst du dir hier 
selber helfen.

Entweder die USI so umpfriemeln, dass sie als UART funktioniert oder 
aber eine Software UART implementieren.

Da du wahrscheinlich den USI Pin sowieso nicht frei haben wirst, wird es 
wohl auf eine Software UART hinauslaufen. Code dafür findet sich in der 
Codesammlung.

Autor: Bastelphilipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte gehofft, das es
1. eine set_baudrate(unsigned long int);
2. eine putchar(unsigned char); Routine geben würde.

> Da du wahrscheinlich den USI Pin sowieso nicht frei haben wirst, wird es
> wohl auf eine Software UART hinauslaufen.
Welches ist der USI-Pin? Im Pinout des ATtiny auf Seite 2 steht nix von 
USI


> Code dafür findet sich in der Codesammlung.
Wo genau? Genausogut könntest du sagen: Info's über Mikrocontroller 
finden sich in jeder Stadtbibliothek  ;-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bastelphilipp schrieb:
> Ich hatte gehofft, das es
> 1. eine set_baudrate(unsigned long int);
> 2. eine putchar(unsigned char); Routine geben würde.

:-)
Ich hoffe auch viel.
Aber Hoffnungen sind manchmal trügerisch

>> Da du wahrscheinlich den USI Pin sowieso nicht frei haben wirst, wird es
>> wohl auf eine Software UART hinauslaufen.
> Welches ist der USI-Pin? Im Pinout des ATtiny auf Seite 2 steht nix von
> USI

Datenblatt, Abschnitt über USI

>> Code dafür findet sich in der Codesammlung.
> Wo genau? Genausogut könntest du sagen: Info's über Mikrocontroller
> finden sich in jeder Stadtbibliothek  ;-)

Und genauso wie jede Stadtbibliothek hat auch die Codesammlung eine 
Suchfunktion. Was hindert dich daran, dort "Software UART" einzugeben?

Autor: Bastelphilipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe früher mal diese Rotine in Assembler programmiert.
Dies ist sozusagen meine eigene Soft_UART-Routine
RS232_putchar:  
    clc                      ;Startbit
    PUSH  Loopcounter
    ldi    Loopcounter,10    ;Startbit + 8 bit + Stopbit
Send_loop:
    brcs  nicht_null_1      
    cbi     PORTB,RS232_Port
nicht_null_1:
    brcc  nicht_eins_1      
    sbi     PORTB,RS232_Port
nicht_eins_1:        
    PUSH  Loopcounter
    ldi    Loopcounter,18    ;18 für 115200 Baud
wait_loop:
    dec    Loopcounter      
    brne  wait_loop      
    POP    Loopcounter      
    sec              
    ror    ACC          
    dec    Loopcounter      
    brne  Send_loop      
    POP    Loopcounter
    ret
Ein Zeichen wird über RS232 mit 115200 Baud ausgeben.
Das zu übergebende Zeichen ist in der Variablen ACC
In der Routine ist eine Variable Loopcounter verwendet.
Wie könnte ich das in C mit dem Inlineassembler einbinden?

Autor: Bastelphilipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger schrieb:
> Und genauso wie jede Stadtbibliothek hat auch die Codesammlung eine
> Suchfunktion. Was hindert dich daran, dort "Software UART" einzugeben?

So, das habe ich getan und habe diese Software UART vom peter dannegger 
gefunden.

Diese scheint aber für irgendein ATmega-Modell zu sein, dies sollte 
eigentlich + die Info welcher Compiler, welche IDE, welche 
Optimierungs-Optionen eingeschaltet werden, etc. im Quelltext enthalten 
sein.

Bei mir(GCC + AVRstudio4) gibt's nur 1000 Fehlermeldungen...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bastelphilipp schrieb:
> Karl heinz Buchegger schrieb:
>> Und genauso wie jede Stadtbibliothek hat auch die Codesammlung eine
>> Suchfunktion. Was hindert dich daran, dort "Software UART" einzugeben?
>
> So, das habe ich getan und habe diese Software UART vom peter dannegger
> gefunden.
>
> Diese scheint aber für irgendein ATmega-Modell zu sein, dies sollte
> eigentlich + die Info welcher Compiler,

Compiler ist sicherlich der WinAvr, wenn auch eine etwas ältere Version. 
Das wird sich aber nicht um viel reißen

> welche IDE,

AVR-Studio (ziemlich sicher. >80% des Codes hier stammt aus dem Gespann 
AVR-Studio / WinAVR)

> welche
> Optimierungs-Optionen eingeschaltet werden

ist praktisch auch immer gleich: -Os

> Bei mir(GCC + AVRstudio4) gibt's nur 1000 Fehlermeldungen...

Dann fang mit der ersten an.

Was ist das Prinzip des Codes? Welche Hardware vom Mega braucht er? Hast 
du die Hardware oder etwas ähnliches (zb Timer) auf deinem Tiny? Wenn 
ja, wie ist die Konfiguration beim Mega, wie muss das am Tiny aussehen?

Ist alles Standard-Arbeit bei der Code Übernahme auf einen anderen 
Prozessor.

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.