Hallo,
so ganz sind wir noch nicht am Ende
Es gibt noch einige Fehlerquellen oder wir haben etwas übersehen.
Hast du eine LED zum Blinken am µC?
Bitte probiere einmal folgenden Code.
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#define LEDPORT DDRA |= (1<<PA7)
#define LEDON PORTA |= (1<<PA7)
#define LEDOFF PORTA &= ~(1<<PA7)
#define F_CPU 16000000
volatile uint8_t toggle;
void InitUart (void){
uint16_t ubrr;
ubrr = ((F_CPU/(9600L*16L))-1);
UBRR1H = (unsigned char)(ubrr>>8);
UBRR1L = (unsigned char) ubrr;
UCSR1B = (1<<RXEN1)|(1<<TXEN1);
UCSR1C = (1<<UCSZ11)|(1<<UCSZ10);
}
int main ()
{
LEDPORT;
TCCR1B = (1<<WGM12)|(1<<CS12)|(1<<CS10);
TIMSK1 |= (1<<OCIE1A);
OCR1A = 0x0680;
sei();
InitUart ();
while(1)
{
if (toggle > 0){
if (PORTA && (1<<PA7)){
LEDOFF;
}else{
LEDON;
}
toggle = 0;
}
while ( !(UCSR1A & (1<<UDRE1)));
UDR1 = 'a';
}
return 0;
}
ISR (TIMER1_COMPA_vect){
toggle = 1;
}
Im Bereich der #defines musst du das Programm halt anpassen. PORT und Pin der LED und Controllerfrequenz. Die LED sollte Blinken und das Programm ständig a senden. Bitte achte beim compilieren auch auf Warnungen. In hTerm 9600 Baud 8Data 1Stopbit keine Parity. Wenn das keinen Erfolg bringt, poste bitte die Einstellungen deiner Fusebits.
Die LED habe ich mit rein genommen, damit man erkennen kann, ob sich der Controller ständig resettet.
Gruß
Jens
Lesezeichen