Forum: Mikrocontroller und Digitale Elektronik Probleme mit avr board u. Terminalprogramm


von Dirk J. (jaxx)


Lesenswert?

Hallo zusamnen

Ich habe hier ein Programm mit dem man über ein Terminalprogramm eine 
LED mit "e" einschaltet und mit "a" ausschlten kann.
Mein Problem ist das es nicht mit dem Terminalprogramm geht. Was muss 
man vllt ändern im Programm selbst oder vllt auch im Term-Programm.

Verwendete Hardware:
- myAVR Board Light USB
- Terminalprogramm: TeraTermPro

hier das Programm:

rjmp main ;1 POWER ON RESET
reti ;2 Int0-Interrupt
reti ;3 Int1-Interrupt
reti ;4 TC2 Compare Match
reti ;5 TC2 Overflow
reti ;6 TC1 Capture
reti ;7 TC1 Compare Match A
reti ;8 TC1 Compare Match B
reti ;9 TC1 Overflow
reti ;10 TC0 Overflow
reti ;11 SPI, STC Serial Transfer Complete
reti ;12 UART Rx Complete
reti ;13 UART Data Register Empty
reti ;14 UART Tx Complete
reti ;15 ADC Conversion Complete
reti ;16 EEPROM Ready
reti ;17 Analog Comparator
reti ;18 TWI (I²C) Serial Interface
reti ;19 Store Program Memory Ready
;----------------------------------------------------------------------- 
-
;Start, Power ON, Reset
main: ldi r16,hi8(RAMEND)
out SPH,r16
ldi r16,lo8(RAMEND)
out SPL,r16

sbi UCSRB,3
sbi UCSRB,4
ldi r16,23 ;Baudrate 3686400/(9600*16) -1
out UBRRL,r16
sbi DDRD,0
;----------------------------------------------------------------------- 
-
mainloop:
rcall getChar ;getChar aufrufen
rcall putChar ;putChar aufrufen




cpi r16,'e' ;Vergleiche r16 mit e
breq LEDan ;wenn gleich LEDan aufrufen



cpi r16,'a' ;Vergleiche r16 mit a
breq LEDaus ;wenn gleich LEDaus aufrufen



rjmp mainloop ;springe zu mainloop
;----------------------------------------------------------------------- 
-

putChar:
sbis UCSRA,5 ;überspringt den nechsten Befehl wenn UDRE leer (1) ist
rjmp putChar
out UDR,r16 ;Inhalt von r16 in UDR schreiben
ret ;zum Programm zurückkehren

getChar:
sbis UCSRA,7 ;überspringt den nechsten Befehl wenn ungelesen Daten im
;Empfangsregister liegen (RXC=1)
rjmp getChar
in r16,UDR ;Inhalt von UDR ins r16 kopieren
ret ;zum Programm zurückkehren

LEDan:
ldi r16,0b00000100
out PORTD,r16
ret

LEDaus:
ldi r16,0b00000000
out PORTD,r16
ret


Wäre schön wenn ihr mir dort weiterhelfen kann!
mfg

: Verschoben durch Admin
von meckermensch (Gast)


Lesenswert?

>sbi DDRD,0
>ldi r16,0b00000100
Passt nicht zusammen.

>sbi UCSRB,4
ldi, Konstanten und binäres ODER nutzen!

von Dirk J. (jaxx)


Lesenswert?

Also ich weiß das das Probgramm bei anderen Leuten funktioniert. Die 
haben allerdings das Serielle Board oder das MK2 mit der steckbaren 
USB-Karte.

Liegt das wirklich an den Befehlen die du geschrieben hast?

von meckermensch (Gast)


Lesenswert?

Du kannst kein Wort Assembler, richtig? Wenn du die Sprache gerade 
lernst, an dem Programm ist einiges zu verbessern.

Kommen die eingegebenen Zeichen zurück?

Ich meine Vermutung von oben stimmt würde eine kurze Simulation klären, 
aber ich hab gerade was anderes zu tun.

von meckermensch (Gast)


Lesenswert?

Sorry:
> Ich meine Vermutung von oben stimmt
Ob meine Vermutung...

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.