spinach Posted February 6, 2020 Share Posted February 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 to comment
cimitavita Posted February 6, 2020 Share Posted February 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 to comment
Mircea Posted February 6, 2020 Share Posted February 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 to comment
djvas Posted February 6, 2020 Share Posted February 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 to comment
spinach Posted February 7, 2020 Author Share Posted February 7, 2020 Am inteles ; o sa testez. Link to comment
spinach Posted February 11, 2020 Author Share Posted February 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 to comment
nico_2010 Posted February 11, 2020 Share Posted February 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 to comment
cimitavita Posted February 11, 2020 Share Posted February 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 to comment
spinach Posted February 12, 2020 Author Share Posted February 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 to comment
nico_2010 Posted February 12, 2020 Share Posted February 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 to comment
spinach Posted February 13, 2020 Author Share Posted February 13, 2020 Am inteles. multumesc. Link to comment
gsabac Posted February 14, 2020 Share Posted February 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 to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now