RES
RES
Ik moet 2 potmetertjes uitlezen via de ADC ATmega88, maar er is maar 1 ADC complete interrupt. Hoe doe je dit als je dus per keer moet omschakelen van ADC kanaal (ADMUX)?
Heb dus deze twee stukjes ASM code en de ISR draaiend.
ADC4: ldi temp, 0b01100100 ;select ADC4, Vref = AVcc
sts ADMUX, temp ;left adjusted for 8-bit
lds Xcrd, ADCH ;read 8-bit ADC value
lsr Xcrd ;divide by 2 -> 7-bit
ADC5: ldi temp, 0b01100101 ;select ADC5, Vref = AVcc
sts ADMUX, temp ;left adjusted for 8-bit
lds Ycrd, ADCH ;read 8-bit ADC value
lsr Ycrd
lsr Ycrd ;divide by 4 -> 6-bitAlleen bit0 van ADMUX veranderen, maar hoe, want ik moet ook nog eens 2 kanalen in de mainloop bekijken.
Zo te zien moet die bit0 van ADMUX gaan toggelen, maar dan duurt het dus 2 ISR's voordat ik Xcrd en Ycrd binnen heb.
Op 10 augustus 2009 12:07:07 schreef RES:
Zo te zien moet die bit0 van ADMUX gaan toggelen, maar dan duurt het dus 2 ISR's voordat ik Xcrd en Ycrd binnen heb.
De ATmega88 heeft maar één ADC. Maar heeft wel een input mux.
Je doet
1) Selecteer CH0
2) AD converstie
3) CH0_WAARDE = ADC
4) Selecteer CH1
5) AD converstie
6) CH1_WAARDE = ADC
Dit kun je ook in een ISR zetten en de ADMUX bit togglen.
Robin
RES
RES
Dit kun je ook in een ISR zetten en de ADMUX bit togglen.
Jep, dat toggelen in de ISR werkt.
Nu heb ik dus in de mainloop die X en Y waarden beschikbaar, maar nu moet ik gaan kijken naar verandering. Hoe kijk je dus naar 2 waarden die zowel appart (X of Y) als tegelijk (X en Y) kunnen veranderen?
Wat bedoel je?
Verandert de ingangsspanning zo snel dat je het niet kunt volgen? Op welke samplerate zit je?
Ik heb zo'n vermoede dat er een touchscreen op zit? Dan is de software nog anders.
OT:
Waarom niet de overstap naar C?
Robin
RES
RES
Het werkt. Was eigenlijk weer heel simpel achteraf (altijd achteraf.)
X en Y één voor één verversen, had nl. al een routine geschreven die X en Y tegelijk ververste.
Nee geen aanraakschermpje, een pixel laten bewegen op display. (testje.)
Blijf op ASM proggen, krijg je lekker snel draaiend en compact, dus kun je op de kleine voordeligste (AVR?) microcontrollers blijven knutselen.