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.