- Messaggi: 353
- Ringraziamenti ricevuti 8
×
MSP430, Microcontrollori 16 bit Ultra Low Power
LCD MSP430 I2C
10 Anni 11 Mesi fa #1
da elpablito
LCD MSP430 I2C è stato creato da elpablito
Buon giorno
Questa volta invece di porre,come al solito, un nuovo interrogativo, vorrei proporre una soluzione
Il problema che mi ponevo era quello di utilizzare un cip a 16 oppure 20 pins per pilotare i soliti LCD
usando il minor numero possibile di pins e la minor quantità di memoria così da avere un pò di risorse disponibili per il resto dell'applicazione.
I files allegati sono per un LCD 2x16, (sto facendo un equivalente anche per il 4x40) pilotato da un MSP430.
Non pretendo di aver inventato niente di nuovo, ho solo sistemato una libreria per gli LCD a 16 caratterie adoperato un pezzo di un esempio di mamma TI.
Ho chiaramente tagliato tutto ciò che non mi serviva, compilato il programma è circa 1350 byte e si utilizzano solo 4 pins. Il main,a parte la configurazione, è solo allo scopo visualizzare qualcosa sull' LCD quindi poi da sforbiciare.
Non vuole essere la soluzione universale, ma penso possa servire di spunto per eventuali migliorie di chi vuole cimentarsi.
Se servono ulteriori notizie fatemelo sapere.
Saluti Paolo
Questa volta invece di porre,come al solito, un nuovo interrogativo, vorrei proporre una soluzione
Il problema che mi ponevo era quello di utilizzare un cip a 16 oppure 20 pins per pilotare i soliti LCD
usando il minor numero possibile di pins e la minor quantità di memoria così da avere un pò di risorse disponibili per il resto dell'applicazione.
I files allegati sono per un LCD 2x16, (sto facendo un equivalente anche per il 4x40) pilotato da un MSP430.
Non pretendo di aver inventato niente di nuovo, ho solo sistemato una libreria per gli LCD a 16 caratterie adoperato un pezzo di un esempio di mamma TI.
Ho chiaramente tagliato tutto ciò che non mi serviva, compilato il programma è circa 1350 byte e si utilizzano solo 4 pins. Il main,a parte la configurazione, è solo allo scopo visualizzare qualcosa sull' LCD quindi poi da sforbiciare.
Non vuole essere la soluzione universale, ma penso possa servire di spunto per eventuali migliorie di chi vuole cimentarsi.
Se servono ulteriori notizie fatemelo sapere.
Saluti Paolo
Si prega Accedi o Crea un account a partecipare alla conversazione.
- elpablito
- Autore della discussione
- Platinum Member
Riduci
Di più
10 Anni 11 Mesi fa #2
da StefA
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Risposta da StefA al topic LCD MSP430 I2C
grazie per aver condiviso.
Ste
Ste
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Si prega Accedi o Crea un account a partecipare alla conversazione.
- StefA
- Moderator
Riduci
Di più
- Messaggi: 1222
- Ringraziamenti ricevuti 104
10 Anni 11 Mesi fa #3
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic LCD MSP430 I2C
mi associo a Stefano: grazie per la condivisione
Marcello
Marcello
Chi vola vale, chi vale vola, chi non vola è un vile
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Moderator
Riduci
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
10 Anni 11 Mesi fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic LCD MSP430 I2C
Ottimo,
l'esempio torna utile sia come applicazione I2C, uso dell'integrato PCF8574 e il modulo LCD.
...tre piccioni con una fava!
grazie per aver condiviso.
Saluti,
Mauro
l'esempio torna utile sia come applicazione I2C, uso dell'integrato PCF8574 e il modulo LCD.
...tre piccioni con una fava!
grazie per aver condiviso.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
10 Anni 11 Mesi fa #5
da elpablito
Risposta da elpablito al topic LCD MSP430 I2C
Al solito dimentico sempre qualche cosa.
Chi volesse 'Abarthizzare' il tutto può modificare le due impostazioni seguenti:
if (CALBC1_12MHZ==0xFF) // If calibration constants erased
{
while(1); // do not load, trap CPU!!
}
DCOCTL = 0; // Select lowest DCOx and MODx settings
BCSCTL1 = CALBC1_12MHZ; // Set DCO
DCOCTL = CALDCO_12MHZ;
USICKCTL = USIDIV_4+USISSEL_2+USICKPL; // Setup USI clocks: SCL = SMCLK/16
Sarebbe gradito il commento del Mauro su questo:
SMCLK non avendo usato alcun prescaler coincide con DCOCLK. USIDIV_4 divide per 16. SMCLW/16 =750k USI clock = 750K !!! E pur si muove.
Altra cosa che dimenticavo è che nella routine dell'interrupt viene adoperato il led rosso della LaunchPad. Se è vero che il led non serve ad un bottone,è altrettanto vero che ci si potrebbe attaccare con una routine di errore. Se c'è qualcuno che vuole cimentarsi ben venga.
I soliti saluti
Paolo
Chi volesse 'Abarthizzare' il tutto può modificare le due impostazioni seguenti:
if (CALBC1_12MHZ==0xFF) // If calibration constants erased
{
while(1); // do not load, trap CPU!!
}
DCOCTL = 0; // Select lowest DCOx and MODx settings
BCSCTL1 = CALBC1_12MHZ; // Set DCO
DCOCTL = CALDCO_12MHZ;
USICKCTL = USIDIV_4+USISSEL_2+USICKPL; // Setup USI clocks: SCL = SMCLK/16
Sarebbe gradito il commento del Mauro su questo:
SMCLK non avendo usato alcun prescaler coincide con DCOCLK. USIDIV_4 divide per 16. SMCLW/16 =750k USI clock = 750K !!! E pur si muove.
Altra cosa che dimenticavo è che nella routine dell'interrupt viene adoperato il led rosso della LaunchPad. Se è vero che il led non serve ad un bottone,è altrettanto vero che ci si potrebbe attaccare con una routine di errore. Se c'è qualcuno che vuole cimentarsi ben venga.
I soliti saluti
Paolo
Si prega Accedi o Crea un account a partecipare alla conversazione.
- elpablito
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 353
- Ringraziamenti ricevuti 8
Moderatori: Mauro Laurenti, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.