× MSP430, Microcontrollori 16 bit Ultra Low Power

dove sbaglio ?

9 Anni 11 Mesi fa #1 da elpablito
dove sbaglio ? è stato creato da elpablito
Buona sera
Stavo cercando di giocare con il solito Nokia 5110 cercando di pilotarlo con il solito G2553
ho fatto al solito due file un NOKIA_LCD.c e un NOKIA_LCD.h oltre al main che si chiama LCD-NOK-G2553.c
Riporto solo gli include e la tabella perchè penso che la magagna sia quì.
***** LCD-NOK-G2553.c*************************

#include <msp430.h>
#include "NOKIA_LCD.h"

/*
* main.c
*/
è settato solo il clock e le porte

****** NOKIA_LCD.h*******************************
#ifndef NOKIA_LCD_H_
#define NOKIA_LCD_H

const char ASCII[][5] =
{
{0x00, 0x00, 0x00, 0x00, 0x00} // 20 [SPACE]
,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 !
,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 "
...................................
Tutta la tabella
......................
}

#define reset_low (P1OUT & !BIT1)
#define datain_low (P1OUT & !BIT2)
#define dc_low (P1OUT & !BIT3) // DC a 0
#define clk_low (P1OUT & !BIT4)
.....................................
Una serie di define
........................
i prototipi di funzione
.......................

#endif /* NOKIA_LCD_H_ */

*************NOKIA_LCD.c*********************

#include <msp430.h>
#include "NOKIA_LCD.h"

Le varie funzioni

Quando vado a compilare il linker si in..a e mi dice
#10056 symbol "ASCII" redefined: first defined in "./NOKIA_LCD.obj"; redefined in "./LCD-NOK-G2553.obj" LCD-NOK-G2553

Perchè non posso mettere la tabella in NOKIA_LCD.h

Si ringrazia
Paolo

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • elpablito
  • Platinum Member
  • Platinum Member
Di più
9 Anni 11 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic dove sbaglio ?
Ciao Paolo,

credo che il problema stia nel fatto che i seguenti nomi sono diversi:

#ifndef NOKIA_LCD_H_
#define NOKIA_LCD_H

Il secondo define si e' perso un underscore _

L'errore credo discenda da una doppia inclusione visto che le direttive controllano e definiscono due nomi diversi.


Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
9 Anni 11 Mesi fa #3 da elpablito
Risposta da elpablito al topic dove sbaglio ?
Buon giorno al Mauro
non avevo visto l'errore nel copia incolla. Le due istruzioni
#ifndef NOKIA_LCD_H_
#define NOKIA_LCD_H_
e il conseguente
#endif
Sono scritte di default dal sistema quando apri un file.h
Come prevedevo ho spostato i define e la tabella ASCII da NOKIA_LCD.h a NOKIA_LCD.C è ha compilato tutto regolarmente.
La tabella è in definitiva una variabile perchè qui non la posso definire nel .H, oppure devo definirla nel main.c e poi dichiararla come esterna nel .h ?
Normalmente includevo il file pippo.C nel mine.C e nel pippo.C includevo il pippo.h se fai questo con CCS di TI l'errore 10056 ti viene riproposto per ogni definizione di funzione che hai nel pippo.c.
Qui sembrerebbe che nel main.c debba includere il pippo.h, il pippo.c non è incluso da nessuna parte e in pippo.c devi includere nuovamente pippo.h Così funge ma è sperimentale perchè non riesco a trovare dove sono spiegate queste cose.
Ciao
Paolo

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • elpablito
  • Platinum Member
  • Platinum Member
Di più
9 Anni 11 Mesi fa #4 da elpablito
Risposta da elpablito al topic dove sbaglio ?
@ Mauro
Pur rimanendo la problematica del precedente post, sono riuscito a scrivere sulla bestiolina adesso devo solo dargli una lucidata e vorrei aggiungere qualche altra tavola di caratteri, ho visto che su arduino c'è l'imbarazzo della scelta.
Se l'esempio interessa fischia
Domanda: c'è un coso che da una parte gli butto un valore tra 0x00 e 0xFF e dall'altra varia la resistenza da 0 al max.
Saluti
Paolo

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • elpablito
  • Platinum Member
  • Platinum Member
Di più
9 Anni 11 Mesi fa #5 da Mauro Laurenti
Risposta da Mauro Laurenti al topic dove sbaglio ?
Ciao,

devo dire che il problema che hai incontrato sulla dichiarazione della variabile nell´Header file potrebbe essere una restrizione del compilatore, non credo che sia un vincolo del C ma non sono un esperto di sintassi.

Se hai scritto una biblioteca, tornerà certamente utile ad altri...quindi fischio! :)

Per l´ultima domanda, la risposta e´ si, e sono i potenziometri digitali. L´interfaccia e´ SPI o I2C. La microchip ne ha molti modelli li trovi in questo link .

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login