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;
}
Lesezeichen