Progetti

   

Tutorial

   

Servizi

   

Sponsor  

   
Benvenuto, Ospite
Nome utente: Password: Ricordami

ARGOMENTO: Tachimetro e RPM

Tachimetro e RPM 8 Anni 9 Mesi fa #16

  • bgvsan
  • Avatar di bgvsan
  • Offline
  • Senior Boarder
  • Messaggi: 48
  • Karma: 0
Mi sono accorto che l'invio del singolo carattere funziona, il problema sta sull'invio della stringa (i char vengono inviati cosi : 'a')

la funzione della stringa è questa
void glcd_write_string(unsigned char col, unsigned char row,  char* stringa)
{
    switch(row)
    {case 0:
        col |= 0x80;
        break;
        case 1:
        col |= 0x90;
        break;
        case 2:
        col |= 0x88;
        break;
        case 3:
        col |= 0x98;
        default:
        col |= 0x80;
        break;
    }
        lcd_scrivi_comando(col);
        delay_ms(100);
        while(*stringa)
            lcd_scrivi_data(*stringa++);
        }

purtroppo non ho il debug per vedere cosa succede.. ma il ciclo while fa solo 1 iterazione.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Tachimetro e RPM 8 Anni 9 Mesi fa #17

  • bgvsan
  • Avatar di bgvsan
  • Offline
  • Senior Boarder
  • Messaggi: 48
  • Karma: 0
Ok diciamo che ho risolto..

facendo unsigned char i[] = "Hello World";

glcd_write_string(0,0,i);

viene scritta correttamente... sarebbe possibile evitare di dover allocare una variabile per scrivere?

Ovvero poter scrivere:
glcd_write_string(0,0,"Hello World");
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Tachimetro e RPM 8 Anni 9 Mesi fa #18

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Offline
  • Moderatore
  • Messaggi: 4677
  • Ringraziamenti ricevuti 561
  • Karma: 52
Ciao,

fai riferimento alla librerie GLCD che ho scritto (verisone 2.5, la versione 3.0 cambia leggermente con il supporto di XC8).
Vesdrai che ho creato due funzioni write_message_GLCD e write_string_GLCD.

Quando dichiari una variabile hai una variabile in RAM e la stringa e' caricata dalla RAM.
Quando scrivi :
glcd_write_string(0,0,"Hello World");

Hello World viene considerata una stringa costante caricata in flash per cui il codice richiesto per leggere i caratteri e' diverso e devi dichiarare il paramento in ingresso alla funzione come rom (per il C18).

Saluti,

Mauro
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Moderatori: Mauro Laurenti
Powered by Forum Kunena
   
© LaurTec 2006-2015