Forum: Mikrocontroller und Digitale Elektronik Problem mit ADC


von Andy (Gast)


Lesenswert?

Hi an alle!

Ich verwende bei meinem ATMega8 den ADC0 und ADC1. Mit beiden Convertern 
frage ich jeweils ein Poti ab, dass die Pulsweite für eine PWM-Signal 
(Helligkeitssteuereung einer LED) festlegt (wird mit Timer0 und Timer2 
erzeugt - kein HardwarePWM). Die Abfragen der ADC-Kanäle erfolgt im 
Hauptprogramm.

Es funktioniert prinzipiell einwandfrei, nur habe ich das Problem, dass 
die LEDs flackern. Warum könnte das sein?

Hier mein Hauptprogramm (BASCOM):

Do
  Admux.0 = 0
  Adcsra.6 = 1
  While Adcsra.6 = 1
  Wend
  Adc_val1 = Adch

  Intens1 = Adc_val1
  Intens2 = 255 - Intens1

  Admux.0 = 1
  Adcsra.6 = 1
  While Adcsra.6 = 1
  Wend
  Adc_val2 = Adch

  Zwsp2 = Adc_val2 / 255

  Intens1 = Intens1 * Zwsp2
  Intens2 = Intens2 * Zwsp2
Loop

Mein Programm läuft mit 10MHz, Prescaler bei beiden Timern ist 64 und 
beim ADC 128.

Ich wüßte nicht, woher das Flackern kommen könnte!

Hoffe ihr könnt mir weiterhelfen!!


Danke,
Andy

von Der M. (steinadler)


Lesenswert?

Hast du die Fuses richtig gesetzt? Also ich meine bzgl. externem Takt?

von Andy (Gast)


Lesenswert?

Ja, die passen alle!

von Karl H. (kbuchegg)


Lesenswert?

Andy wrote:
> (Helligkeitssteuereung einer LED) festlegt (wird mit Timer0 und Timer2
> erzeugt - kein HardwarePWM).

Wie machst du die PWM dann?

> Es funktioniert prinzipiell einwandfrei, nur habe ich das Problem, dass
> die LEDs flackern. Warum könnte das sein?

Weil die PWM Frequenz nicht hoch genug ist.

von Willi W. (williwacker)


Lesenswert?

Kann es sein, dass Du Deine PWM-Eigenschaften veränderst, wenn ein 
entsprechender Zyklus noch aktiv ist?

von Andy (Gast)


Lesenswert?

Naja, die Timer-Routinen sehen so aus:

On_timer0:
  Toggle Channel1

  If Channel1 = 1 Then
    Timer0 = Intens1
  Else
    Timer0 = 255-Intens1
  End If
Return

Damit wird ein PWM-Signal erzeugt.


Und die PWM-Frequenz beträgt über 600Hz. Also dürfte man da nichts 
sehen.

Außerdem: Ich verwende einen ATMega48 anstatt eines ATMega8.


THX... Andy

von aaa (Gast)


Lesenswert?

While Adcsra.6 = 1
  Wend
 ich hasse While schleifen

von Andy (Gast)


Lesenswert?

@aaa:
Sagst du mir das, weil die while-Schleife dieses Flackern verursachen 
könnte, oder ist das nur so nebenbei bemerkt? :)


lg
Andy

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.