Hallo,
ich Arbeite seid einiger Zeit mit Atmegas und AVR Studio. Als Controller
dient mir ein Atmeag88 der an einem PC verbunden ist, ein 14,7456MHz
Quarz ist ebenfalls angeschlossen. Die Kommunikation untereinander
Funktioniert auch schon.
Jetzt zu meinem Problem. Ich wollte den timer0 initialisieren und mir
erst einmal nur auf der Konsole etwas ausgeben lassen. Suche schon seid
ein paar Tagen nach einer Lösung im Netz, hier auf der Seite und in dem
Forum, bekomme es jedoch nicht hin.
Hier ist mein Code evt habt Ihr ja eine Idee was ich falsch mache.
1 | #include <avr/io.h>
|
2 | #include <avr/pgmspace.h>
|
3 | #include <avr/interrupt.h>
|
4 | #include <avr/wdt.h>
|
5 |
|
6 | #include "uart.h"
|
7 |
|
8 | ISR ( TIMER0_COMPA_vect ) {
|
9 | printf("TIMER0_COMPA_vect\n");
|
10 | }
|
11 |
|
12 | void timerInit( void ) {
|
13 |
|
14 | // Globale Interrupts aktivieren
|
15 | sei();
|
16 |
|
17 | TCCR0A = ( 1<<WGM00 ); //Waveform Generation Mode
|
18 | TCCR0A = ( 1<<CS02 ) | ( 1<<CS00 ); // Prescalor 256
|
19 |
|
20 | OCR0A = 230; // 14.745.600 / 256 / 230 = 250 Hz
|
21 |
|
22 | // Compare Interrupt aktivieren
|
23 | TIMSK0 |= ( 1<<OCIE0A );
|
24 |
|
25 | // Set Timer
|
26 | TCNT0 = 0x00;
|
27 | }
|
28 |
|
29 | int main ( void ) {
|
30 | uartInit( MY_UBRR, 0 );
|
31 |
|
32 | timerInit( );
|
33 |
|
34 | for( ;; ){
|
35 | printf("do nothing\n");
|
36 | _delay_ms(500);
|
37 |
|
38 | }
|
39 | return 0;
|
40 | }
|
Habe schon einige Möglichkeiten und Varianten ausprobiert und komme
einfach nicht weiter.
Grüße Allrik