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

OP #1218659
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.
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
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?
1
  in temp, UDR
2
  out PORTD, temp
Gast #1218682
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren