Hallo allerseits,
da ich neu in der AVR-Programmierung bin, sind mit noch einigen Grundprinzipien unklar.
Frage 1:
Aus welchem Grund liefert mir (1<<0x00) eine 1 also 0x01? Dies bedeutet doch, dass 0x00 um eine stelle nach links geshiftet wird, wobei fehlende Vorgänger mit 0 aufgefüllt werden. Nach meiner Logik sollte in diesem Beispiel die 0x00 wieder resultieren.
Frage 2:
Ich habe ein Beispielprogramm für UART mit Interrrupts getestet. Es funktioniert prinzipiell:
Das Problem ist jetzt, dass mein AVR die ganze Zeit "Begruessungstext" mir übermittelt, als wäre diese Zeile in der Endlosschleife.Code:#include <avr/interrupt.h> #include <avr/signal.h> #include <libusart.h> volatile unsigned char data; SIGNAL (SIG_UART_RECV) { data = UDR; if (data == '0') { PORTB = 0x00; USART_transmit_string("LED off"); USART_transmit('\n'); } if (data == '1') { PORTB = 0xff; USART_transmit_string("LED on"); USART_transmit('\n'); } } int main (void) { USART_Init(); DDRB = 0xff; sei (); USART_transmit('\n'); USART_transmit_string("Begruessungstext"); USART_transmit('\n'); for (;;) {} }
Ich bitte um Hilfe und entschuldige meine Unwissenheit.
Danke im Vorraus.







.
Zitieren

Lesezeichen