folgendes programm habe ich zusammengebastelt, um einen rs232 befehl zu decodieren. baudrate 1200, 8datenbits und 1 stoppbit werden gesendet.irgendwie passiert da nichts?? ein bit ist 833µs lang. habe den timer so eingestellt, dass fast nach der hälfte der bitlänge also 416µs ein overflow erzeugt wird.in der timer isr überprüfe ich nun ob zu diesen zeitpunkten ein low oder highpegel anliegt,speichere dieses bit ab bis ich 8 bits zusammenhabe.das externe interrupt benutze ich nur dazu, um das startbit zu erkennen (fallende flanke) danach schalte ich die interruptfunktion aus, wenn die 8 bits zusammen sind dann wieder ein. seht ihr im code bzw im gedankengang einen fehler?? Config Pinb.2 = Input Config Timer0 = Timer , Prescale = 64 On Timer0 Tim0_isr Config Int0 = Falling On Int0 Getcode Startwert = 204 Timer0 = Startwert Enable Int0 Enable Timer0 Enable Interrupts Bit_nummer = 0 Do Lcd Zeichen Wait 1 Cls Loop Enable Int0 End Tim0_isr: If Pinb.2 = 0 Then Daten = 0 Else Daten = 1 Bit_nummer = 0 Select Case Daten Case 0: Shift Temp_daten , Left Incr bit_nummer Case 1: Shift Temp_daten , Left Incr Temp_daten Incr Bit_nummer End Select If Bit_nummer = 8 Then Zeichen = Temp_daten End If Return Getcode: Start Timer0 Disable Int0 Return
<Einschub> Von der Codesammlung hierher verschoben und nach oben gebracht </Einschub>
@OP: gibt's Gründe warum du.. - den µC nicht angibst? (BASIC ?! gibt's für mehrere Typen...) - du nicht die im Kompiler eingebauten Funktionen nimmst ? (IIRC. hat BASCOM Soft-UART-Routinen eingebaut, die Frage wäre nicht nötig wenn du den Compiler angegeben hättest) - du keine UART-Hardware nimmst? (würde sich erübrigen, wenn du den µC angegeben hättest) sry für die vielen Fragen, ich tu's nicht wieder ... Jörg
jungs ich weiss doch, dass es fertige befehle gibt, ich würd mir doch nicht die ganze mühe machen. ich benutze den atmega32,und den 8mhz quarz. ich weiss nicht, ob man in der timer isr soviele befehle hintereinander ausführen lassen kann.
xman wrote: > jungs ich weiss doch, dass es fertige befehle gibt, ich würd mir doch > nicht die ganze mühe machen. ich benutze den atmega32,und den 8mhz > quarz. > ich weiss nicht, ob man in der timer isr soviele befehle hintereinander > ausführen lassen kann. Dann nimm doch Befehle, von denen Du genau weißt, wie lange sie dauern und rechne mit, was Du der ISR für Arbeit aufbrummst. Im Datenblatt des jeweiligen AVRs steht jeweils eine Liste mit allen Befehlen, die der jeweilige AVR versteht, und deren Ausführungsdauer in Takten. ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.