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


von Daniel L. (grorkef)


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.

von Ahem (Gast)


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

von Hendrik (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.