AVR-Tutorial UART senden wird nicht angezeigt?

OP #1986618
Lesenswert?
• ▲
▼
Hallo,

ich bin gerad beim Kapitel Uart des AVR-Tutorials.

Leider habe ich ein Problem mit dem ersten Programm, das einen an den µX 
gesendeten Zahlenwert über LEDs ausgeben soll.

Ich habe 6 LEDs angeschlossen und zwar an PD0 bis PD5. OK PD0 kann 
nichts anzeigen, weil RTX (read) aktiviert ist aber auch sonst tut sich 
nicht viel.

Hier nochmal das proggi aus Tutorial:

.include "m8def.inc"

.def temp = R16

.equ F_CPU = 4000000                            ; Systemtakt in Hz
.equ BAUD  = 9600                               ; Baudrate

; Berechnungen
.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))     ; Reale Baudrate
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille

.if ((BAUD_ERROR>10) || (BAUD_ERROR<-10))       ; max. +/-10 Promille 
Fehler
  .error "Systematischer Fehler der Baudrate grösser 1 Prozent und damit 
zu hoch!"
.endif

    ; Stackpointer initialisieren

    ldi     temp, HIGH(RAMEND)
    out     SPH, temp
    ldi     temp, LOW(RAMEND)
    out     SPL, temp

    ; Port D = Ausgang

    ldi     temp, 0xFF
    out     DDRD, temp

    ; Baudrate einstellen

    ldi     temp, HIGH(UBRR_VAL)
    out     UBRRH, temp
    ldi     temp, LOW(UBRR_VAL)
    out     UBRRL, temp

    ; Frame-Format: 8 Bit

    ldi     temp, (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0)
    out     UCSRC, temp

    sbi     UCSRB, RXEN                     ; RX (Empfang) aktivieren

receive_loop:
   sbis     UCSRA, RXC                      ; warten bis ein Byte 
angekommen ist
   rjmp     receive_loop
   in       temp, UDR                       ; empfangenes Byte nach temp 
kopieren
   out      PORTD, temp                     ; und an Port D ausgeben.
   rjmp     receive_loop                    ; zurück zum Hauptprogramm



Ich nutze, weil ich gerad nichts anderes zur Verfügung habe, den 
internen Takt von 4MHz. Die Baudrate liegt bei 9600.

Ich nutze am PC Hterm sind die Einstellungen so korrekt oder muss dort 
noch etwas beachtet werden?

ich wollte "0110" also die Zahl 6 übertragen! Dann müssten doch die LEDs 
1 und 2 leuchten (LED0 bis LED5 werden verwendet).

Ich musss doch bei Hterm nur verbinden und auf Asend klicken etc.?
Angehängte Dateien:
#1986653
Lesenswert?
• ▲
▼
@  Olli R. (downunderthunder42)

>ich bin gerad beim Kapitel Uart des AVR-Tutorials.

Dann lern lesen und tu was man dir sagt.

>Ich nutze, weil ich gerad nichts anderes zur Verfügung habe, den
>internen Takt von 4MHz. Die Baudrate liegt bei 9600.

MÖÖÖP! Fehler!

http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART#UART_konfigurieren

http://www.mikrocontroller.net/articles/AVR_Checkliste#UART.2FUSART

Und NEIN, du musst KEINE Weiteren Fragen zu diesem Thema stellen. Halte 
dich STRIKT an die Hinweise und du wirst Erfolg haben.

MFG
Falk
#1986677
Lesenswert?
• ▲
▼
Olli R. schrieb:

> OK also wird es vermutlich daran liegen?

Kann sein, kann auch nicht sein.

Fang damit an, dass du den µC senden lässt.
Dann siehst du im HTerm ob und wenn ja was ankommt.

Wenn das klappt, weißt du, dass die Übertragungsstrecke steht und kannst 
auch in die andere Richtung arbeiten, bei der du dann nicht mehr so 
einfach kontrollieren kannst, was dort ankommt.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.