ole Postat August 10, 2011 Autor Partajează Postat August 10, 2011 Posteaza si codul + schema ca sa te putem ajuta mai usor. Link spre comentariu
Vizitator poke_veve Postat August 11, 2011 Partajează Postat August 11, 2011 Aici este un filmulet cu problema in discutie, cu mentiunea ca dupa ce il alimentez din nou, isi revine daca il programez din nou. Asa face orice cod as pune pe el, de aceea nu mi se pare relevant codul, oricum il pun si pe acesta aici: #include #include #include #include #include volatile static uint8_t nr_pol, speed=5, sdc=5, speed_temp, cal, dir, max_dr, max_st, time, u; volatile static uint8_t mov[6]; volatile static uint16_t t=0, cursa, nr_pasi=0; uint16_t EEMEM nvcursa=3, nvnr_pasi=0; uint8_t EEMEM nvmov[6]={0, 1, 0, 0, 0, 0}; void afis(int); void afis_1dig(uint8_t); void dig_select(uint8_t); ISR(TIMER0_OVF_vect) { if(dir==1) { if(max_dr==0) { if(nr_pasi { nr_pasi++; nr_pol++; if(nr_pol==5)nr_pol=1; switch(nr_pol) { case 1 : PORTB=/*(1< break; case 2 : PORTB=/*(1< break; case 3 : PORTB=/*(1< break; case 4 : PORTB=/*(1< break; }//end switch if(nr_pasi==cursa){max_dr=1;} }//end if(nr_pasi }//end if(max_dr==0) else { if(nr_pasi>0) { nr_pasi--; nr_pol--; if(nr_pol==0)nr_pol=4; switch(nr_pol) { case 1 : PORTB=/*(1< break; case 2 : PORTB=/*(1< break; case 3 : PORTB=/*(1< break; case 4 : PORTB=/*(1< break; }//end switch if(nr_pasi==0){max_dr=0; dir=0;} }//end if(nr_pasi>0) }//end else }//end if(dir==1) else { if(max_st==0) { if(nr_pasi { nr_pasi++; nr_pol--; if(nr_pol==0)nr_pol=4; switch(nr_pol) { case 1 : PORTB=/*(1< break; case 2 : PORTB=/*(1< break; case 3 : PORTB=/*(1< break; case 4 : PORTB=/*(1< break; }//end switch if(nr_pasi==cursa){max_st=1;} }//end if(nr_pasi }//end if(max_st==0) else { if(nr_pasi>0) { nr_pasi--; nr_pol++; if(nr_pol==5)nr_pol=1; switch(nr_pol) { case 1 : PORTB=/*(1< break; case 2 : PORTB=/*(1< break; case 3 : PORTB=/*(1< break; case 4 : PORTB=/*(1< break; }//end switch if(nr_pasi==0){max_st=0; dir=1;} }//end if(nr_pasi>0) }//end else }//end else } ISR(TIMER2_OVF_vect) { if(++t==3905) { t=0; if(++u==58){u=0; time++;} } } ISR(INT0_vect)//iesire calibrare { if(bit_is_clear(PIND, 2)) { TCCR1B|=(1< } else { TCCR1B&=~(1< if(TCNT1>600)//apasare lunga { cal=0; speed=speed_temp; }//end if(TCNT1>600) else//apasare scurta { if(cal==0){if(speed<5){speed++;}} else{cursa--; eeprom_write_word(&nvcursa, cursa);} TCCR2|=(1< } TCNT1=0; } } ISR(INT1_vect)//intrare calibrare { if(bit_is_clear(PIND, 3)) { TCCR1B|=(1< } else { TCCR1B&=~(1< if(TCNT1>600)//apasare lunga { cal=1; speed_temp=speed; speed=sdc; }//end if(TCNT1>600) else//apasare scurta { if(cal==0){if(speed>0){speed--;}} else{cursa++; eeprom_write_word(&nvcursa, cursa);} } TCNT1=0; } } void main() { DDRB=255; DDRC=255; DDRD|=(1< TIMSK|=(1< TCCR2|=(1< GICR|=(1< MCUCR|=(1< mov[0]=nr_pol; mov[1]=dir; mov[2]=max_dr; mov[3]=max_st; mov[4]=time; mov[5]=u; eeprom_read_block((void*)&mov, (const void*)&nvmov, 6); nr_pasi=eeprom_read_word(&nvnr_pasi); cursa=eeprom_read_word(&nvcursa); sei(); while(1) { TCCR0=speed; if(speed==0) { eeprom_write_word(&nvnr_pasi, nr_pasi); eeprom_write_block((const void*)&mov, (void*)&nvmov, 6); } if(cal==0){afis(cursa);} else{afis(1000);} } } void afis_1dig(uint8_t j) { switch(j) { case 0: PORTC|=(1< break; case 1: PORTC|=(1< break; case 2: PORTC|=(1< PORTD|=(1< break; case 3: PORTC|=(1< PORTD|=(1< break; case 4: PORTC|=(1< PORTD|=(1< break; case 5: PORTC|=(1< PORTD|=(1< break; case 6: PORTC|=(1< PORTD|=(1< break; case 7: PORTC|=(1< break; case 8: PORTC|=(1< PORTD|=(1< break; case 9: PORTC|=(1< PORTD|=(1< break; default: PORTC=0; PORTC|=(1< PORTD|=(1< break; } } void dig_select(uint8_t k) { switch(k) { case 1: PORTD|=(1< break; case 2: PORTD|=(1< break; } } void afis(int m) { if(m!=1000) { uint8_t j,k; j=m/10; k=m%10; PORTD=0; PORTC=0; dig_select(1); afis_1dig(j); _delay_us(3000); PORTD=0; PORTC=0; dig_select(2); afis_1dig(k); _delay_us(3000); } else { PORTD=0; PORTC=0; dig_select(1); PORTC|=(1< _delay_us(3000); PORTD=0; PORTC=0; dig_select(2); PORTC|=(1< PORTD|=(1< _delay_us(3000); }//end if(m==1000) } Schema inca nu o am desenata, revin si cu aceasta cat de repede posibil. In principiu, repet, este schema a doua din tutorialul lui Ole dar la care am adaugat un afisaj pe leduri cu 3 digiti (catod comun), polarizat folosind rezistente SMD de 151 de ohmi puse in serie cu fiecare anod. Link spre comentariu
Lantean Postat Octombrie 22, 2011 Partajează Postat Octombrie 22, 2011 Intampin si eu o problema legata de programarea Atmel...Folosesc Windows 7 x64 si as vrea sa stiu ce program sa folosesc pentru a programa Atmel cu un programator pe serial (de preferat) sau pe LPT.Am incercat Pony prog impreuna cu un programator pe serial ,cu care am si avut succes dar numai in XP pe un alt calculator. In Windows 7 am incercat si cu masini virtuale dar se pare ca nu se poate folosi portul serial in acest scop.Multumesc! Link spre comentariu
Vizitator mateiuli Postat Octombrie 23, 2011 Partajează Postat Octombrie 23, 2011 Eu am folosit avrdude cu programator serial pe W7 x64 si a mers foarte bine. Link spre comentariu
Lantean Postat Octombrie 23, 2011 Partajează Postat Octombrie 23, 2011 imi zici te rog si ce setari ai folosit? Nu ma prea descurc cu avr dude. Link spre comentariu
ole Postat Octombrie 23, 2011 Autor Partajează Postat Octombrie 23, 2011 http://sourceforge.net/projects/avrdudegui/ Asta e o interfata pentru AVRDude. E mai comod de lucrat asa decat din command line. Succes Link spre comentariu
Lantean Postat Octombrie 23, 2011 Partajează Postat Octombrie 23, 2011 Multumesc mult! Eu descarcasem ceva mai vechi , asta e mult mai usor de folosit. Link spre comentariu
Lantean Postat Octombrie 23, 2011 Partajează Postat Octombrie 23, 2011 Din pacate nu functioneaza cum trebuie cu programatorul serial, dupa ce il programez ori nu functioneaza cum trebuie ori arata numai patratele . Urmeaza sa il incerc cu cel de paralel, Sper sa am noroc. Scuze pentru dublul post. Link spre comentariu
Vizitator Spleshmen Postat Octombrie 29, 2011 Partajează Postat Octombrie 29, 2011 Am si eu o intrebare,se pot programa microcontrolerele ATmega328 cu ajutorul unei placi Arduino Uno ?Multumesc. Link spre comentariu
ole Postat Octombrie 29, 2011 Autor Partajează Postat Octombrie 29, 2011 ATMega328 este compatibil pin la pin cu ATMega8/48/88/168. Daca merge programat unul din ele atunci merge si Mega328. Link spre comentariu
boboBOBO Postat Decembrie 9, 2011 Partajează Postat Decembrie 9, 2011 Salut la toti, am si eu o intrebare de novice, mi-am facut un usbasp, l-am instalat, mi l-a recunoscut pc-ul insa nu reusesc sa gasesc un program cu care sa bag programul in atmega. Am descarcat PonyProg dar nu imi vede usbasp-ul .. ce program sa folosesc ? Multumesc Link spre comentariu
srdjan Postat Decembrie 9, 2011 Partajează Postat Decembrie 9, 2011 eu folosesc si recomand programul avrdudeel in sine este un program ce se foloseste din linia de comanda fiind de datoria ta sa-i dai argumentele necesare. totusi exista un ajutor in sensul ca exista un alt program numit avrdude-gui care iti afiseaza o fereastra de dialog din care alegi parametrii si avrdude-gui va da argumentele necesare lui avrdude cand executi. incearca-l ca e usor de folosit. Link spre comentariu
GeoMar Postat Decembrie 10, 2011 Partajează Postat Decembrie 10, 2011 Salut la toti, am si eu o intrebare de novice, mi-am facut un usbasp, l-am instalat, mi l-a recunoscut pc-ul insa nu reusesc sa gasesc un program cu care sa bag programul in atmega. Am descarcat PonyProg dar nu imi vede usbasp-ul .. ce program sa folosesc ? MultumescIncearca si SinaProg.Eu il folosesc impreuna cu un USBasp cumparat de la @oleSi este destul de "prietenos". Link spre comentariu
vasile eugen Postat Februarie 18, 2012 Partajează Postat Februarie 18, 2012 Buna seara.A realizat cineva programatorul din atasament?Am finalizat dar nu reusesc sa programez nimic cu el.Am testat in pony prog si Bascom dar nimic.O idee? Link spre comentariu
Spitfire Postat Februarie 18, 2012 Partajează Postat Februarie 18, 2012 Ca incepator intr-ale microcontrollerelor(pe care totusi le folosesc de câţiva ani) schema aceea imi pare prea complicată ...eu avand la dispozitie PC ce poseda si port serial si paralel, folosesc urmatorul programator(rog nu râdeţi de marea scula de programator, dar pt. incepatori eu zic ca e perfect, cu ATmega8 + Khazama merge absolut perfect, fara sa dea nici cea mai mica eroare): 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