Mam pytanie dlaczego w tym kodzie przy przeliczaniu napięcia musiałem do 5v +2.56 żeby dobrze pokazywał napięcie na wyświetlaczu. Dodam że nóżka vref avcc są podpięte do 5v.
Poprawiłem tytuł - tagi.
[zumek]
#include <avr/io.h>
#include <avr/signal.h>
#include <stdlib.h>
#include <util/delay.h>
#include "lcd.h"
#include "uart.h"
void delay (unsigned short int ms)
{
while(ms)
{
_delay_ms(1);
ms--;
}
}
void ADC_init(void)
{
ADMUX |= _BV(REFS0);
//ADMUX |= _BV(ADLAR); //sposób zapisu wyrównanie do lewej
ADMUX |= _BV(MUX1)|_BV(MUX0); //wybór kanału 3
ADCSRA |= _BV(ADEN); //zezwolenie na konwersje
ADCSRA |= _BV(ADPS0); //częstotliwość
ADCSRA |= _BV(ADPS1);
ADCSRA |= _BV(ADPS2);
}
int main(void)
{
char buf[8];
float pomiar;
ADC_init();
UART_init();
LCD_init();
for(;;)
{
ADCSRA |= _BV(ADSC);
while(ADCSRA & _BV(ADSC)) {}
pomiar =(float)(ADCL | (ADCH<<8))/1024*7.56; //!!!!!!!!!!!!!!!!!!!
dtostrf(pomiar,2,2,buf);
LCD_clear();
LCD_xy(0,0);
LCD_putstr(buf);
delay(1000);
}
}
Poprawiłem tytuł - tagi.
[zumek]
