Werbung
So. Ich hab' mal einfach dazugeschrieben, was ich meine.
Konzept: Pfeif' auf alle Extras. Back to the roots.
der Timer tickt einfach in der Baudrate, (9600 /sec)
(ev. basteln mit preload)
Will man was senden, schreibt man das Zeichen hin, und setzt einen Flag
und den Status "start"
Durch den Flag wird die ISR lebendig und macht je nach Status was anderes
1 x Start Bit
8 x Datenbit
1 x Stop
1 x stopbit stehenlassen, clear flag
Ich kann es hier nicht probieren, vielleicht fehlt wo ein semikolon, ein bißchen Liebe braucht das halt.
Is klar, wie's gemeint ist ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Haltaus nein, _M_ ist eine Maske (privater standard)
#define TX_M_SEND 1 // oder 2 , 4, 8 etc.
Nix zu danken, erst wenn's funzt, gibt's du einen aus
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
@schamp: Ich schau mir das am Wochenende mit dem Oszi an, das sind ein paar Sachen seltsam.
Laß es inzwischen gut sein.
Ich rühr mich zuverlässig
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
hm ok !! thanks a lot !! osci hab ich leider keines daheim.
wollt morgen nochmal weiter probieren
Hi, schamp, Zwischenbericht:
Ich hab bei meiner RNBFRA (Mega32) elegant die Hw-Uart deaktiviert und versuche, den Pin TxD zu Fuß zu bedienen. (dort hängt ja der Max drauf).
Super Idee, geht aber nicht, weil ich auf dem Pin den Pegel nicht auf Low bekomme, ergo geht das Ganze mal nicht. Auf einem Anderen ist das kein Problem, aber da ist kein Max drauf. Zum Mäusemelken !
Vom Timing etc. schaut das gut aus, TImer Interrupt macht kein Problem.
Auch die RS232 Signale schauen ja nicht schlecht aus, d.h. der Weg stimmt, aber eben--> der Pegel.
Ich hab im Datasheet nix gefunden, warum das so sein könnte, hast du eine Idee ? Irgendwas funkt mir dazwischen.
*nerv*
Egal, von so einem Kistel laß' ich mich nicht verschaukeln, das ziehen wir durch.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Moin Moin !!
Und es läuft *juhuu*![]()
Bin das ganze Programm nochmals durchgegangen. 2 Zeilen geändert und dann isses gelaufen
beim case TX_C_START, das Startbit auf LOW
PORTD &=~(1<<PD4); // Set Start Bit (LOW)
und case TX_C_STOP, Stopbit auf HIGH
PORTD |=(1<<PD4); // Set Stopp Bit (High)
(siehe auch Atmel AppNote !)
Stells gleich online, kommentier es noch ein bissl ausführlicher
btw:
Jetzt könnt ma eigentlich eine eigene AppNote schreiben und diese veröffentlichen![]()
_C_ steht bei dir für CASE oder ?
nochwas: mit Hyperterminal funktionierts nicht... nehmt lieber Tera Term...
Moin ! Ich hab gehofft (befürchtet) daß daß ein Pseudoproblem ist ,d.h. nur bei mir, weil ich den TxD Pin verwende.
In der App-Note ist ein Durcheinander, was Hi und Lo betrifft. TTL ist ja active HIGH, RS232 Active LOW, also start und stop genau verkehrt.
Das hast du ja Gottseidank gesehen. Freu mich auf deine Doku.
Jetzt brauchen wir nurmehr das Empfangen gescheit einzubauen.
Hyperterm ist die Strafe des Herrn für schwere Sünden.
Richtig gesehn, ich hab die Konvention
_C_ Konstante Zahl (z.b. für select u. vergleiche/Parameter 0 - juchuu)
_V_ für Bit-Offset 0-32
_M_ Bit maske ( MUH_M_KUH = (1<< MUH_V_KUH)
u. alles, was mit #define definiert ist, schreib ich in Uppercase
Sind so Hilfen, damit ich auch in einem Jahr meine Programme noch lesen (nachvollziehen) kann.
Ich freu mich !
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Lesezeichen