spinach Postat Februarie 6, 2020 Partajează Postat Februarie 6, 2020 Avem , sa zicem , portul A cu 8 intrari cu potenta ADC . Din cele 8 intrari , intrare 0 si 1 sint folosite cu ADC activat , celelalte in regim stantart , ca intrari numerice . Ce se intimpla daca citim tot portul , tip g = PortA; Sau daca citim g=PINA&((1<<PA7)|(1<<PA6)|(1<<PA5)|(1<<PA4)|(1<<PA3)|(1<<PA2)); Ce se va citi pentru bitul 0 si 1 , tinind cont ca sint alocati cei 2 pini pt ADC ? Link spre comentariu
cimitavita Postat Februarie 6, 2020 Partajează Postat Februarie 6, 2020 depinde de limitarile librariilor C. in asm poti face orice vrei. Pinii portului A folositi pentru convertorul ADC trebuie configurati ca intrari cu pull-up dezactivat iar citirea se face din ADCH si ADCL. Convertorul ADC poate fi legat doar la un singur pin in configuratie single si la doi pini in configuratie diferentiala. Daca se citesc bitii 0 si 1 ca intrari logice (PINA), pentru o alimentare de 5V, se vor respecta valorile logice CMOS. Adica vei citi 0 logic pentru tensiuni cuprinse intre 0 - 1,5V si 1 logic pentru tensiuni intre 3,5 - 5V. In datasheeturile Atmega, 0 logic e considerat de la 0V la 1,4V iar 1 logic de la 2,7V la 5V. Pentru tensiuni intre 1,4V si 2,7V valoarea citita pe PINA difera de la un microcontroler la altul si depinde mult de starea anterioara a bistabilului de la intrare. Daca bitii 0 si 1 te supara, poti sa-i stergi: cu ANDI Rx,0b_11111100 ii pui pe 0, iar cu ORI Rx,0b_00000011 ii pui pe 1. Link spre comentariu
Mircea Postat Februarie 6, 2020 Partajează Postat Februarie 6, 2020 2 hours ago, hspinache said: Avem , sa zicem , portul A cu 8 intrari cu potenta ADC . Din cele 8 intrari , intrare 0 si 1 sint folosite cu ADC activat , celelalte in regim stantart , ca intrari numerice . Ce se intimpla daca citim tot portul... Ce se va citi pentru bitul 0 si 1 , tinind cont ca sint alocati cei 2 pini pt ADC ? Pai pinii ADC nu sunt biti. Informatia prezenta este sub format byte sau word. A nu se confunda byte-ul de configurare al portului A cu registrii asignati intrarilor/iesirilor. Link spre comentariu
djvas Postat Februarie 6, 2020 Partajează Postat Februarie 6, 2020 Raspunsul se gaseste in datasheet ! Nu cunosc exact raspunsul pt ca nu lucrez cu Atmel dar la PIC este asha : I/O pins configured as analog input alwaysread ‘0’. Link spre comentariu
spinach Postat Februarie 7, 2020 Autor Partajează Postat Februarie 7, 2020 Am inteles ; o sa testez. Link spre comentariu
spinach Postat Februarie 11, 2020 Autor Partajează Postat Februarie 11, 2020 In datasheet nu am gasit ceva , sau poate nu am vazut . La prima vedere , pe simulare , se pare ca ii citeste 0 . ok ; Problema 2 : setare ceas . Ce valori ar fi recomandate ? depinde de frecventa semnal injectat ? Am gasit ca ar trebui se ne limitam la max 1Mhz . Link spre comentariu
nico_2010 Postat Februarie 11, 2020 Partajează Postat Februarie 11, 2020 Acum 25 minute, hspinache a spus: Problema 2 : setare ceas . Ce valori ar fi recomandate ? depinde de frecventa semnal injectat ? Am gasit ca ar trebui se ne limitam la max 1Mhz . Conform foii de catalog (pe care se pare ca nu ai citit-o) pentru obtinerea rezolutiei maxime de 10 biti, frcventa de lucru a ADC nu ar trebui sa depaseasca 200kHz. Daca in schimb se doreste o rezolutie inferioara atunci frecventa de lucru a ADC poate fi crescuta, astfel ca la max. 1MHz vei avea o rezolutie de 3 biti. In alta ordine de idei, frecventa maxima a semnalulului aplicat la intrarea ADC ar trebui sa fie sub limita impusa de teorema lui Nyquist. Citeste si aici: http://www.openmusiclabs.com/learning/digital/atmega-adc/in-depth/index.html Link spre comentariu
cimitavita Postat Februarie 11, 2020 Partajează Postat Februarie 11, 2020 La Atmega, frecventa CLK la intrarea convertorului trebuie sa fie minim 50 kHz si maxim 200 kHz. O conversie se face in 13 cicluri CLK (clk de la intrarea convertorului) iar numarul maxim de conversii pe secunda este 15384. Pentru CLK sub 50 kHz si peste 200 kHz incep sa apara erori. Convertorul AD nu este recomandat sa fie folosit in cazul in care se utilizeaza un cristal de cuartz de 32.768 kHz. Link spre comentariu
spinach Postat Februarie 12, 2020 Autor Partajează Postat Februarie 12, 2020 Am sa il folosesc pe 8 biti . Am inteles ca trebuie sa limitez in 200 khz . ok. Dar de folosit am sa folosesc 2 canale , in free runing . Probabil cind va comuta si achizitiona un canal , celilalt va pierde informatia si invers . Este recomandabil sa fie frecventa mai mare ? Si care ar fi cea mai rapida metoda de comutare a canalelor ? Link spre comentariu
nico_2010 Postat Februarie 12, 2020 Partajează Postat Februarie 12, 2020 Multiplexarea canalelor are loc hardware, nu se face prin soft. Citeste capitolul "Changing channel or reference selection" din foaia de catalog a microcontroller-ului. Link spre comentariu
spinach Postat Februarie 13, 2020 Autor Partajează Postat Februarie 13, 2020 Am inteles. multumesc. Link spre comentariu
gsabac Postat Februarie 14, 2020 Partajează Postat Februarie 14, 2020 @spinach, ce fel de semnale doriti sa digitalizati cu ADC-ul? Daca frecventa maxima din spectrul semnalului de intrare este scazuta, mai mica de aproximativ de 2,5KHz, (deoarece sunt 2 canale frecventa de esantionare rezulta la jumatate), atunci prin comutarea a 2 canale nu se pierde informatie. In datasheetul pentru ATmega328: According to the datasheet, to get a 10 bits resolution on the conversion result, the ADC clock frequency should be 50kHz – 200kHz. When the ADC clock is 200kHz, the sampling frequency is ~15kSPS, which confines the upper frequency in the sampled signal to ~7.5kHz. La 10 biti sunt ceva probleme, deoarece trebuiesc combinate valorile LSB si MSB rezultate din esantionare, dar nu si la 8 biti. Se arata ca pentru un canal se poate utiliza o frecventa de esantionare de circa 15 KHz, teoretic pentru un semnal cu frecventa maxima de 7,5KHz. In realitate, pentru ca semnalul esantionat sa poata fi vizualizat ca o imagine de calitate, trebuiesc 5-10 esantione pe perioada si atunci frecventa maxima utila va fi sub 1KHz. In cazul unor prelucrari numerice avansate cu metode Spline, Hanning, Hamming, Blackman, se poate obtine o acuratete vizuala pana la aproximativ 6KHz, adica cam la 80% din jumatatea freventei de esantionare, frecventa Nyquist (vezi terema Nyquist-Shannon). Pentru studiu am facut un program interactiv capabil sa simuleze tipuri diverse de esantionare. Un exemplu de utilizare este in poza, unde semnalul este "natur" @gsabac Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum