mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hiiiiiilfe - versuche mit Taste einen RS232-Befehl zu senden


Autor: Markus Reichert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich versuche verzweifelt mit Hilfe meines STK500 und einem Tiny2313 per
Tastendruck einen USART-Befehl zu versenden.

Aber das Ding macht einfach nicht, was ich will!!! ;-) Ich bin kurz
davor aufzugeben. :-(

Was ist an meinem Code falsch? Ich bin gerade erst dabei, das Programm
zu entwickeln und es steckt absolut noch in den Kinderschuhen. Aber
schon jetzt macht es mir große Probleme.

Ich hoffe jemand kann mir den Fehler sagen. Ich wäre soooooooo dankbar.
:-)

Im Voraus vielen Dank.

Gruß
Markus



  .include "tn2313def.inc"      ;Definitionsdatei laden


  .def  akku = r16
  .def  switch = r17

  .cseg
  rjmp start
  .org  0x16

start:

    ldi akku, LOW(RAMEND)      ; LOW-Byte der obersten RAM-Adresse
        out SPL, akku

    rcall USART_Init

    ldi    akku, 0x81
    rcall  USART_Transmit

    ldi    akku, 0x01
    rcall  USART_Transmit

    ldi    akku, 0x04
    rcall  USART_Transmit

    ldi    akku, 0x3F
    rcall  USART_Transmit

    ldi    akku, 0xFF
    out    PORTB, akku

main:
    in    switch, PINB
    cpi    switch, 0b11111111
    brne  LEFT

;Alternative:   sbis   PORTB,0
;               rcall  LEFT

    rjmp main


USART_Init:
    ;set baud rate

    ldi r17,0
    ldi r16, 23

    out UBRRH, r17
    out UBRRL, r16

    ;Enable receiver and transmitter

    ldi r16, (0<<RXCIE) | (0<<RXEN) | (1<<TXEN)
    out UCSRB,r16

    ;set frame format: 8data, 1stop bit

    ldi r16, (0<<USBS) | (3<<UCSZ0)
    out UCSRC,r16

    ret


USART_Transmit:

    sbis  UCSRA, UDRE
    rjmp  USART_Transmit
    out    UDR,akku

    ret


LEFT:

    ldi    akku, 0x81
    rcall  USART_Transmit

    ldi    akku, 0x01
    rcall  USART_Transmit

    ldi    akku, 0x04
    rcall  USART_Transmit

    ret

.EXIT

Autor: Hartmut Gröger (hardygroeger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Es wäre hilfreich wenn du noch ein paar Rahmendedingungen preisgeben
würdest:

Taktfrequenz
Baudrate
Empfängerprogramm
usw.

MfG HG

Autor: Markus Reichert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übertragungsrate: 9600 Baud
Quarz: 3,6864 Mhz

Senden geht prinzipiell, nur wenn ich den Befehl per Tastendruck senden
möchte, dann gibt es Probleme.

Eine Senderoutine in der Hauptschleife funktioniert wunderbar.

Wäre super, wenn mir jemand nen Tip geben könnte, woran mein Programm
scheitert.

Liegt es an irgendwelchen Interrupts? Oder ist einfach mein Programm
fehlerhaft?

Danke für jede weitere Hilfe.

Autor: Mika (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch doch mal die Taste zu entprellen. Du wartest auch nicht ob die
Übertragung fertig ist. ( Da gibts ein Flag das du abfragen kannst. )

Wenn jetzt die Taste prellt sendest du zu schnell hintereinander.

Autor: Markus Reichert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Tip.

Aber es lag am STK500.

Ich habe die Ports getestet (vgl. Thread
http://www.mikrocontroller.net/forum/read-1-365001...) und
habe festgestellt, dass die irgendwie nicht richtig funktioniert haben.


Ich habe etwas hin und her probiert und irgendwann gings dann
plötzlich. Ich habe keine Ahnung, woran es gelegen hat. :-(

Trotzdem Danke für die Hilfe.

Gruß
Markus

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.