Ahoj, mám problém, mám napsaný program v C,který měří napětí na pinu RA2 a zobrazí hodnotu na LCD 16x2. Jakž takž funguje, ale ukazuje mi to 0V a přitom mám na pinu nějákých 0,8V a celkově to napětí neodpovídá. Na displeji mi to ukazuje i hodnotu z AD převodníku, která je 0 až 212. A na při 0 z převodníku tam je na pinu těch 0.8V
Prosím, kde mám botu, děkuji.
[code]#include <htc.h>
#include “lcd.h”
#include <stdio.h>
#define _XTAL_FREQ 8000000
void AD_init()
{
TRISC= 0b00000000;
TRISA= 0b00000100;
ANSEL= 0b00000100; // nastavení pinu RA2 jako analog (1)
ADCON0=0b00001000; // (0<<CHS0)|(1<<CHS1)|(0<<CHS2)|(0<<CHS3)|(1<<ADON);
ADCON1=0b01010000; //(1<<ADCS2)|(0<<ADCS1)|(1<<ADCS0);
}
unsigned int prevod2()
{
unsigned int hodnota;
ADON = 1; // zapnutí převodníku
GODONE = 1; //zapnutí převodu
while(GODONE);
hodnota = ADRESH;
return hodnota;
}
void main(void)
{
TRISB = 0; // PORTB all outputs
TRISC = 0;
int ad_hodnota = 0;
float prevod = 0;
char text[20],text1[20];
int desitky = 0,desetiny = 0;
while(1)
{
AD_init();
ad_hodnota = prevod2();
prevod = (ad_hodnota * 5.0)/212.0;
desitky = prevod;
desetiny = (prevod * 10) - (desitky * 10);
sprintf(text,"Napeti %d.%dV",desitky,desetiny);
sprintf(text1,"AD hodnota: %d",ad_hodnota);
lcd_init();
lcd_goto(0);
lcd_puts(text);
lcd_goto(64);
lcd_puts(text1);
}
}[/code]
administrator: přejmenováno z "PIC16F690 špatně funguje AD převod v Cčku"