Jump to content
ELFORUM - Forumul electronistilor

Intrerupere PIC18F4520


Guest bufferzone

Recommended Posts

Guest bufferzone

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 to comment
  • Replies 3
  • Created
  • Last Reply

Top Posters In This Topic

  • Liviu M

    1

  • Mircea

    1

Top Posters In This Topic

Posted Images

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 to comment

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 to comment
Guest bufferzone

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!

post-71000-139829571142_thumb.jpg

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines