mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Tutorial Led an und aus schalten? Nun bin ich Ratlos


Autor: Daniel L. (grorkef)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bins mal wieder :)

Ich hab heute Abend bisschen mit den Tutorials weiter gemacht und auf 
Breadboard die Schaltung aus dem UART Tutorial aufgebaut. Den ersten 
Teil mit dem Empfangen von "Test" ging ja super aber der 2te Teil bei 
dem ich man an PORT D eine LED aus und an schalten kann komm ich einfach 
nicht mehr weiter.
.include "m8def.inc"

.def temp = r16
.def zeichen = r17

.equ F_CPU = 4000000
.equ BAUD = 9600

.equ UBRR_VAL = ((F_CPU+BAUD*8)/(BAUD*16)-1)
.equ BAUD_REAL = (F_CPU/(16*(UBRR_VAL+1)))
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)

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

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

  ; PORT D = Ausgang
  ldi temp, 0xFF
  out DDRD, temp

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

  ; Frame-Format 8-Bit
  ldi temp, (1<<URSEL)|(3<<UCSZ0)
  out UCSRC, temp

  sbi UCSRB, RXEN
  
loop:
  sbis UCSRA, RXC
  rjmp loop
  in temp, UDR
  out PORTD, temp
  rjmp loop

Ich denke der Code an sich stimmt... aber ich hab keine Ahnung wie ich 
mit Hyperterminal an den ATmega8 senden kann? und was ich überhaupt 
senden muss damit sich da was tut :(

Ich hab die LED an PD2 mit 10k Widerstand gegen 5V geschaltet die 
leuchtet nun auch schön nur aus bekomm ich sie nicht :(

Ich hoffe ihr könnt mir da bisschen weiter helfen.

MFG Daniel L.

Autor: Ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jedes ASCII-Zeichen bei dem das Bit 2, also das mit der Wertigkeit 4 
gesetzt ist sollte die LED löschen. Umgekehrt sollte jedes ASCII-Zeichen 
bei dem dieses Bit 0 ist, also gelöscht, die LED zum leuchten bringen.

Ich sehe gerade nicht aus welchem Tutorial Du das hast. Kannst Du da mal 
einen Link angeben?

Ist Dir klar, was das hier macht?
  in temp, UDR
  out PORTD, temp

Autor: Hendrik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Habe dein Programm gerade mal erfolgreich auf dem STK500 laufen lassen. 
Eventuell stimmt irgendetwas mit deiner Schaltung nicht. Oder Du hast 
die Parameter für die serielle Schnittstelle am Rechner falsch gesetzt.

Das Programm macht nichts anderes, als das über die serielle 
Schnittstelle empfangene Byte auf Port D auszugeben. Dabei sind PD0 und 
PD1 natürlich schon vom UART belegt. Egal an welchem Pin dort deine LED 
hängt: Mit dem Senden von 0 oder 255 sollte sich ihr Zustand ändern.

Falls Du eine gute Terminalsoftware suchst, dann schau mal nach HTerm:
http://www.der-hammer.info/terminal/


Grüße, Hendrik

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.