hallo
das folgende programm soll werte über den ADC lesen, und entsprechend
PWM frequenzen verändern
ich verwende den timer1
solange ich lediglich die routine für OCR1A durchlaufen lasse, verändert
sich die frequenz der pwm wie gewünscht bei verändern der entsprechenden
eingangsspannung.
sobald ich nun aber eine zweite spannung messen lasse und versuche eine
2. frequenz mittels OCR1B erzeugen zu lassen, beeinflussen plötzlich
beide ADC messwerte die frequenzen beider OCRs..
ich denke es ist bloss ne sache der konfiguration des Timer1? was hab
ich übersehn?
mfg
.include "m16def.inc"
.def temp1=r16
.def temp2=r17
init:
ldi temp1, LOW(RAMEND)
out SPL, temp1
ldi temp1, HIGH(RAMEND)
out SPH, temp1
;OC1A/B
ldi temp1, 1<<COM1A1 |1<<COM1B1 | 1<<WGM11 | 1<<WGM10
out TCCR1A, temp1
ldi temp1, 1<<CS11
out TCCR1B, temp1
sbi DDRD,4
sbi DDRD,5
main:
;OCR1A
ldi temp1,0b01000000
out ADMUX, temp1
ldi temp1,0b11000010
out ADCSRA, temp1
waitadc1:
sbic ADCSRA,ADSC
rjmp waitadc1
in temp1,ADCL
in temp2,ADCH
out OCR1AH,temp2
out OCR1AL,temp1
clr temp1
clr temp2
;rjmp main ;- wenn gesetzt, geht alles wie gewünscht -
;OCR1B
ldi temp1,0b01000001
out ADMUX, temp1
ldi temp1,0b11000010
out ADCSRA, temp1
waitadc2:
sbic ADCSRA,ADSC
rjmp waitadc2
in temp1,ADCL
in temp2,ADCH
out OCR1BH,temp2
out OCR1BL,temp1
clr temp1
clr temp2
rjmp main
so ich mal wieder hab dieselbe routine jetzt auf den timer2 angewandt: selbe einstellungen, lediglich das adc ergebnis ist links ausgerichtet da timer 2 ja 8 bit ist: einzeln funktionieren die routinen sowohl bei timer 1A, 1B sowie 2. sobald 2 zusammen kommen beeinflussen verändernde werte an den 3 adc kanälen alle pwm kanäle... WARUM?? ich verstehs echt nicht.. vorallem, wenn ich nur eine routine benutze, kann ich an den potis, die die andern kanäle steuern drehen wie ich will.. nur wenn ich sie alle abfrage verändern alle irgendwie alles.. wie kann das sein? ich vermute den fehler jetzt mal beim adc.. was mach ich verkehrt?
warum hat hier eigentlich keiner ne idee? kann doch nicht sein, dass ich der erste bin, der solche probleme hat... und die beschreibung ist doch eig. auch ok? naja wie dem auch sei, ich hab jetzt einfach mal immer bevor der ADC kanal geändert wird ADEN und ADSC auf null gesetzt. schonmal besser geworden. allerdings beeinflussen sich die 3 potentiometer scheinbar immer noch ein wenig gegenseitig. wie kann ich das filtern? hardware oder software?
Hallo, abgesehen davon, daß Dein Code für andere schwer lesbar ist, keine Formatierung, keine Kommentare, oben noch halbwegs ordentlich mit 1<<Name, unten nur noch Bitmuster, wo man dann erst im Datenblatt kramen müßte, was Du da setzt...... Die erste Messung nach Umschalten des MUX ist meist Schrott, nach Eingangswechsel erstmal eine Dummy-Messung machen, das Ergebnis wegwerfen und dann nochmal messen. Gruß aus Berlin Michael
wow.. alles klar herzlichen dank an dich. problem gelöst ES GEHT.. und ich reg mich nach ca. 24h rumprobieren auf, dass ich nicht gleich gemacht hab was ich (im datenblatt?) schonmal gelesen hab.. :/ tja.. danke
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.