Здравствуйте!
У меня возникла проблема с практикой 7 урока.
Для начала решила сделать все в точности, как было показано в видео, чтобы понять вообще принцип, но при запуски модуляции в протеусе на дисплеи просто белый экран.
Не могли бы вы посмотреть код, может где то есть ошибка.
#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>
//Подключение библиотеки для работы с дисплем
#include "n5110.h"
#include <stdlib.h>
//Предварительные настройик
void preset()
{
//Инициализируем дисплей
Lcd_init();
//Настройка АЦП
//ADCRA
ADCSRA |= (1<<ADEN)//Задействовать АЦП
| (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);// Делитель 128=64кГц
//ADMUX
ADMUX |= (1<<REFS1) | (1<<REFS0);//Опорное напряжение 2.56В внутренне
// | (0<<MUX3)| (0<<MUX2)| (0<<MUX1)| (0<<MUX0);// выбор лапки ADC0
}
int readADC(unsigned int ch)
{
unsigned char set_admux = ADMUX;
set_admux &= ~((1<<MUX3)| (1<<MUX2)| (1<<MUX1)| (1<<MUX0));
switch(ch)
{
case 1: set_admux |= ((0<<MUX3) | (0<<MUX2) | (0<<MUX1) | (1<<MUX0));break;
default: break;
}
ADMUX = set_admux;
int tmp = 0;
for(int i=0;i<32;i++)
{
ADCSRA |= (1<<ADSC); //Запуск преобразования
while((ADCSRA &(1<<ADSC))); //Ожидание окончания преобразования
tmp += ADC;
}
return tmp/32;
}
int main(void)
{ preset();
while(1)
{
Lcd_clear();
Lcd_printf(0,0,FONT_1X,((readADC(0)*2.56*(30/2.56))/1023),1);
Lcd_printf(0,1,FONT_1X,((readADC(1)*2.56*(30/2.56))/1023),1);
Lcd_update();
_delay_ms(200);
}
}