Wie Baudrate einstellen

Gast #1964542
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?
#1964581
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.
Gast #1964644
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  ;-)
#1964694
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?
Gast #1964762
Lesenswert?

Hallo,
ich habe früher mal diese Rotine in Assembler programmiert.
Dies ist sozusagen meine eigene Soft_UART-Routine
1
RS232_putchar:  
2
    clc                      ;Startbit
3
    PUSH  Loopcounter
4
    ldi    Loopcounter,10    ;Startbit + 8 bit + Stopbit
5
Send_loop:
6
    brcs  nicht_null_1      
7
    cbi     PORTB,RS232_Port
8
nicht_null_1:
9
    brcc  nicht_eins_1      
10
    sbi     PORTB,RS232_Port
11
nicht_eins_1:        
12
    PUSH  Loopcounter
13
    ldi    Loopcounter,18    ;18 für 115200 Baud
14
wait_loop:
15
    dec    Loopcounter      
16
    brne  wait_loop      
17
    POP    Loopcounter      
18
    sec              
19
    ror    ACC          
20
    dec    Loopcounter      
21
    brne  Send_loop      
22
    POP    Loopcounter
23
    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?
Gast #1964843
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...
#1964854
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren