Vizitator bufferzone Postat Ianuarie 29, 2013 Partajează Postat Ianuarie 29, 2013 Salut,Nu stiu daca am facut bine deschizand un nou subiect, insa imi cer scuze daca acest lucru nu este ok. Va informez dinainte ca eu nu sunt un electronist, meseria mea este de analist programator. Proiectul pa care lucrez doar la partea de programare este urmatorul: 1. PIC16F877A - conectat la senzori de miscare Paradox 460 - comunica cu un alt microcontroler PIC18F4520 si trimite nr. zonei care a fost activata 2. PIC18F4520 - un telefon Ericsson T230 caruia ii trimit comenzi AT pentru trimiterea de SMS prin UART - Soft_UART prin care comunic cu PIC16F877A. - DS18B20 - afisare temperatura pe LCDProblema este ca aceasta comanda "byte_read = Soft_UART_Read(&error);" blocheaza si asteapta sa primeasca date iar temperatura nu mai este afisata.Va rog ajutati-ma si pe mine cu un sfat pentru a rezolva aceasta problema.Mentionez ca proiectul este al tatalui meu, el este ing. insa nu stie programare si nici sa foloseasca un calculator.In speranta ca se va gasi cineva sa ma ajute, doresc sa va multumesc si sa va urez mult spor.O zi faina! Link spre comentariu
Mircea Postat Ianuarie 29, 2013 Partajează Postat Ianuarie 29, 2013 Ce compilator folosesti? Pare a fi mikroC, te sfatuiesc sa incerci forumul Mikroelektronika. Sunt useri f experimentati si care ajuta daca explici bine ce vrei. Link spre comentariu
Liviu M Postat Ianuarie 29, 2013 Partajează Postat Ianuarie 29, 2013 O eventuala idee ar fi sa folosesti un pin suplimentar prin care 877 sa semnalizeze la 4520 ca transmite. Eventual il conectezi la o intrare cu intrerupere, ca sa nu ratezi vreun mesaj.O alta idee ar fi sa folosesti uart-ul hard pentru comunicatie pic-pic si pe cel soft pentru pic-tel. In felul asta poti folosi intreruperile la receptie in 4520.PS Cand ceri ajutor, ca sa primesti raspunsuri cat mai utile e bine sa dai cat mai multe informatii. In cazul de fata compilatoruil folosit, eventual o bucata de cod buclucasa, eventual o bucata de schema... Link spre comentariu
Vizitator bufferzone Postat Februarie 1, 2013 Partajează Postat Februarie 1, 2013 Salut, Am reusit sa gasesc raspunsul la problema mea, acum, picul nu mai ramane blocat in procesul de primire date pe Soft_Uart. Compilatorul pe care il folosesc este MikroC. Mai jos postez ce am gasit pe net poate intereseaza si pe alte persoane. Functia Interrupt: void interrupt() { if (counter >= 1) { Soft_UART_Break(); // Pauza Soft_Uart counter = 0; // reset counter } else{ counter++; // increment counter INTCON.T0IF = 0; // Clear Timer0 overflow interrupt flag }}void main{ T0CON = 0x01; ///0x04; ////0x07; // Setare plescaler TMR0H = (65536-156) >> 8; TMR0L = (65536-156) & 0xFF; INTCON.T0IE = 1; // Enable T0IE T0CON.TMR0ON = 1;INTCON.GIE = 1;INTCON.T0IE = 1;byte_read = Soft_UART_Read(&error);// Inainte picul se oprea aici si astepta pana primea date, toate instrunctiunile care urmau nu mai erau executate asteptanduse primirea de date prin Soft_UART_Read// INTCON.GIE = 0;if (!error){ .. Codul dvs ...}}while(1); Atasez si schema mai jos. Multumesc pentru sfaturile dvs. si va urez mult spor in activitate. O zi faina! 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