Hallo
ich bin jetz soweit, leider funktioniert entweder der UART oder das PWM signal sieht einer einen fehler
Danke
Martin
Code:#include <avr/io.h> #include <avr/interrupt.h> #define BAUD 9600L #define UBRR_BAUD ((16000000/(16UL*BAUD))-1) //function definition void uart_init(void) { UBRR0H |= (uint8_t) (UBRR_BAUD>>8); UBRR0L |= (uint8_t) (UBRR_BAUD); UCSR0B |= ((1<<RXCIE0) | (1<<RXEN0)|(1<<TXEN0)); /* Enable receiver */ UCSR0C |= ((1<<UCSZ10) | (1<<UCSZ00)); //8 bits } void pwm_init(void) { DDRB=0x00; DDRB|=(1<<PB7)|(1<<PB6)|(1<<PB5) | (1<<PB4); TCCR0|=(1<<WGM00)|(1<<COM01)|(1<<CS01); TCCR2|=(1<<WGM20)|(1<<COM21)|(1<<CS20); TCCR1A|= (1<<WGM10)|(1<<COM1A1)|(1<<COM1B1); TCCR1B|= (1<<CS10); OCR0=128; OCR1A=128; OCR1B=128; OCR2=128; } void put_uart_c(uint8_t c) { while(!( UCSR0A & (1<<UDRE0))); UDR0 = c; return; } uint8_t get_data(void) { while(!(UCSR0A & (1<<RXC0))); return UDR0; } ISR (USART0_RX_vect) { char c=UDR0; put_uart_c(c); } int main(void){ sei(); uart_init(); pwm_init(); put_uart_c('H'); while(1); return 0; }







Zitieren

Lesezeichen