www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik programm zu decodieren von rs232,bitte angucken


Autor: Torsten A. (xman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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

Bewertung
0 lesenswert
nicht lesenswert
<Einschub>
Von der Codesammlung hierher verschoben und nach oben gebracht
</Einschub>

Autor: Joerg X. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: xman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

...

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.