Forum: Mikrocontroller und Digitale Elektronik ADC und PWM probleme


von Marcel1234 (Gast)


Lesenswert?

Hallo ich bin irgendwie zu blöd für den ADC
Ich möchte einfach ADC0 auslesen und als compare1a wert nehmen.dann adc1 
auslesen und als wert für compare1b nehmen.

Ich habe jetzt schon die ganze zeit hin und her versucht ich verstehe 
irgendwie nicht wie ich den Kanal wechsel und dann wieder das Register 
ADCH benutzen kann ohne das es Effekt auf den vorigen Kanal nimmt.Bis 
jetzt ändern sich immer beide PWM Kanäle.Warscheinlich ist es weil ich 
jedesmal adch nehme aber wie geht es richtig?

Admux = &B01100000
Adcsra = &B11010100
Sreg.7 = 1

Do
Pwm1a = Adch
Admux = &B01100001
Adcsra = &B11010100
Pwm1b = Adch
Loop
End

von Hannes L. (hannes)


Lesenswert?

Du musst warten (oder besser was anderes tun) bis der ADC mit der 
Wandlung fertig ist.

...

von Marcel1234 (Gast)


Lesenswert?

aber wenn ich z.B. eine waitms einbaue geht es trotzdem nicht

von Jonathan S. (joni-st) Benutzerseite


Lesenswert?

Dein Programm ist ziemlich unvollständig. Wo schaltest Du denn z.B. den 
PWM-Modus deines Timers an? Wo schaltest Du den Timer überhaupt an? 
Schlage doch einfach mal folgende Begriffe in deiner BASCOM-Hilfedatei 
nach:

Config TIMER
Config ADC
Getadc

Dann sollte dir einiges klar werden...


Gruß
Jonathan

von spess53 (Gast)


Lesenswert?

Hi

>aber wenn ich z.B. eine waitms einbaue geht es trotzdem nicht

Weil so etwas Unsinn ist. In 'Adcsra = &B11010100' ist das ADSC-Bit (von 
dir) versteckt. Das wird zu Starten von dir auf 1 gesetzt und vom ADC 
gelöscht, wenn er fertig ist. Also muss man nur das löschen abwarten. 
Und fertig.

Du willst übrigens ADC0 nur einmal lesen?

MfG Spess

von Marcel1234 (Gast)


Lesenswert?

Ah also muss ich nur sagen wenn adsc=0 dann nächste messung und das 
ganze wieder auf 1 setzen richtig

von spess53 (Gast)


Lesenswert?

Hi

>Ah also muss ich nur sagen wenn adsc=0 dann nächste messung und das
>ganze wieder auf 1 setzen richtig

Jain. Es geht auch mit dem ADC-Interrupt. Der wird, wenn freigegeben, 
ausgelöst, wenn der ADC fertig ist.

Außerdem ist das ständige Laden von Pwmxy auch Unsinn. Das macht man 
beim Overflow des Timers und nicht irgendwann.

Übrigens, mit Satzzeichen liest sich so etwas besser.

MfG Spess

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.