Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

rs485 e pic16f877

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: rs485 e pic16f877

Messaggioda Foto UtenteWALTERmwp » 15 mar 2015, 21:57

Se puoi e vuoi comunicare utilizzando la porta 232 del display va bene, se non credi ci siano controindicazioni.
In tal caso la libreria mi pare possa soddisfare le tue necessità.
sorecaro ha scritto:Forse dovrei usare questa libreria in successione per inviare la stringa
per quanto riguarda il suo utilizzo, in fase di invio, verso il display, il codice si può sintetizzare in un loop come questo:
Codice: Seleziona tutto
//sezione dichiarazioni
unsigned char dato;
unsigned char stringa[numero_byte];
UART1_Init(4800);                         // initialize UART1 module
Delay_ms(100);

//sezione inizializzazioni
stringa[0]=0x02; //(stx)
stringa[1]=0x01; //(id)
stringa[2]=0x03; //(giornale elettronico)
stringa[3]=0x18; //(tabella 7x5)
stringa[4]=0x31; //("1", dato)
stringa[5]=0x32; //("2", dato)
stringa[6]=0x33; //("3", dato)
stringa[7]=0x34; //("4", dato)
stringa[8]=0x35; //("5", dato)
stringa[9]=0x41; //("A", dato)
stringa[10]=0x42; //("B", dato)
stringa[11]=0x43; //("C", dato)
stringa[12]=0x44; //("D", dato)
stringa[13]=0x45; //("E", dato)
stringa[14]=0x02; //(start, ?)
stringa[15]=0x00; //(null)


  main()
  {

   // ... qui altro codice prima


    if ( ... ) // test condizione che ti autorizza a trasmettere
    {         
      for(pos=0; pos<=15; ++pos) //loop
      {
        dato=stringa[pos]; //prendi un byte della stringa
        UART1_Write(dato); //e lo trasmetti
      }     
    }

    // ... qui altro codice dopo

  }


E' solo un esempio molto semplice che ti dovrebbe dare un'idea.
Sulla base di questo puoi procedere ad articolare la sintassi, oltre che ottimizzarla, e puoi inserire i controlli per una corretta e coerente comunicazione col tuo display (del quale non hai ancora riportato alcun riferimento).

Non mi è ancora chiaro come deve essere composto il messaggio o meglio, questo
sorecaro ha scritto:0x03(giornale elettronico)0x18(tabella 7x5)
ad esempio, non so cosa significhi ma se per te ha un senso sei a posto; sono solo due byte che evidentemente forniscono la direttiva necessaria (riferimenti alla memoria del display, modalità di visualizzazione, ... ).

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[12] Re: rs485 e pic16f877

Messaggioda Foto Utentesorecaro » 15 mar 2015, 23:26

Walter purtroppo le informazioni che ho del display sono solo quelle, domani cercherò di reperirne altre.
Grazie per l'interesse e l'aiuto.
Secondo te meglio usare il protocollo rs232 oppure rs485??
Vorrei approfondire l'argomento
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

0
voti

[13] Re: rs485 e pic16f877

Messaggioda Foto UtenteWALTERmwp » 16 mar 2015, 0:33

sorecaro ha scritto:Secondo te meglio usare il protocollo rs232 oppure rs485?
intanto credo che definirlo protocollo sia un modo di caratterizzazione errato.
E' "solo" una tecnica di utilizzo di trasmissione del supporto elettrico differente.
L'esposizione richiederebbe un po di spazio ma, in estrema sintesi, scriverei che la prima (232) presenta dei livelli di tensione (dei segnali) che possono andare da -12 Vcc a + 12 Vcc e, impiegata per comunicare tra due dispositivi, può avvalersi di tre o più fili; la seconda (485) basa invece l'interpretazione del segnale logico sulla differenza di tensione applicata e rilevata tra due fili con il vantaggio di risultare più immune ai disturbi per quanto concerne l'efficienza della trasmissione (e ricezione) e consentire la connessione (elettrica e logica) di più di due dispositivi (collegamento multi-punto).
L'una, rispetto all'altra, richiedono un hardware di interfaccia diverso (vedi ad esempio appunto i circuiti integrati 232 e 485).
Se cerchi in rete trovi molto materiale, come per esempio questo, a valenza didattica ma anche qui su EY se ne è scritto in diversi thread.
Nel tuo caso, forse, la scelta, per quanto ho capito, potrebbe essere condizionata più dall'opportunità di utilizzare del codice di riferimento già esistente più che da altre necessità; ma questa è solo una considerazione.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[14] Re: rs485 e pic16f877

Messaggioda Foto Utentesorecaro » 16 mar 2015, 21:03

Ho seguito il tuo consiglio e riesco a mandare la stringa( per ora ho solo simulato, il collegando con il display lo farò giovedi).
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

0
voti

[15] Re: rs485 e pic16f877

Messaggioda Foto UtenteWALTERmwp » 17 mar 2015, 0:11

sorecaro ha scritto:riesco a mandare la stringa
Ottimo Foto Utentesorecaro.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[16] Re: rs485 e pic16f877

Messaggioda Foto Utentesorecaro » 17 mar 2015, 17:13

Salve, ho scritto queste 2 righe di codice per prova ( controllato con oscilloscopio, ok)
Codice: Seleziona tutto
unsigned char stringa1[3];
unsigned char stringa2[1];





void main() {

stringa1[0]=0x02;         //start
stringa1[1]=0x01;         // indrizzo diaplay
stringa1[2]=0x1F;         // no giornale elettronico
stringa1[4]=0x18;         //tabella 7x5
stringa2[0]=0x02;         //start
stringa2[1]=0x00;         // fine trasmissione


 

  UART1_Init(9600);
  Delay_ms(200);

  while (1) {
  UART1_Write_Text(stringa1);
  UART1_write_text("ciao");
   UART1_Write_Text(stringa2);
   delay_ms(250);
                            }
    }


Può andare bene???
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

0
voti

[17] Re: rs485 e pic16f877

Messaggioda Foto UtenteWALTERmwp » 17 mar 2015, 17:22

Errori:
Codice: Seleziona tutto
unsigned char stringa1[3]; // NO
unsigned char stringa1[4]; // SI

stringa1[4]=0x18;         //tabella 7x5 NO
stringa1[3]=0x18;         //tabella 7x5 SI
Per il resto dipende da quello che vuoi spedire.
La funzione
Codice: Seleziona tutto
UART1_Write_Text
non l'avevo letta quindi non so se è impiegata correttamente, ma a questo punto penso di si.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

1
voti

[18] Re: rs485 e pic16f877

Messaggioda Foto Utentesorecaro » 17 mar 2015, 17:35

Grazie per le correzioni :-) speriamo che funzioni
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

0
voti

[19] Re: rs485 e pic16f877

Messaggioda Foto UtenteWALTERmwp » 17 mar 2015, 22:45

sorecaro ha scritto:Grazie per le correzioni :-)
prego, figurati.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8990
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[20] Re: rs485 e pic16f877

Messaggioda Foto Utentesorecaro » 22 mar 2015, 21:49

Domani finalmente potrò fare la prova del nove e vedere se tutto funziona ma......
è sorto un dubbio. La stringa che invio posso inviarla in modo continuo oppure devo avere una pausa ben precisa?
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti