problema uart pic

« Older   Newer »
  Share  
mattia281193
view post Posted on 2/5/2012, 14:42




ragazzi ho un problema con questo listato.
convertendo un valore letto da l'adc in stringa e trasmesso in via seriale tramite l'uart tool io dovrei vedere la variazione del codice in HEX o ASCII in base al valore letto da convertitore , ma una volta connesso visualizzo sempre il solito valore che equivale a 0 in ASCII .
ce qualche problema sulla conversione ??? :(




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);
};
}


 
Top
view post Posted on 2/5/2012, 19:23
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


In C, non saprei, lo sto studiando, ma non sono ancora abbastanza "colto" da poterti rispondere. Io una cosa simile l'ho fatta, ma in assembler con la easy pic e hyperterminal.

Ho avuto rogne col buffer, quindi ho risolto, svuotandolo manualmente, una volta ho usato un quarzo da 4.2 mhz, convinto che fosse un 4mhz e i baud rate non si trovavano....insomma, ci sono un pò di cose da vedere. Sei sicuro di dare il tempo necessario al pic per campionare il segnale ?

Comunque ricorda che devi anche passare alla routine di correzione per stampare correttamente caratteri ascii.
Es: se in un registro hai il numero 7, per stamparlo correttamente devi dirgli: prendi contenuto registro (7) e somma 30h (48 decimale).

Comunque, facci sapere un po' meglio :)
 
Top
nightghost
view post Posted on 2/5/2012, 19:37




prima di tutto che editor/compilatore usi? mplab? secondo me, manca l'inizializzazione dell'ADC. l'hai usato in altri contesti? io
quando inizializzo adc (con sourceboost compilatore boostc)


// adc settings
adcon1 = 0x0A; //adcon1 = 0x00001010b; // setto RA0 e RA1 come analogiche
adcon2 = 0xAE; //adcon2 = 0x00101110b; // left justify -freq di campionamento: 12 tad - 32 tosc -
adcon0 = 0x01; // enable ADC

adcon0.1 = 1; // avvio conversione ADC su RA0

while (adcon0.1 == 1); // attendi che la conversione finisca

valore1 = adresl;
valore2 = adresh;
valore = (((valore2 <<8) + valore1));


per sapere come impostare i vari bit basta leggersi le tabelle nel datasheet del micro che stai usando...
 
Top
mattia281193
view post Posted on 27/7/2012, 21:31




risolto scusate!!!il codice è corretto ma era abilitato il code protector del pic e quindi non trasmetteva nulla
 
Top
3 replies since 2/5/2012, 14:42   137 views
  Share