Witam,
chciałem zrobić cykliczny odczyt wartości napięcia na mikrokontrolerze ATmega32.
Kod PRAWIE działa, aby odświeżyć pomiar muszę wgrać panownie program do ATmegi.
Gdzie może być problem?
Kod:
#include<avr/io.h>
#include<util/delay.h>
#include"HD44780.h"
volatile int a=0;
volatile float wynikV=0;
volatile int calosc=0;
volatile int reszta;
char wynik[4];
char wynik2[4];
int main(void)
{
ADMUX|=(1<<REFS0);
ADCSRA|=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<MUX0)|(1<<MUX2);
ADCSRA|=(1<<ADSC);
LCD_Initalize(); //inicjalizacja LCD
LCD_GoTo(0, 0); //Ustawienie kursora w pozycji (0,0)
LCD_WriteText("Napiecie : ");
LCD_GoTo(16,0);
LCD_WriteText("Volt");
LCD_GoTo(12,0);
LCD_WriteText(",");
while(1)
{
a=(0b00000011&ADCH)*256+ADCL;
wynikV=a*5;
wynikV=wynikV/1023;
calosc=wynikV;
reszta=wynikV*100-calosc*100;
itoa(calosc,wynik,10);
itoa(reszta,wynik2,10);
LCD_GoTo(11,0);
LCD_WriteText(wynik);
LCD_GoTo(13,0);
LCD_WriteText(wynik2);
_delay_ms(500);
}
return 0;
}