Hallo
ich hab meinen mega128 im M103C mode laufen lassen nun bruach ich Portc
als input, daher hab ich es raus genommen.
Leider funktioniert nun mein uart oder pwm nicht mehr.
Danke
Martin
1 | #include <avr/io.h>
|
2 | #include <avr/interrupt.h>
|
3 |
|
4 | #define BAUD 9600L
|
5 | #define UBRR_BAUD ((16000000/(16UL*BAUD))-1)
|
6 | //function definition
|
7 | void uart_init(void)
|
8 | {
|
9 |
|
10 | UBRR0H |= (uint8_t) (UBRR_BAUD>>8);
|
11 | UBRR0L |= (uint8_t) (UBRR_BAUD);
|
12 | UCSR0B |= ((1<<RXCIE0) | (1<<RXEN0)|(1<<TXEN0)); /* Enable receiver */
|
13 | UCSR0C |= ((1<<UCSZ10) | (1<<UCSZ00)); //8 bits
|
14 |
|
15 | }
|
16 | void pwm_init(void)
|
17 | { DDRB=0x00;
|
18 | DDRB|=(1<<PB7)|(1<<PB6)|(1<<PB5) | (1<<PB4);
|
19 |
|
20 | TCCR0|=(1<<WGM00)|(1<<COM01)|(1<<CS01);
|
21 | TCCR2|=(1<<WGM20)|(1<<COM21)|(1<<CS20);
|
22 | TCCR1A|= (1<<WGM10)|(1<<COM1A1)|(1<<COM1B1);
|
23 | TCCR1B|= (1<<CS10);
|
24 |
|
25 | OCR0=128;
|
26 | OCR1A=128;
|
27 | OCR1B=128;
|
28 | OCR2=128;
|
29 | }
|
30 |
|
31 |
|
32 | void put_uart_c(uint8_t c)
|
33 | {
|
34 | while(!( UCSR0A & (1<<UDRE0)));
|
35 | UDR0 = c;
|
36 | return;
|
37 | }
|
38 |
|
39 | uint8_t get_data(void)
|
40 | {
|
41 | while(!(UCSR0A & (1<<RXC0)));
|
42 | return UDR0;
|
43 | }
|
44 | ISR (USART0_RX_vect)
|
45 | {
|
46 | char c=UDR0;
|
47 | put_uart_c(c);
|
48 | }
|
49 | int main(void){
|
50 |
|
51 |
|
52 |
|
53 | sei();
|
54 | uart_init();
|
55 | pwm_init();
|
56 | put_uart_c('H');
|
57 |
|
58 |
|
59 | while(1);
|
60 | return 0;
|
61 | }
|