- Messaggi: 48
- Ringraziamenti ricevuti 0
Tachimetro e RPM
- bgvsan
- Autore della discussione
- Anziano Utente
-
Less
Di più
13 Anni 6 Mesi fa #16
da bgvsan
Risposta da bgvsan al topic Tachimetro e RPM
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
purtroppo non ho il debug per vedere cosa succede.. ma il ciclo while fa solo 1 iterazione.
la funzione della stringa è questa
Code:
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.
Si prega Accesso o Crea un account a partecipare alla conversazione.
- bgvsan
- Autore della discussione
- Anziano Utente
-
Less
Di più
- Messaggi: 48
- Ringraziamenti ricevuti 0
13 Anni 6 Mesi fa #17
da bgvsan
Risposta da bgvsan al topic Tachimetro e RPM
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");
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");
Si prega Accesso o Crea un account a partecipare alla conversazione.
13 Anni 6 Mesi fa #18
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Tachimetro e RPM
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 :
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
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 :
Code:
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
Si prega Accesso o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
