OCR0A -Overflow mit Werten aus ADC?

Gast #2316127
Lesenswert?

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
#2316130
Lesenswert?

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
Gast #2316568
Lesenswert?

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

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