www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR-Tutorial UART senden wird nicht angezeigt?


Autor: Olli R. (downunderthunder42)
Datum:
Angehängte Dateien:

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

Autor: Falk Brunner (falk)
Datum:

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

http://www.mikrocontroller.net/articles/AVR_Checkl...

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

MFG
Falk

Autor: Olli R. (downunderthunder42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es war mir durchaus klar, dass da steht "es sollte dringend ein Quarz 
oder Quarzoszillator verwendet werden". Mir fehlt nur leider passende 
Kondensatoren!

OK also wird es vermutlich daran liegen?

Das ja auch kein Grund unhöflich zu werden!

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn jemand zum 10.001 mal eine Frage stellt, die vor ihm schon 
mindestens 9000 Ignoranten und Schlaumeier gestellt haben, dann ist das 
einfach Pech. Oder mangelnde Recherche. Oder Legasthenie. Oder whatever.

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

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

Autor: Olli R. (downunderthunder42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Senden des µC habe ich natürlich vorher gemacht.
Und das hat geklappt! Deswegen war ich so verwundert.

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.