www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer 8 Bit, Interrupt


Autor: Marco Müllner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

Ich beschäftige mich im Moment ein wenig mit dem Timer +Interrupt. Jetz 
hab ich mit den GCC ein Programm geschrieben. In diesem soll nach einer 
gewissen Zeit einfach alle LEDS 1 setzen.

Problem: Er kommt nicht in den Interrupt.

Der Quelltext:
-------------------------------------------------------------
#include <avr/io.h>
#include <avr/interrupt.h>


int Zeit;

ISR(TIMER0_OVF_vect) 
{
   Zeit++; 
}


void main()
{

    Zeit = 0;
  
  DDRD = 0xFF;
  PORTB = 0xFF;
  TIMSK |= (1<<TOIE0);
  TCCR0 |= (1<<CS00)|(1<<CS02);
  sei();

  for (;;)
  {
   if (Zeit > 3)
     {
         PORTB = 0x00;
     }
  }  
}
---------------------------------------------------------------------
Benutzen tu ich AVR Studio 4.13, WinAVR (neueste Version, weiß nicht 
genau welche), das Entwicklungsboard STK 500 und den µC ATMega 8515L.

Könntet ihr mir helfen?

Solltet ihr noch weitere Informationen brauchen, einfach fragen.

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Problem: Er kommt nicht in den Interrupt.

Bist du dir da sooo sicher?


versuchs mal so:
volatile int Zeit;

Autor: Marco Müllner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
er hängt an der if schleife fest, soviel steht für mich fest.

Im Anhang befindet sich ein Bild wo er hängenbleibt

Autor: willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DDRD = 0xFF;     <-PortD
  PORTB = 0xFF;    <-PortB
   PORTB = 0x00;   <-PortB

is das richtig so?

Autor: Marco Müllner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
definitiv nicht :) aber hab ich jetz geändert, tun tut sich aber immer 
noch nix.... er bleibt immer noch dort hängen

Autor: willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was macht denn dein timer0 register im sumulator? zählt das hoch?

Autor: Marco Müllner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein tut er nicht

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie simulierst du denn, etwa im Einzelschritt?
Dir ist schon klar, dass du einen Teiler von 1024 eingestellt hast, und 
es daher 1024 Takte dauert, bis der Zähler seinen Wert ändert, oder?

Autor: willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann haste das problem ja gefunden und du kannst dir sicher sein das er 
wirklich nie in die interruptroutine springt. also nochmal die 
ienstellung von timer0 kontrollieren

Autor: Marco Müllner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich simuliere nicht im einzelnen, sondern lasse ihn durchlaufen. Ich 
habe über 5 Minuten gewartet. Da muss etwas passieren.

Und die Einstellungen von Timer0 sind ziemlich sicher richtig, ich werde 
sie noch überprüfen

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marco Müllner wrote:
> Ich simuliere nicht im einzelnen, sondern lasse ihn durchlaufen.

Und dennoch machst du irgendeinen Bedienfehler, denn bei mir läuft der 
Zähler in der Simulation.

Autor: Marco Müllner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit Interrupt? also so wie es geplant ist?

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja.
Allerdings benutze ich AVR-Studio 4.14. Vielleicht ist es ja doch kein 
Bedienfehler, sondern ein Bug.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.