Здравствуйте, уважаемые КОТЫ! Захотелось собрать себе в машину вот такое устройство: https://avrlab.com/node/122. Я не программист, поэтому прошу помощи, как перевести исходник в НЕХ?
А в ответ тишина... Тогда поставлю вопрос так: можно ли из этого сделать HEX? #include <avr/io.h> //Стандартная библиотека ввода/вывода #include <math.h.> //Библиотека математических операций
#define RS 2 //RS=PD2 #define E 3 //E=PD3
#define TIME 10 //Константа временной задержки для ЖКИ //Частота тактирования 4МГц
#define ZERO_X 0x026c //Расчетная константа для координаты x #define ZERO_Y 0x0258 //Расчетная константа для координаты y #define ZERO_Z 0x029c //Расчетная константа для координаты z
int u=0; //Напряжение на ADC
int x,y,z; //ax,ay,az
//Программа задержки void pause (unsigned int a) { unsigned int i; for(i=a;i>0;i--); }
//Программа передачи команды ЖКИ void lcd_com (unsigned char lcd) { unsigned char temp;
temp=(lcd&~(1<<RS))|(1<<E); //RS=0 – это команда PORTD=temp; //Выводим на portD старшую тетраду команды, сигналы RS, E asm("nop"); //Небольшая задержка в 1 такт МК, для стабилизации PORTD=temp&~(1<<E); //Сигнал записи команды temp=((lcd*16)&~(1<<RS))|(1<<E); //RS=0 – это команда PORTD=temp; //Выводим на portD младшую тетраду команды, сигналы RS, E asm("nop"); //Небольшая задержка в 1 такт МК, для стабилизации PORTD=temp&~(1<<E); //Сигнал записи команды pause (10*TIME); //Пауза для выполнения команды }
//Программа записи данных в ЖКИ void lcd_dat (unsigned char lcd) { unsigned char temp; temp=(lcd|(1<<RS))|(1<<E); //RS=1 – это данные PORTD=temp; //Выводим на portD старшую тетраду данных, сигналы RS, E asm("nop"); //Небольшая задержка в 1 такт МК, для стабилизации PORTD=temp&~(1<<E); //Сигнал записи данных temp=((lcd*16)|(1<<RS))|(1<<E); //RS=1 – это данные PORTD=temp;n//Выводим на portD младшую тетраду данных, сигналы RS, E asm("nop"); //Небольшая задержка в 1 такт МК, для стабилизации PORTD=temp&~(1<<E); //Сигнал записи данных pause(TIME); //Пауза для вывода данных }
void lcd_init (void)//Иниализация ЖКИ { lcd_com(0x2c); //4-проводный интерфейс, 5x8 размер символа pause(100*TIME); lcd_com(0x0c); //Показать изображение, курсор не показывать pause(100*TIME); lcd_com(0x01); //Очистить DDRAM и установить курсор на 0x00 pause (100*TIME); }
unsigned int getADC(void) //Извелечения результата с АЦП { unsigned int v; v=(ADCL+ADCH*256); return v; }
void write_full(int x, int y, int z) { double a,b; unsigned char temp;
for (i=0;i<30;i++) { ADMUX=(1<<REFS1)|(1<<REFS0)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0);//Внутренний Vref=2,56, канал PC0 ADCSRA|=(1<<ADSC); //Начать преобразование while ((ADCSRA&_BV(ADIF))==0x00) //Ждем окончания преобразования ;
u=getADC(); //Считать напряжение x= x+(u-ZERO_X)*2.56/10.24*1.25; //Добавить в сумму x
ADMUX=(1<<REFS1)|(1<<REFS0)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(1<<MUX0);//Внутренний Vref=2,56, канал PC1 ADCSRA|=(1<<ADSC); //Начать преобразование while ((ADCSRA&_BV(ADIF))==0x00) //Ждем окончания преобразования ;
u=getADC(); //Считать напряжение y= y+(u-ZERO_Y)*2.56/10.24*1.25; //Добавить в сумму y
ADMUX=(1<<REFS1)|(1<<REFS0)|(0<<MUX3)|(0<<MUX2)|(1<<MUX1)|(0<<MUX0);//Внутренний Vref=2,56, канал PC2 ADCSRA|=(1<<ADSC); //Начать преобразование while ((ADCSRA&_BV(ADIF))==0x00) //Ждем окончания преобразования ;
u=getADC(); //Считать напряжение z= z+(u-ZERO_Z)*2.56/10.24*1.25; //Добавить в сумму z
} a_valid=b_valid=1; if ((abs(x/30)>85)&&(abs(y/30)<30)) { //Вычисляем корректность данных a_valid=1; b_valid=0; } if ((abs(y/30)>85)&&(abs(x/30)<30)) { a_valid=0; b_valid=1; } write_full (x,y,z); //Выводим результат на ЖКИ pause(15000); }
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Я о}{..ваю ! Насколько позволяет судить мой скромный опыт, их нет ни на русском, ни на китайском, ни на древне-зулусском. Входной язык у компилятора - выбранный язык программирования, на выходе - бинарник или .hex - файл.
Я о}{..ваю ! Насколько позволяет судить мой скромный опыт, их нет ни на русском, ни на китайском, ни на древне-зулусском. Входной язык у компилятора - выбранный язык программирования, на выходе - бинарник или .hex - файл.
Я вроде нормально спрашиваю. Неужели нельзя нормально ответить.
Заголовок сообщения: Re: Цифровой акселерометр MMA7260Q и ATmega8
Добавлено: Сб окт 07, 2017 19:50:04
Друг Кота
Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53 Сообщений: 3092 Откуда: москва, уфа
Рейтинг сообщения:0
на такие вопросы сложно отвечать нормально. Ну совсем ведь базовые понятия Откройте любую книжку по С и почитайте несколько первых глав.
В исходном виде прошивка не собирается, я там правил опечатки по собственному разумению, особо не разбираясь. "ничего не работает" - дык погода на марсе к этому не располагает. Какое конкретно ничего не работает?
там в комментариях кстати чего-то про частоту в 4МГц. Нужные фьюзы выставили?
Просто я в программировании полный ноль. Я практик. Могу спаять, прошить микроконтроллер но не более. Так что извините за тупые вопросы. Фьюзы выставил правильно.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения