Forum: Mikrocontroller und Digitale Elektronik Timer Problem LED fading


von Oliver G. (suchoi31)


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

: Verschoben durch Moderator
von Klugscheisser (Gast)


Lesenswert?

Falsches Forum -> hier keine Fragen stellen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.