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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.