Sari la conținut
ELFORUM - Forumul electronistilor

Utilizare ADC mega48 - pe ce cale sa o apuc ?


Postări Recomandate

"Poate ca user nico_2010 are dreptate ; adica pe undeva o scrie in citi cicly se sterge ; dar asa se mai intimpla ; uneori nu vedem ."

 

Pag.16, punctul 7.8.1 "Interrupt resposne time". Daca ocolesti intreruperea atunci verifici in software daca flagul ADIF a fost setat si actionezi in consecinta. Cate impusuri de ceas va dura asta, doar tu stii, functie de complexitatea actiunilor din "main"

Link spre comentariu
  • Răspunsuri 38
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

[*]Conversia ADC se face "in background", nu te afecteaza si poti sa faci o functie care sa vada daca exista o variatie, asta iti va consuma foarte putin cod si timp si nu cred ca va afecta executia programului (esti chiar la 99.99% din utilizarea micro si nu mai poti adauga cateva operatii ?).

[*]Intreruperile sunt cheia multor solutii si te fac sa economisesti timp de executie.

[*]Poti folosi un encoder si in acest caz vei avea o intrerupere cand il vei actiona (daca bineinteles vei activa intreruperea "on pin change").

[*]Daca nu poti folosi un encoder si esti blocat pe potentiometru, poti adauga un circuit extern care va citi in paralel tensiunea pe potentiometru. Acest circuit consta intr-un derivator, realizat cu un operational si un circuit de "redresare" a semnalului de iesire al acestuia, semnal pe care il poti utiliza pentru generarea unei intreruperi.

Link spre comentariu

Faci o intrerupere generata de timer, cu o perioada mult mai mare decat timpul de conversie. Pentru un micro la 1MHz sa zicem faci o intrerupere la 100ms sau chiar 200.

Fixezi ADC pe free-running, pe canalul A sa zicem.

 

La intrerupere, verifici valoarea pe A si muti ADC pe canalul B, tot in free-running.

La urmatoarea intrerupere verifici B si muti ADC pe A, etc.

Link spre comentariu

Diferenta intre cele doua variante ar fi ca in cazul primeia ADC-ul va merge "in gol" tot timpul, iar citirea se va face la un moment de timp dat, iar in cazul celei de-a doua declansarea procesului de conversie se face in intrerupere.

 

Eu inca mai sper sa vii cu o solutie proprie - buna sau mai putin buna - ca sa primesti un ajutor mai concret.

Cele trei pagini ale topicului sunt pline de informatii (cu exceptia unor solutii mai "exotice") pentru unul care chiar vrea sa faca ceva, la propriu. Totul este sa stii ce vrei si sa vrei sa faci ceva concret.

Link spre comentariu

Diferenta este ca daca lasi in free-running esti mai sigur ca valoarea este corecta. 

Dupa selectarea canalului dorit, pentru incarcarea condensatorului de sampling este necesar un anumit timp (settling time), dincolo de timpul de conversie. In principiu, daca selectezi un canal, ar trebui sa faci o citire al carui rezultat sa il ignori si apoi sa repeti citirea, daca vrei sa fii mai sigur.

Lasand ADC-ul in free-mode, singurul dezavantaj ar fi ca microcontrollerul va consuma un pic mai mult curent, dar daca nu alimentezi din baterii si nu tragi ne fiecare nanoamper, nu ar fi asa mare problema. Avantajul ar fi ca acel condensator, dupa cateva sample-uri, va fi incarcat stabil si deci conversia va fi mai precisa. 

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări