Forum: Mikrocontroller und Digitale Elektronik OCR0A -Overflow mit Werten aus ADC?


von Jan (Gast)


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

von Stefan E. (sternst)


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

von Jan (Gast)


Lesenswert?

Ahhh okay, alles klar vielen Dank!

Alternativ wäre es ja auch möglich das Array im EEPROM zu speichern?

Gruß Jan

von spess53 (Gast)


Lesenswert?

Hi

>Alternativ wäre es ja auch möglich das Array im EEPROM zu speichern?

Besser im Flash.

MfG Spess

von Floh (Gast)


Lesenswert?

Wieso suchst du nicht einfach eine Gesetzmäßigkeit zwischen ADC und 
PWM-Wert?
Dann bräuchtset du keine Tabelle.
Was solls denn werden?

von Jan (Gast)


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

von Jan (Gast)


Lesenswert?

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