Timer Problem LED fading

OP #4099004
Lesenswert?

Hallo liebe Gemeinde,

ich benutze einen Atmega32 mit einem 11MHz Quarz.
Entwicklungsumgebung ist das AVR Studio 4.

Nun zu meinem Problem:

ich möchte eine LED langsam aufleuchten lassen, und direkt wieder 
ausgehen lassen(Fading).

Im Moment habe ich das alles mit dem Timer0 gemacht, würde es aber gern 
mit dem Timer1 oder 2 machen, da ich den Timer0 noch für andere Sachen 
benötige. Mit dem Timer0 funktioniert das ganze prima. Kann mir jemand 
Tipps geben, wie ich das ganze auf Timer1 oder 2 umschreiben kann?

Hier der Code:

//Programm zum Einfaden mit direkt folgendem Ausfaden
//20.04.2015

#include <avr/io.h>
#include <avr/interrupt.h>

#define dimmgeschw 5; //Dimmgeschwindigkeit von 0 bis 1,2^38 einstellbar

float i=0;
char alternierendevariable=0;

int main(void)

{

   DDRB = 0x08;

   TCNT0=0x00;

   TCCR0 |= 1<<WGM00 | 1<<WGM01 | 1<<CS00 | 1<<CS02 | 1<<COM01;

  while(1)
  {
   if (alternierendevariable==0)
      {
        i+=dimmgeschw;
          OCR0=i/1000;

        if (i>=255000)
        {
        OCR0 = 0xff;
            alternierendevariable=~alternierendevariable;
      }
    }
   else if (alternierendevariable==255)
    {
        i-=dimmgeschw;
        OCR0=i/1000;

        if (i==0)
       {
       OCR0 = 0x00;
       alternierendevariable=~alternierendevariable;
         }
}
}
}

Freu mich schon auf eure Ratschläge und Lösungsansätze.

MFG Oli

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