Dann frage ich mal quer rein (sorry, genau da hing ich gestern Abend fest):
Code:
#include <nibobee/iodefs.h>
#include <nibobee/led.h>
#include <nibobee/delay.h>
int main(void)
{
// Timer 0 konfigurieren
TCCR0 = (1<<CS00);
TCCR0 = (1<<CS02); // Prescaler 1024
// Overflow Interrupt erlauben
TIMSK |= (1<<TOIE0);
enable_interrupts(); // Global Interrupts aktivieren
while(1==1) //mach was;
{ //hier nur ein Lauflicht mit drei LED`s
int ledNr;
led_set(ledNr,0);
delay(700);
for (ledNr=0;ledNr<3;ledNr++)
{
led_set(ledNr,1);
delay(350);
}
delay(350);
for (ledNr=3;ledNr>0;ledNr--)
{
led_set(ledNr,0);
delay(350);
}
}
}
/*
Der Overflow Interrupt Handler
wird aufgerufen, wenn TCNT0 von
255 auf 0 wechselt (256 Schritte),
d.h. ca. alle 2 ms <<<Werte stimmen nicht, da Prescaler auf 1024 statt auf 8 und
der ATMega16 auf 16MHz läuft
*/
ISR (TIMER0_OVF_vect)
{
/* Interrupt Aktion alle
(1500000/1024)/256 Hz = 57,22045898 Hz
*/
}
Der von mir gepostete Code stammt, mit kleinen Änderungen aus einem der Tutorials betreffs Timer.
Da ich noch nix habe, was auf den Interrupt hin passieren sollte, passiert auch nix, ist soweit klar.
Ergänzt habe ich den Code (einfach, um zu sehen, das was passiert) mit nem kleinen LED-Lauflicht auf LED 1-3.
Soweit funktioniert das Programm auch wie gewünscht, ABER: die LED`s glimmen nur, sie leuchten nicht ordentlich.
Ich hab den Code übrigens einfach aus nem Lauflicht herauskopiert, was durchaus bestens funktioniert (dort leuchten sie mit voller Helligkeit, wie das soll).
What`s this?
Kann, wenn es weiterhilft, auch das richtig funktionierende Programm posten (ich schätze, das ist nichts als eine Erweiterung des LED-Programmes aus dem Tutorial der Biene gewesen).
Hardwareprobleme kann ich ausschliessen, das ursprüngliche Programm läuft nach wie vor tadellos.
Mögliche Fehler bei den Spielereien mit dem Timer auch, da man auch die betreffenden Zeilen auskommentieren kann, und trotzdem glimmen die LED`s nur.
Kurz gesagt: HILFE...
So, nun schau ich mir dein Beispiel mal an...und bin gespannt.
Lesezeichen