Hallo zusammen,
ich versuche verzweifelt mit Hilfe meines STK500 und einem Tiny2313 per
Tastendruck einen USART-Befehl zu versenden.
Aber das Ding macht einfach nicht, was ich will!!! ;-) Ich bin kurz
davor aufzugeben. :-(
Was ist an meinem Code falsch? Ich bin gerade erst dabei, das Programm
zu entwickeln und es steckt absolut noch in den Kinderschuhen. Aber
schon jetzt macht es mir große Probleme.
Ich hoffe jemand kann mir den Fehler sagen. Ich wäre soooooooo dankbar.
:-)
Im Voraus vielen Dank.
Gruß
Markus
.include "tn2313def.inc" ;Definitionsdatei laden
.def akku = r16
.def switch = r17
.cseg
rjmp start
.org 0x16
start:
ldi akku, LOW(RAMEND) ; LOW-Byte der obersten RAM-Adresse
out SPL, akku
rcall USART_Init
ldi akku, 0x81
rcall USART_Transmit
ldi akku, 0x01
rcall USART_Transmit
ldi akku, 0x04
rcall USART_Transmit
ldi akku, 0x3F
rcall USART_Transmit
ldi akku, 0xFF
out PORTB, akku
main:
in switch, PINB
cpi switch, 0b11111111
brne LEFT
;Alternative: sbis PORTB,0
; rcall LEFT
rjmp main
USART_Init:
;set baud rate
ldi r17,0
ldi r16, 23
out UBRRH, r17
out UBRRL, r16
;Enable receiver and transmitter
ldi r16, (0<<RXCIE) | (0<<RXEN) | (1<<TXEN)
out UCSRB,r16
;set frame format: 8data, 1stop bit
ldi r16, (0<<USBS) | (3<<UCSZ0)
out UCSRC,r16
ret
USART_Transmit:
sbis UCSRA, UDRE
rjmp USART_Transmit
out UDR,akku
ret
LEFT:
ldi akku, 0x81
rcall USART_Transmit
ldi akku, 0x01
rcall USART_Transmit
ldi akku, 0x04
rcall USART_Transmit
ret
.EXIT
Hi Es wäre hilfreich wenn du noch ein paar Rahmendedingungen preisgeben würdest: Taktfrequenz Baudrate Empfängerprogramm usw. MfG HG
Übertragungsrate: 9600 Baud Quarz: 3,6864 Mhz Senden geht prinzipiell, nur wenn ich den Befehl per Tastendruck senden möchte, dann gibt es Probleme. Eine Senderoutine in der Hauptschleife funktioniert wunderbar. Wäre super, wenn mir jemand nen Tip geben könnte, woran mein Programm scheitert. Liegt es an irgendwelchen Interrupts? Oder ist einfach mein Programm fehlerhaft? Danke für jede weitere Hilfe.
Versuch doch mal die Taste zu entprellen. Du wartest auch nicht ob die Übertragung fertig ist. ( Da gibts ein Flag das du abfragen kannst. ) Wenn jetzt die Taste prellt sendest du zu schnell hintereinander.
Danke für den Tip. Aber es lag am STK500. Ich habe die Ports getestet (vgl. Thread http://www.mikrocontroller.net/forum/read-1-365001.html#365012) und habe festgestellt, dass die irgendwie nicht richtig funktioniert haben. Ich habe etwas hin und her probiert und irgendwann gings dann plötzlich. Ich habe keine Ahnung, woran es gelegen hat. :-( Trotzdem Danke für die Hilfe. Gruß Markus
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.