"Přeslechy" na Analogových vstupech
Moderátor: Moderátoři
"Přeslechy" na Analogových vstupech
zkoušel jsem si nastavení a monitorování Analogového vstupu.
Dal jsem si odporovou síť 5k6 se společným vstupem na +5V a rezistory do jednotlivých vstupů A0-A5 u Arduino UNO (originál).
Pak jsem vstupy různě propojoval s GND, nechal ve smyčce skenovat a vypisovat si hodnoty AnalogRead najednou ze všech vstupů.
Očekával jsem, že při uzemnění vždy jednoho vstupu bude ve výpise 5x hodnota 1023 od vstupů, které jsou přizvednuté rezistorem 5k6 a jen jedna hodnota blížící se 0 (ta kterou zrovna uzemňuju).
Ale ta 0 se objevila současně nahodile i na některých jiných, v tu chvíli bezpečně neuzemněných vstupech.
Jde o nějaký "přeslech" v rámci ATMEGA nebo jak si to mám vysvětlit.
Co vy na to, přátelé ?
Koukám že i na stránkách Arduino.cc je u AnalogRead psáno:
"It takes about 100 microseconds (0.0001 s) to read an analog input, so the maximum reading rate is about 10,000 times a second."
Takže je to celkem jasný, že při běhu programu "trpaslík" s voltmerem v uP nestíhá měřit"
mtajovsky píše:Chcete říct, že je knihovna pro Arduino napsána tak, že nepočká na dokončení AD převodu? Dokončení převodu je indikováno bitem ADIF v registru ADCSRA nebo přerušením.
To stym nesuvisi, ide o to ze zvolis analogovy vstup a spustis prevod, vnutorny kondik v uP sa nabije na vstupne napatie, prevod sa dokonci mas hodnotu, prepnes sa na iny vstup a hned spustis prevod (ale vnutorny kondik je este nabity na napetie ktore bolo na predchadzajucom vstupe tak ze to co prevedies AD prevodnikom nebude presne to co tam mas pripojene teraz) inak 100% je,o tom zmienka v datasheetebale tie arduinaci zasadne necitaju (nemam tu datasheet tak ze tym vnutornym kondikom si niesom isty ani neviem aky typ AD prevodnika je,pouzity) ale urcite pockat po pzvoleni vstupu a tak spustit prevod pomoze
Vzhledem k tomu, že jsi zde doteď neuvedl "postižený" program, nemám k tomu co víc dodat.