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:
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.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; } }
- MfG Rodney







Zitieren

Lesezeichen