ole Postat Decembrie 8, 2009 Partajează Postat Decembrie 8, 2009 Aici intrebati ce nu intelegeti, puneti secvente de cod cu incercarile voastre si cei mai experimentati va ajuta. Link spre comentariu
ole Postat Decembrie 13, 2009 Autor Partajează Postat Decembrie 13, 2009 Sunt incepator in programare avr....( C ) si acum ma joc cu un mega16 si 5 leduri.problema mare e ca eu am sarit peste niste pasi am inceput exact cu ce e mai frumos(practica) am ajuns la instruciunea FOR si nu prea stiu cum sa o aplic si unde, am inteles eu c-am ce ar face. Daca ma poate ajuta cineva as fi recunoscator while (1) { { PORTD.0=1; delay_ms(500); PORTD.0=0; delay_ms(500); } } for(n=0 ;n>5; n++); nu stiu unde trebuie pusa ca sa aprind un led de 5 ori si pe urma sa stea stins sau aprins cum o fi Sunt incepator in programare avr....( C ) si acum ma joc cu un mega16 si 5 leduri.problema mare e ca eu am sarit peste niste pasi am inceput exact cu ce e mai frumos(practica) am ajuns la instruciunea FOR si nu prea stiu cum sa o aplic si unde, am inteles eu c-am ce ar face. Daca ma poate ajuta cineva as fi recunoscator while (1) { { PORTD.0=1; delay_ms(500); PORTD.0=0; delay_ms(500); } } for(n=0 ;n>5; n++); nu stiu unde trebuie pusa ca sa aprind un led de 5 ori si pe urma sa stea stins sau aprins cum o fi sa incepem cu inceputul: 1. probabil headerele si functia main le-ai scris deja daca nu va trebui sa le scrii inainte de codul pe care l-ai postat. 2. in while ai un grup { } inutil. nu influenteaza codul dar e pus degeaba si poate fi derutant pentru incepatori. 3. for-ul este pus in afara while-ului si are ; dupa el deci nu face nimic util in afara de a ocupa 5 cicluri de procesor, asta in cazul in care ar fi corect scris. asa cum e scris acum nu intra in for deoarece n=0 si nu e mai mare ca 5. un cod corect ar arata ceva de genul: #include <avr/io.h>#include <util/delay.h>int main(){DDRD|=(1<<PD0); while(1) {PORTD|=(1<<PD0); _delay_ms(500); PORTD&=~(1<<PD0); _delay_ms(500); } return 0;}sau daca vrei sa clipeasca de 5 ori apoi sa stea aprins: #include <avr/io.h>#include <util/delay.h>int main(){DDRD|=(1<<PD0); for(uint8_t i=0;i<5;i++) {PORTD|=(1<<PD0); _delay_ms(500); PORTD&=~(1<<PD0); _delay_ms(500); } PORTD|=(1<<PD0); while(1); return 0;} Link spre comentariu
lorik199 Postat Decembrie 15, 2009 Partajează Postat Decembrie 15, 2009 vin cu o problema... nu se poate modifica programul din acest proiect pt sa se putea masura pana la 50-100 V vroiam pt a-l folosi la o sursa reglabila cu tensiune mai mare P.S : as dori daca se ofera cineva sa modifice codul sa o faca pe varianta cu lcd de 1x16(din astea am) multumesc Link spre comentariu
nana Postat Decembrie 15, 2009 Partajează Postat Decembrie 15, 2009 Din pacate nu se poate pentru ca tipu da doar hex-ul gata compilat nu si codul in sine iar 2 trebuiesc facute modificari la toata schema in principal la etaju de putere se mai pune in paralel un tranzistor de putere si se redimensioneaza etajul de comanda a tranzistorilor folositi in bucla de stabilizare. In principiu se modifica din schema lu ala ceea de digitala R4-R7 si respectiv R2-R8 dar na acolo vin niste calcule facute si in acel proiect eu nu am gasit si partea de analogic ca sa iti zic mai multe. Link spre comentariu
lorik199 Postat Decembrie 15, 2009 Partajează Postat Decembrie 15, 2009 ok, nu este nici o problema, am crezut ca vor trebui modificate doar cateva linii de program Link spre comentariu
fubiansky Postat Decembrie 29, 2009 Partajează Postat Decembrie 29, 2009 Buna seara, Am un sistem 5.1 genius in care s-a ars controleru (SN8P2714SB) si negasind acest controler incerc sa-l inlocuiesc cu Atmega8. In mare am reusit sa scriu programul problema aparand la reglarea volumului (se foloseste un PT2258). Exemplu: D7->E9 D7->E8 D7->E7 D7->E6 D7->E5 D7->E4 D7->E3 D7->E2 D7->E1 D7->E0 D6->E9 D6->E8 D6->E7 D6->E6 D6->E5 D6->E4 D6->E3 D6->E2 D6->E1 D6->E0 etc etc. Cand apas pe buton pentru a mari volumul acesta creste uniform pana ajunge la D7->E0, D6->E0 etc unde se simte o scadere a volumului apoi isi revine continuand sa creasca uniform. Va rog sa ma ajutati in gasirea erori. Am atasat datasheetul PT-ului si programul scris in bascom. Link spre comentariu
danzup Postat Decembrie 30, 2009 Partajează Postat Decembrie 30, 2009 '---------------------Modificare volum---------------------'Sub Vol_up:Decr VolumaWaitms Vol_spIf Voluma < &HE0 ThenVoluma = &HE9End IfIf Voluma = &HE9 ThenDecr VolumbEnd IfIf Volumb < &HD0 ThenVolumb = &HD0End IfI2cstartI2cwbyte &H88I2cwbyte VolumaI2cwbyte VolumbI2cstopWaitms 10End Sub'---------------------Modificare volum---------------------'Sub Vol_dn:Incr VolumaWaitms Vol_spIf Voluma > &HE9 ThenVoluma = &HE0End IfIf Voluma = &HE0 ThenIncr VolumbEnd IfIf Volumb > &HD7 ThenVolumb = &HD7End IfI2cstartI2cwbyte &H88I2cwbyte VolumaI2cwbyte VolumbI2cstopWaitms 10End Sub'-------------------------------------- am scos ce era in plus sau redundant si acum trebuie sa mearga ! Link spre comentariu
danzup Postat Decembrie 30, 2009 Partajează Postat Decembrie 30, 2009 Buna seara,Am un sistem 5.1 genius in care s-a ars controleru (SN8P2714SB) si negasind acest controler incerc sa-l inlocuiesc cu Atmega8.In mare am reusit sa scriu programul problema aparand la reglarea volumului (se foloseste un PT2258).Cand apas pe buton pentru a mari volumul acesta creste uniform pana ajunge la D7->E0, D6->E0 etc unde se simte o scadere a volumului apoi isi revine continuand sa creasca uniform.Va rog sa ma ajutati in gasirea erori.Am atasat datasheetul PT-ului si programul scris in bascom.Daca tot finalizezi proiectul fa un nou thread si pune si schema si softul ca sa -si faca cei interesati modificarea la pocnitorile astea enshpe in unu pe viitor. Link spre comentariu
fubiansky Postat Ianuarie 4, 2010 Partajează Postat Ianuarie 4, 2010 Mai intai sa-l fac sa functioneze apoi voi face un thread pe tema asta.Nu am reusit nimic...tot asa "in trepte" merge.Am incercat cu oscilatorul intern de la 1MHz pana la 8MHz si tot nu a vrut.Am setat si pe oscilator extern si tot nu a mers pana cand am atins cu degetul in zona cristalului si tot montajul s-a oprit.L-am repornit si a functionat corect dar cand am luat alimentarea a revenit la vechiul obicei.Danzup...daca scot acea parte din cod cand ajunge la D0 -> E0 se muta la D0 -> E9 si tot asa.(creste si scade volumul)Atasez mai jos schema si ultima varianta de cod poate nu am facut ceva bine. Link spre comentariu
nickrvl Postat Ianuarie 7, 2010 Partajează Postat Ianuarie 7, 2010 Am un Atmega8 cu LCD. Cum fac in Bascom sa-mi apara un caracter facut de mine, caracterul l-am facut cu LCD designer iara comanda ar trebui sa fie asta:Deflcdchar 1 , 4 , 10 , 21 , 31 , 4 , 14 , 10 , 10nu reusesc sa-l fac sa apara pe ecran.Unde gresesc? Link spre comentariu
danzup Postat Ianuarie 7, 2010 Partajează Postat Ianuarie 7, 2010 Am un Atmega8 cu LCD. Cum fac in Bascom sa-mi apara un caracter facut de mine, caracterul l-am facut cu LCD designer iara comanda ar trebui sa fie asta:Deflcdchar 1 , 4 , 10 , 21 , 31 , 4 , 14 , 10 , 10nu reusesc sa-l fac sa apara pe ecran.Unde gresesc?Lcd Chr(1)si o sa apara ! Link spre comentariu
nickrvl Postat Ianuarie 7, 2010 Partajează Postat Ianuarie 7, 2010 Lcd Chr(1) si o sa apara ! Locate 1 , 7 Lcd Chr(1) Deflcdchar 1 , 4 , 10 , 21 , 31 , 4 , 14 , 10 , 10 Merge, multumesc. Link spre comentariu
petraru86 Postat Februarie 17, 2010 Partajează Postat Februarie 17, 2010 Fac un proiect ,...un fel de robot cu ATmega16 programarea am facut-o cu o placa de test mikroelectronica se numeste easyAVR4 , pe aceasta placa am testat programul si merge perfect iar cand il pun p robot imi da 5 v pe ambele sensuri ale motorului si nu stiu ce sa ma mai fac.Aveti vre-o idee?? Link spre comentariu
nana Postat Februarie 23, 2010 Partajează Postat Februarie 23, 2010 Pai verifica daca placa corespunde ok din punct de vedere electronic cu schema !! sa nu fie busit vre-un pin sau ceva de la controler. 2 se poate ca tu pe placa aia sa ai un bootloader si pe controlerul virgin sa nu ai asa ceva(dar asta nu prea ar putea sa iti afecteze programu care este incarcat la alta adresa in memorie). Link spre comentariu
yo6pir Postat Februarie 25, 2010 Partajează Postat Februarie 25, 2010 Salutare baieti, Am si eu o nedumerire legata de un program scris in Bascom, pentru un MCU Atmega8. Este vorba de o comanda a 4 sub-meniuri cu ajutorul unui buton. Am un singur buton disponibil. Codul merge bine si arata asa:------------------------------------------------------------------------------------Buton = Pinc.2If Buton = 0 Then Waitms 40If Buton = 0 Then Incr NrBitwait Pinc.2 , SetEnd IfEnd If If Nr = 5 Then Nr = 1 End IfSelect Case Nr Case 1 : Call Submeniu1 Case 2 : Call Submeniu2 Case 3 : Call Submeniu3 Case 4 : Call Submeniu4End Select------------------------------------------------------------------------------Problema care o supun atentiei este adaugarea unei rutine care sa-mi citeasca apasarea butonului (acelasi!) un timp de 5 secunde (sa zicem...) si daca se intampla acest lucru sa trec la un "Submeniu5". Pare simplu (pentru cei care stiu) dar eu nu am reusit sa-l fac pana acuma. Daca stie cineva o solutie, multumesc anticipat! 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