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?
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..
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.
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 ;-)
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?
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?
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...
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.