Interrupt wird nicht richtig ausgeführt TMR0

Gast #1519904
Hallo,
Woran könnte es liegen das die ISR nicht richtig ausgeführt wird?

Und zwar wird bei einem Overflow von TMR0 wieder bei der Initialisierung 
angefangen ? nur Warum ?

Könnte mir da jemand helfen?

Grüße

1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include <avr/interrupt.h>
4
#include <avr/iom16.h>
5

6
volatile uint8_t PWM;
7

8
//Interrupt Service Routinen
9

10
ISR (TIMER0_OVF_vect)
11
  {
12
  PWM++;
13
  }
14

15

16
//----Hauptschleife
17

18
int main(void)
19
{
20
  //Initialisierung
21
  DDRB    =    0xFF;
22
  DDRD    =    0x3F;
23
  TCCR0     |=    (1<<CS00);
24
  TIMSK      |=     (1<<TOIE0);
25

26

27
  sei();
28
  
29
  while(1)
30
  {PORTB  = 0x01;
31
  PORTB   = 0x02;
32
   }
33

34
}
#1519922
Irgendwelche Warnings vom Compiler?

(warum bindest du die iom16.h direkt ein. Die brauchst du nicht. Das 
macht schon die iom.h. Schmeiss sie raus und wenn du dann irgendwelche 
Warnungen kriegst, weißt du, dass deine Projektkonfiguration nicht 
stimmt. Die spezifischen iomXX.h bindet man nie selber ein)
Gast #1519951
Ja eine Warnung gibt es und zwar die hier:

<command-line>: warning: this is the location of the previous definition

Aber wenn ich da einen Doppelklick mache dann springt er nicht zur 
Programmzeile.


hmm
Gast #1519956
Mhm ich hab mir jetzt mal in der Simulation ne Fehlermeldung bekommen 
und Zwar habe ich in der ISR wo PWM++; steht einen Breakpoint gesetzt.

Wenn ich dann auf RUN Drücke dann stoppt die Simulation und im Output 
steht:
AVR Simulator: Excessive stack overflow, stop sim
Gast #1519982
Mhm also ich bin so oder so nur in der Simulation grade und dort 
Funktioniert es nicht.

Wenn ich mit einem Rechtklick auf mein Projekt gehe und auf Properties 
klicke dann steht da Target Part: Atmega 16

Wenn ich unter Projekt/Configuration gehe dann steht dort auch Atmega 16

und wenn ich den Controller Programmieren wollte mit dem AVR Dragon dann 
steht doch auch Atmega 16.



Kann man das noch irgendwo umstellen ? denn für die Simulation sollte ja 
eigentlich der Prozessor verwendet werden den man unter 
"Projekt/Configuration " eingestellt hat.
Gast #1519986
Also Es hat anscheinend Doch irgendwas mit dem Controller im Projekt zu 
tun. und zwar hab ich das Projekt früher mal für einen Atmega 32 
erstellt. Bin aber dann auf den 16er umgesprungen. Wenn ich jetzt das 
Programm auf Atmega 32 stelle dann Funktioniert die ISR ganz normal wenn 
ich den wieder auf den 16er Stelle dann kommt wieder die Overflow.

Mhmmm. Aber wie kann man das Projekt denn dann so umstellen das man 
jetzt nen anderen Controller verwenden kann?  ohne ein Neues Projekt 
anlegen zu müssen ?

Oder Hat der Atmega 16 irgendwie Probleme bei der ISR ?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.