THX @ all,
also ich weiß inzwischen nicht mehr, wo hier das Problem war. Hab´s irgendwann geschafft, die Mühle zum mahlen zu bringen.
Ich stell meinen Code auch noch rein, dann haben wir eine schöne Sammlung an ASM, C und Basic.
Code:#include <avr/io.h> #include <avr/interrupt.h> #define FOSC 16000000// Clock Speed #define BAUD 250000 #define MYUBRR FOSC/16/BAUD-1 #define ziel_adr 1 // hier die Adresse des Gerätes angeben #define real_adr ziel_adr+1//trägt dem führenden Nullbyte rechnung volatile unsigned int byte_counter = 0; volatile unsigned char befehl [4] = {0}; volatile unsigned int time; volatile unsigned char tmp; volatile unsigned int tmp2; void USART_Init( unsigned int ubrr) { /* Set baud rate */ UBRRH = (unsigned char)(ubrr>>8); UBRRL = (unsigned char)ubrr; /* Enable receiver and Interrupt*/ UCSRB = (1<<RXCIE)|(1<<RXEN);//|(1<<TXEN) /* Set frame format: 8data, 2stop bit */ UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);// } SIGNAL (SIG_UART_RECV)//Frame Recieve Interrupt { unsigned char dummy; //PORTD =byte_counter; if((UCSRA & 0b00010000)== 16)//Frame Error? {//JA///////////// byte_counter = 0; dummy = UDR; UCSRA &= 0b11101111; } else { //NEIN///////////// tmp = UDR; if (byte_counter == real_adr) PORTD = tmp; } byte_counter++; } int main (void) { USART_Init(MYUBRR); DDRD = 0b11111110; sei(); main2: goto main2; return 0; }
Lesezeichen