Hallo an alle, ich habe momentan ein kleines Problem, bei dem ich einfach nicht weiter weiß. Ich möchte über ein Poti, das an den ADC eines Tiny 13 angeschlossen ist eine PWM steuern. Dazu verwende ich eine Look-Up-Table aber wenn ich am Poti ca 3/4 der Referenzspannung des ADC anlege, dann "spring" der Wert von OCR0A anscheinend über und fängt bei 0 an....weiß nicht woran das liegt. Hier ist der entsprechende Codeabschnitt: volatile static uint8_t PWM[64] = {20,21,22,23,24,24,25,27,28,29,30,31,32,34,35,37, 38,40,41,43,45,47,49,51,53,55,57,60,62,65,67,70, 73,76,79,82,86,89,93,97,101,105,109,114,118,123,128,134, 139,145,151,157,163,170,177,185,192,200,208,217,226,235,245,255}; ISR(ADC_vect) { OCR0A = PWM[ADCH/4]; } Kann mir einer sagen wo mein Denkfehler liegt? :-( Gruß Jan
Jan schrieb: > Kann mir einer sagen wo mein Denkfehler liegt? :-( Du benutzt mehr RAM, als zur Verfügung steht. Der Tiny13 hat 64 Byte RAM, das Array ist 64 Byte groß. Selbst wenn du sonst weiter keine Variablen hast, ist das zu viel, denn es wird ja auch noch etwas RAM für den Stack benötigt. Ein möglicher Ausweg ist es, die Look-Up-Tabelle ins Flash zu verbannen: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmspeicher_.28Flash.29
Ahhh okay, alles klar vielen Dank! Alternativ wäre es ja auch möglich das Array im EEPROM zu speichern? Gruß Jan
Hi
>Alternativ wäre es ja auch möglich das Array im EEPROM zu speichern?
Besser im Flash.
MfG Spess
Wieso suchst du nicht einfach eine Gesetzmäßigkeit zwischen ADC und PWM-Wert? Dann bräuchtset du keine Tabelle. Was solls denn werden?
Ich hab an eine Tabelle gedacht, weil es so möglich ist mehreren ADC-Werten den gleichen PWM-Wert zu zu ordnen. Wenn ich direkt den ADC- Wert in OCR0A schreibe dann befürchte ich dass die Glühbirne, die gedimmt werden soll in der Helligkeit zu sehr bzw zu schnell schwankt. Gruß Jan
Hallo nochmal, nur schnell ne kurze Rückmeldung: Danke für den Tip mit der Variablen im Programmspeicher! Funktioniert jetzt einwandfrei!! :-) Gruß Jan
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.