UART Tutorial Led an und aus schalten? Nun bin ich Ratlos

OP #1218659
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.
1
.include "m8def.inc"
2

3
.def temp = r16
4
.def zeichen = r17
5

6
.equ F_CPU = 4000000
7
.equ BAUD = 9600
8

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

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

17
  ; Steckpointer 
18
  ldi  temp, LOW(RAMEND)
19
  out  SPL, temp
20
  ldi  temp, HIGH(RAMEND)
21
  out SPH, temp
22

23
  ; PORT D = Ausgang
24
  ldi temp, 0xFF
25
  out DDRD, temp
26

27
  ; Baudrate
28
  ldi temp, HIGH(UBRR_VAL)
29
  out UBRRH, temp
30
  ldi temp, LOW(UBRR_VAL)
31
  out UBRRL, temp
32

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

37
  sbi UCSRB, RXEN
38
  
39
loop:
40
  sbis UCSRA, RXC
41
  rjmp loop
42
  in temp, UDR
43
  out PORTD, temp
44
  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.
Gast #1218681
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?
1
  in temp, UDR
2
  out PORTD, temp
Gast #1218682
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.