claudio Postat Iunie 18, 2013 Partajează Postat Iunie 18, 2013 Am o nedumerire: pe un ATmega32 cand se foloseste ADC, imi este restrictionat accesul la tot portul A?Mai exact, am implementat un senzor de lumina conectat la PORTA pin 0 adica la ADC0.Toate functioneaza ok, pana sa integrez functia in proiectul mare.Acolo am o intrerupere de tip CTC (ISR(TIMER1_COMPA_vect)) care imi activeaza succesiv cate o iesire din portul A (exceptand PIN0), dar o ia tare razna.O idee de unde sa incep debugging? Link spre comentariu
claudio Postat Iunie 18, 2013 Autor Partajează Postat Iunie 18, 2013 Am gasit greseala dar poate cineva sa-mi explice si de ce o lua razna uC-ul? deci am definit la inceputul programului variabila adc_temp uint16_t adc_temp[]={}; apoi in functia pentru calculare media am facut: for (uint8_t adc_index=0; adc_index<20; adc_index++) { adc_temp[adc_index]=adc_temp[adc_index+1]; } abia dupa ce am definit astfel variabila mi-a mers: uint16_t adc_temp[20]; Link spre comentariu
Liviu M Postat Iunie 18, 2013 Partajează Postat Iunie 18, 2013 Dimensiunea unui vector se poate da, la declarare, in doua moduri: tip vector[dimensiune]; sau tip vector[] = {"elemente initializate, separate prin virgula"}; In cel de-al doilea caz, dimensiunea vectorului e dat de numarul de elemente intre acolade. In cazul tau intre acolade ai fix 0 elemente, asa ca probabil ai un vector caruia compilerul nu-i aloca nici un fel de memorie (si se comporta ca un pointer spre cine stie ce colt de memorie). Cel putin asa-mi iese mie cand vad codul tau, dar mai asteapta si alte pareri (care, de altfel, ma intereseaza si pe mine). Link spre comentariu
benutzu Postat Iunie 18, 2013 Partajează Postat Iunie 18, 2013 Liviu are dreptate. Intotdeauna cand folosesti un vector, trebuie sa ii declari si dimensiunea, altfel, l-ai declarat degeaba, pentru ca nu este folosit. 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