Problem mit ADC

Gast #586131
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
#586242
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.
Gast #586290
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

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