Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

porta seriale e PIC

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] porta seriale e PIC

Messaggioda Foto Utentemattia281193 » 26 apr 2012, 11:46

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:
Avatar utente
Foto Utentemattia281193
26 4
Frequentatore
Frequentatore
 
Messaggi: 132
Iscritto il: 1 ott 2011, 13:38

1
voti

[2] Re: porta seriale e PIC

Messaggioda Foto UtentePaolino » 26 apr 2012, 11:50

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?
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[3] Re: porta seriale e PIC

Messaggioda Foto Utentemattia281193 » 26 apr 2012, 11:57

gentilmente potresti farmi un usempio? :D
Avatar utente
Foto Utentemattia281193
26 4
Frequentatore
Frequentatore
 
Messaggi: 132
Iscritto il: 1 ott 2011, 13:38

1
voti

[4] Re: porta seriale e PIC

Messaggioda Foto UtenteTardoFreak » 26 apr 2012, 12:08

In QUESTO ARTICOLO ne trovi molti di esempi.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

1
voti

[5] Re: porta seriale e PIC

Messaggioda Foto UtentePaolino » 26 apr 2012, 12:23

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.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[6] Re: porta seriale e PIC

Messaggioda Foto Utentemattia281193 » 26 apr 2012, 13:39

grazie :ok: ora ho capito è abbastanza intuitivo ...
Codice: Seleziona tutto
stringa[7];
il 7 cosa rappresenta?
Ultima modifica di Foto Utenteadmin il 29 apr 2012, 14:13, modificato 1 volta in totale.
Motivazione: Eliminata inutile citazione integrale del messaggio che precede. Esiste il pulsante Rispondi
Avatar utente
Foto Utentemattia281193
26 4
Frequentatore
Frequentatore
 
Messaggi: 132
Iscritto il: 1 ott 2011, 13:38

1
voti

[7] Re: porta seriale e PIC

Messaggioda Foto UtentePaolino » 26 apr 2012, 13:46

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.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[8] Re: porta seriale e PIC

Messaggioda Foto Utentemattia281193 » 26 apr 2012, 14:26

grazie :D
Avatar utente
Foto Utentemattia281193
26 4
Frequentatore
Frequentatore
 
Messaggi: 132
Iscritto il: 1 ott 2011, 13:38

0
voti

[9] Re: porta seriale e PIC

Messaggioda Foto UtentePaolino » 26 apr 2012, 14:28

Prego :D

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[10] Re: porta seriale e PIC

Messaggioda Foto Utentemattia281193 » 28 apr 2012, 14:29

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 :?
Avatar utente
Foto Utentemattia281193
26 4
Frequentatore
Frequentatore
 
Messaggi: 132
Iscritto il: 1 ott 2011, 13:38

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti