Ist ja interessant.
Also der Code der nun drauf ist:
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#define F_CPU 7372800
#define USART_BAUD_RATE 115200
#define USART_BAUD_SELECT (F_CPU/(USART_BAUD_RATE*16L)-1)
volatile static uint8_t data;
void USART_init(void){
UBRRH = 0;
UBRRL = (uint8_t) USART_BAUD_SELECT;
/* Aktivieren des Empfängers, des Senders und des "Daten empfangen"-Interrupts */
UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
/* Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit */
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
data = UDR;
}
void USART_transmit(uint8_t c){
while(!(UCSRA & (1<<UDRE)));
UDR = c;
}
void USART_transmit_string(uint8_t *string){
while(!(UCSRA & (1<<UDRE)));
while( *string){ USART_transmit (*string++); }
}
/*
SIGNAL( SIG_USART_RECV )
{
data = UDR;
}
*/
int main (void)
{
// D A T E N R I C H T U N G :
//===============================================
// PORTA Pin: 76543210 ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
DDRA = 0b11111111; //
PORTA = 0b00000000; //
// PORTB Pin: 76543210 ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
DDRB = 0b00000000; //
PORTB = 0b00000000; //
// PORTC Pin: 76543210 ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
DDRC = 0b00000000; //
PORTC = 0b11111111; //
// PORTD Pin: 76543210 ( 0 = Eingang/Pullup aus, 1= Ausgang/Pullup ein )
DDRD = 0b11111111; //
PORTD = 0b00000000; //
USART_init();
USART_transmit_string("USART INIT - OK ");
sei();
uint8_t data_alt;
while (1) {
PORTA = UCSRA;
PORTD = data;
/*
if( data != data_alt ){
USART_transmit(data);
data_alt = data;
}
*/
}
}
Nun...
1. ich schalte ein
2. PC empfang "USART Init - OK"
3. Ich sende
4. PC empfang"USART Init - OK"
Wenn ich meine Gedanken mal preisgeben darf: "BAHNHOF"!
Lesezeichen