Progetti

   

Tutorial

   

Servizi

   

Sponsor  

   
Benvenuto, Ospite
Nome utente: Password: Ricordami
  • Pagina:
  • 1
  • 2
  • 3

ARGOMENTO: librerie laurtec per diplay hd44780

librerie laurtec per diplay hd44780 9 Anni 8 Mesi fa #1

  • Raban
  • Avatar di Raban
  • Offline
  • Fresh Boarder
  • Messaggi: 19
  • Karma: 0
siccome la libreria funziona , volevo convertirla per un dspic30f4011 ...

In linea teorica basta solo cambiare gli header mettendo quello giusto per il pic in uso e ricompilare ?
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re: librerie laurtec per diplay hd44780 9 Anni 8 Mesi fa #2

  • Raban
  • Avatar di Raban
  • Offline
  • Fresh Boarder
  • Messaggi: 19
  • Karma: 0
Cerchiamo di andare piu' nel dettaglio ...

questo e' un estratto del sorgente di Laurenti
 
//************************************************************
//                  WriteStringLCD  Implementation
//************************************************************
void WriteStringLCD(const rom char *buffer) {
 
	 // Write data to LCD up to null
    while(*buffer) {
 
	    // Write character to LCD
	    WriteCharLCD(*buffer);  
	    // Increment buffer
	    buffer++;              
   }
}
 

C30 non mi accetta le direttive const rom quindi ho corretto in :
 
//************************************************************
//                  WriteStringLCD  Implementation
//************************************************************
void WriteStringLCD( char *buffer) {
 
	 // Write data to LCD up to null
    while(*buffer) {
 
	    // Write character to LCD
	    WriteCharLCD(*buffer);  
	    // Increment buffer
	    buffer++;              
   }
}

Corretto ?

Il compilatore me lo compila e il codice gira , sul display pare tutto ok
Ultima modifica: 9 Anni 8 Mesi fa da Raban.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re: librerie laurtec per diplay hd44780 9 Anni 8 Mesi fa #3

  • Raban
  • Avatar di Raban
  • Offline
  • Fresh Boarder
  • Messaggi: 19
  • Karma: 0
il problema invece sta nella seguente funzione :
 
//************************************************************
//                  WriteIntLCD  Implementation
//************************************************************
void WriteIntLCD(int value, char number_of_digits){
 
	// The array size is 5 plus end of string \0
	unsigned char convertedInt [6];
 
	// Index used to shift to the right the digit
	char index; 
 
	// Integer is converted to string
	itoa (value, (char*) convertedInt);	
 
	if (number_of_digits >0 ) {
 
		convertedInt[number_of_digits] = '\0';
 
		// Shift the digit to the right removing the empty one
		while (!isdigit(convertedInt[number_of_digits-1])) {
 
			for (index = number_of_digits-1; index > 0; index--){
				convertedInt[index] = convertedInt[index-1];
				convertedInt[index-1] = ' ';
			}							
		}	
	}
 
	WriteVarLCD (convertedInt);
 
}

Che serve a convertire un int in stringa ed a stampare la stringa .

Cosi' com'e' non ne vuole sapere di funzionare , non mi da errori di compilazione , pero' se la uso
mi manda a pallino il micro

Secondo me l'errore sta qua :
itoa (value, (char*) convertedInt);	
La notazione corretta non dovrebbe essere la seguente ?
itoa (value, (char *convertedInt), 10);	
Forse itoa non e' supportata dal c30 ?
Ultima modifica: 9 Anni 8 Mesi fa da Raban.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re: librerie laurtec per diplay hd44780 9 Anni 8 Mesi fa #4

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

le librerie LCD sono quasi standard C ma richiedono qualche accorgimento.
L'header file e il nome delle porte devono essere cambiati in funzione del microcontrollore utilizzato sia esso Microchip che non.

l'area rom e' un altro punto. Scrivere nella memoria flash può variare da microcontrollore a microcontrollore.
La modifica che hai fatto ha in realtà trasformato il puntatore in un char posizionato in RAM a meno che non avvenga un casting.

la funzione itoa e' una funzione standard C ma puo' essere implementata in maniera diversa.
Per i dsPIC hai la seguente libreria e funzione

Include: <libq.h>
Prototype: void _itoaQ15(_Q15 x, char *s);

trovi maggiori dettagli nella directory docs del C30 (16-Bit_Language_Tools_Libraries_51456G.pdf)

realizzare una propria funzione itoa non e' comunque complicatissimo.

Saluti,

Mauro
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Re: librerie laurtec per diplay hd44780 9 Anni 8 Mesi fa #5

  • Raban
  • Avatar di Raban
  • Offline
  • Fresh Boarder
  • Messaggi: 19
  • Karma: 0
ho risolto senza sconvolgere nulla , stasera posto il codice modificato
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
  • Pagina:
  • 1
  • 2
  • 3
Moderatori: Mauro Laurenti, Matteo Garia
Powered by Forum Kunena
   
© LaurTec 2006-2015