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.