so jetzt stehe ich vor einem weiteren Prob.
Das Senden vom Controller aus funktioniert einwandfrei.
Allerdings hab ich jetzt so meine Probleme beim Empfangen von Daten:
Code:
#define CPU_Frequency 4000000 // 4Mhz-Quarz
#define UART_BAUD_RATE 4800 // 9600 Baud
#include <avr/io.h>
#include <stdarg.h>
#include <ctype.h>
#include <string.h>
#include <avr/interrupt.h>
#include "bitdef.h"
typedef unsigned char BYTE;
typedef unsigned short WORD;
//************************************************************************************************************************
void warten(int t) //ermöglicht Pausen
{
int h;
for (;t>0;t--)
{
for (h=700;h>0;h--) {}
}
return;
}
void uart_init()
{
outp( (CPU_Frequency / (UART_BAUD_RATE*16L))-1 , UBRRL );
outp( 0, UBRRH );
outp( (1 << URSEL) | (3 << UCSZ0), UCSRC);
outp( (1 << RXCIE) | (1 << TXEN) | (1 << RXEN), UCSRB);
sei();
}
void uart_nachricht(char* senden) {
for (; *senden != '\0'; senden++) {
loop_until_bit_is_set(UCSRA, UDRE);
UDR=*senden;
}
loop_until_bit_is_set(UCSRA, UDRE);
UDR = 13;
}
Signal (USART_Receive_Complete) {
uart_nachricht("Hab was emfangen!");
}
int main()
{
outp (0xFF, DDRA);
uart_init();
uart_nachricht("Initalisierung...");
for (;;) {
warten(500);
PORTA = B00000101;
warten(500);
PORTA = B00000010;
}
}
An Pin 0,1,2 sind Leuchtdioden angeschlossen die wie vorgesehn schön abwechselnd blinken. Wenn nun allerdings der Interrupt USART_Receive_Complete ausgelöst wird schmiert das ganze Programm ab, die Led´s blinken nicht mehr und die NAchricht "Hab was empfangen!" wird auch nicht übertragen.
- MfG Rodney
Lesezeichen