Pagina 1 di 3

porta seriale e PIC

MessaggioInviato: 26 apr 2012, 11:46
da mattia281193
ragazzi è da poco che lavoro in c .
voglio visualizzare su PC il valore a 10 bit o anche in esadecimale, basta che si visualizza un valore che cambia in base alla lettura dell'ADC su hyper terminal.
il listato che ho pensato è questo
Codice: Seleziona tutto
unsigned int dato;

void main() {
ADCON1 = 0x80; // Conf. Ingr. Analog.
TRISA = 0xFF; // PORTA = input
TRISB = 0x00;
PORTB = 0x00;

Uart1_Init(9600);
while(1) {
dato = Adc_Read(0);
Uart1_Write(dato);
Delay_ms(20);
};
}


il PIC è un 16f876a che lavora a 8MHZ :-) funzionerà??? :mrgreen:

Re: porta seriale e PIC

MessaggioInviato: 26 apr 2012, 11:50
da Paolino
Sì, dovrebbe funzionare. Tieni però conto che con la funzione:

Codice: Seleziona tutto
Uart1_Write(dato);


Invii un dato numerico, non una stringa. Se vuoi inviare una stringa, dovrai effettuare una conversione del dato da int a stringa e inviarlo come caratteri.

Ciao.

Paolo.

P.S. Stai usando MikroC PRO?

Re: porta seriale e PIC

MessaggioInviato: 26 apr 2012, 11:57
da mattia281193
gentilmente potresti farmi un usempio? :D

Re: porta seriale e PIC

MessaggioInviato: 26 apr 2012, 12:08
da TardoFreak
In QUESTO ARTICOLO ne trovi molti di esempi.

Re: porta seriale e PIC

MessaggioInviato: 26 apr 2012, 12:23
da Paolino
Se stai usando MikroC PRO, dovrai spuntare la libreria "Conversion".

Un codice che dovrebbe funzionare è il seguente:
Codice: Seleziona tutto
void main(void)
{
int dato;
char stringa[7];

ADCON1 = 0x80; // Conf. Ingr. Analog.
TRISA = 0xFF; // PORTA = input
TRISB = 0x00;
PORTB = 0x00;

Uart1_Init(9600);
while(1)
{
    dato = Adc_Read(0);
    IntToStr(dato, stringa);
    UART1_Write_Text(stringa); 
    Delay_ms(20);
};
}


Ciao.

Paolo.

Re: porta seriale e PIC

MessaggioInviato: 26 apr 2012, 13:39
da mattia281193
grazie :ok: ora ho capito è abbastanza intuitivo ...
Codice: Seleziona tutto
stringa[7];
il 7 cosa rappresenta?

Re: porta seriale e PIC

MessaggioInviato: 26 apr 2012, 13:46
da Paolino
Il 7 indica la dimensione della stringa, in numero di caratteri. Dovendo convertire un int, con il segno, essendo int un tipo a 16 bit, la dimensione massima del numero rappresentabile va da -32768 A +32767. Se per ipotesi consideriamo il numero -25657 e contiamo da quanti caratteri è composto, vedrai che sono 6. Il settimo carattere è il "fine stringa", in C noto anche come NULL e vale '\0'.
Ecco spiegato il numero 7.

Se devi convertire variabili di tipo diverso la dimensione della stringa sarà inferiore o superiore.

Ciao.

Paolo.

Re: porta seriale e PIC

MessaggioInviato: 26 apr 2012, 14:26
da mattia281193
grazie :D

Re: porta seriale e PIC

MessaggioInviato: 26 apr 2012, 14:28
da Paolino
Prego :D

Ciao.

Paolo.

Re: porta seriale e PIC

MessaggioInviato: 28 apr 2012, 14:29
da mattia281193
c'è un problema...momentaneamente sto utilizzando l'UART tool del PIC kit 2e quando visualizzo i dati in rx questi non cambiano scorre sempre lo stesso valore, anche se l'adc legge un valore differente :?