Timer Overflow Interrupt

OP #1134722
Lesenswert?

Kann mir bitte einer weiter helfen!!!
ich bin am durchdrehn.
Will einfach nur mit dem Timer Überlauf Interrupt den PIN B0 auf high 
setzen. Ich bekomm aber keinen Interrupt.
Kann mal wer den Code kontrollieren ob ich eine Fehler drin hab?
1
#define     F_CPU   3686400UL
2
#include <avr/io.h>
3
#include <avr/interrupt.h>
4
 
5
// globale Variablen
6
 
7

8
 
9
int main(void) 
10
{
11
 
12
// IO konfigurieren
13
 
14
    DDRB = 0xFF;
15
 
16
// Timer0 konfigurieren
17
 
18
    TCCR0  = 0b00000011;            // 
19
    TIMSK  = 0b00000001;      // Timer Overflow Interrupt freischalten 
20
 
21
// Interrupts freigeben
22
 
23
    sei();
24
 
25
// Endlose Hauptschleife
26
    while(1) 
27
  
28
  {
29
     
30
    }
31

32
}
33
 
34
// Timer0 overflow Interrupt
35
 
36
ISR(TIMER0_OVF_vect) 
37
{
38
    PORTB = 0b00000001;
39
}
#1134729
Lesenswert?

Wenn der Timer nicht läuft, dann kannst Du bis zum Sankt-Nimmerleinstag 
warten, dass ein Interrupt kommt.


Und das hier:
1
 TCCR0  = 0b00000011;            // 
2
 TIMSK  = 0b00000001;      // Timer Overflow Interrupt freischalten
...ist bäääh. Bitte gewöhne Dir an, die Bitnamen zu benutzen. Oder 
willst Du, dass jeder, der helfen will, erstmal im Datenblatt 
nachschlagen muss, welche Bits da überhaupt gesetzt werden und ob Du die 
richtigen Bits gesetzt hast? Kein Wunder, dass Du da selbst die 
Übersicht verlierst...

AVR-GCC-Tutorial lesen!
#1134755
Lesenswert?

Johannes M. wrote:
> Johann L. wrote:
>> Schreib mal für welchen Controller.
> Naja, in dem Fall reicht es, zu wissen, dass es ein AVR ist und dass bei
> keinem AVR die Timer von selbst (Werkseinstellung) laufen...;-)

Sorry Jahannes, dass ich mal wieder nörgeln muss. ;-)
Der Timer wird gestartet.

EDIT: Oh, sehe gerade, dass du es schon selber gemerkt hast. ;-)
OP #1134801
Lesenswert?

Hab den Code ein bischen überarbeitet funktioniert jedoch wieder nicht.
1
#define     F_CPU   3686400UL
2
#include <avr/io.h>
3
#include <avr/interrupt.h>
4
 
5
// globale Variablen
6
 
7

8
 
9
int main(void) 
10
{
11
 
12
// IO konfigurieren
13
 
14
    DDRB = 0xff;
15
 
16
// Timer0 konfigurieren
17
 
18
    TCCR0 |= (1<<CS00)|(1<<CS02);           // 
19
    TIMSK |= (1<<TOIE0);          // Timer Overflow Interrupt freischalten 
20
 
21
// Interrupts freigeben
22
 
23
    sei();
24
 
25
// Endlose Hauptschleife
26
    while(1) 
27
  
28
  {
29
     
30
    }
31

32
}
33
 
34
// Timer0 overflow Interrupt
35
 
36
ISR(TIMER0_OVF_vect) 
37
{
38
    PORTB = 0b00000001;
39
}
#1134807
Lesenswert?

Daniel P. wrote:
> Nein hab das Oszi meines Vaters dranhängen.

Der Code ist grundsätzlich ok.
Bist du sicher, dass dein Problem in Wirklichkeit nicht ein Oszi Problem 
ist? Wenn du ein Voltmeter hast, dann benutz doch dieses mal. An PB0 
müssen konstant 5V anliegen. Gleich daneben, an PB1 müssen es 0V sein.
#1134936
Lesenswert?

Daniel P. wrote:
> Nein 0 Warnings gar nix.
> Zum Mäusemelken!!!!!
Das kann, mit Verlaub, nicht wirklich sein...

Also:
- Du sagst, Hardware funktioniert (getestet mit Setzen des Bits in 
main() ohne Interrupt).

- Du sagst, Programm compiliert ohne jegliche Warn- oder Fehlermeldung.

Da bleibt nicht viel übrig.
- Programm für einen falschen Controller compiliert
   => würde vermutlich entweder zu Fehlermeldungen führen (unbekannter 
Interrupt-Vektor, unbekannte Register etc.) oder zu einem völligen 
nicht-Funktionieren des Codes führen (inklusive des Testcodes ohne 
Interrupt)
- sonstige Einstellungen dürften keinen Einfluss haben, es müsste 
zumindest nach recht kurzer Zeit etwas passieren...

Binde doch mal die util/delay.h ein und lasse z.B. mit _delay_ms(100) in 
der main-Schleife den Portpin wackeln (mit nem XOR).
Gast #1134961
Lesenswert?

Programmierst Du Deinen Controller aus dem AVRStudio heraus? Falls ja: 
Check mal in der Programmer-Dialogbox, ob auch wirklich die richtige 
HEX-Datei geflasht wird. Es gab Leute hier, die den Controller nach 
Fehlerberichtigungen im Code versehentlich immer wieder mit der alten 
HEX-Datei programmiert haben, und sich wunderten, warum der Fehler 
weiterhin auftrat.
#1135140
Lesenswert?

gast wrote:
> Und ob der richtige Controller in den Projekteinstellungen steht

Johannes M. wrote:
> - Programm für einen falschen Controller compiliert
>    => würde vermutlich entweder zu Fehlermeldungen führen (unbekannter
> Interrupt-Vektor, unbekannte Register etc.) oder zu einem völligen
> nicht-Funktionieren des Codes führen (inklusive des Testcodes ohne
> Interrupt)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren