Hey könnte es sein dass, das auslessen mit 8Mhz nicht funktionier?
Mein code funktioniert nicht und der C code von hier funktioniert auch nicht... Warum denn das!!!?
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/iom48.h>
#define FOSC 6000000// 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 */
UBRR0H = (unsigned char)(ubrr>>8);
UBRR0L = (unsigned char)ubrr;
/* Enable receiver and Interrupt*/
UCSR0B = (1<<RXCIE0)|(1<<RXEN0);//|(1<<TXEN)
/* Set frame format: 8data, 2stop bit */
UCSR0C = (1<<USBS0)|(3<<UCSZ00);//|(1<<URSEL0);//
}
SIGNAL (SIG_UART_RECV)//Frame Recieve Interrupt
{
unsigned char dummy;
//PORTD =byte_counter;
if((UCSR0A & 0b00010000)== 16)//Frame Error?
{//JA/////////////
byte_counter = 0;
dummy = UDR0;
UCSR0A &= 0b11101111;
}
else
{ //NEIN/////////////
tmp = UDR0;
if (byte_counter == real_adr) PORTB = tmp;
}
byte_counter++;
}
int main (void)
{
USART_Init(MYUBRR);
DDRB = 0b11111110;
sei();
main2:
goto main2;
return 0;
}
Lesezeichen