01.05.2013, 11:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от Митя
|
для чайника чайницкого
|
В том-то и дело.
Когда уже узнал все "мели" компилятора, тогда эмпирически можно ошибку понять, а сначала по-любому смотреть надо - чего оно там накомпилячило.
|
|
|
|
18.11.2013, 21:44
|
|
Прописка
Регистрация: 11.06.2005
Сообщений: 266
Сказал спасибо: 9
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Может кто сталкивался с проблемой:
IAR AVR, ATmega128, Normal DLIB, time.h
По-умолчанию размер структуры time_t - 32 бита, что позволяет хранить даты в диапазоне от 1 янв 1900 года до 2036 года. В том же файле описана структура размером в 64 бита, позволяющая работать с диапазоном от -9999 до 9999 года. Никак не получается её использовать - не нашёл настройку IAR или может какой дефайн нужно сделать. Подскажите плиз, как же заставить IAR работать с 64-битным временем?
__________________
Канал в Telegram об МК AVR @EasyAVR
|
|
|
|
19.11.2013, 02:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Зачем спрашивать одно и то же в разных темах? И при чём здесь Си и AVR?
__________________
There's always more than one way to skin a cat.
|
|
|
|
07.01.2015, 04:54
|
|
Прохожий
Регистрация: 03.01.2015
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Здравствуйте! Собрал астротаймер на led и кварце 32768, работает хорошо. Интересует несколько опций в меню которые нигде не описаны .
Заранее благодарен .
|
|
|
|
13.07.2015, 14:12
|
|
Заблокирован
Регистрация: 23.09.2007
Сообщений: 761
Сказал спасибо: 84
Сказали Спасибо 352 раз(а) в 151 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Здравствуйте. Сейчас ломаю голову над одной задачей, может кто поможет.
Есть у меня такие менюшки - штук 150 в программе. Начинаю путаться. Смысл задачи состоит в том, чтобы в бесклассовом языке сделать всё-таки что-то типа класса, и объединить данные из RAM, FLASH и EEPROM в одном флаконе (в смысле массиве, структуре, смеси, объединении), ещё и впридачу разных типов. И ещё бы и функции пристегнуть. В сети много примеров, но у меня обработка немного другая и ещё разнообразная. Просто портировать не получается.
Ещё и на работе и дома бедлам, не дают даже в туалете уединиться, подумать о судьбах Родины.
Код:
|
void setting11_menu()
{
set_banner(3,0,"Н11 НАГРЕВ");
muc_temp1=REG[P_HEATER].lo_byte;
muc_temp2=muc_temp1;
muc_temp3=REG[P_HEATER].min;
muc_temp4=REG[P_HEATER].max;
init_menu();
change_val=0;
while (1){ set_banner(3,0,"Н11 НАГРЕВ");
if (change_val) {menu_signs(); } else { menu_arrows(); };
lcd_gotoxy(0,1);
lcd_putsf_ru ("ЗОНА ПРОП");
if (flag_keys) {if (flag_up) {
if (change_val) {change_val=0;flag_up=0;flag_keys=0;screen_counter =1; } else { sel_menu= setting1_menu; return;};
};
if (flag_down) {
if (change_val) { flag_down=0;flag_keys=0;screen_counter=1;change_va l=0;
if ((muc_temp2!=muc_temp1)&&(eeprom_en))
{ // поставить pwr_control здесь и в polling if eeprom_en
REG[P_HEATER].lo_byte=muc_temp2;
// #asm("cli")
// fact_set=e_fact_set;
// if (fact_set){e_fact_set=0;};
// e_REG[P_HEATER].lo_byte=REG[P_HEATER].lo_byte;
// #asm("sei")
muc_temp1=REG[P_HEATER].lo_byte;
};
//setting11_menu();
}
else { change_val=1;flag_down=0;flag_keys=0;screen_counte r=1; };
};
if (flag_left) {
if (change_val) {
flag_left=0;flag_keys=0;screen_counter=1;
if (muc_temp2‹=muc_temp3) {muc_temp2=muc_temp4; } else {muc_temp2--;};
}
else {sel_menu=setting17_menu;return;};
};
if (flag_right) {
if (change_val) {
flag_right=0; flag_keys=0; screen_counter=1;
muc_temp2++;if (muc_temp2›muc_temp4) {muc_temp2=muc_temp3; };
}
else {sel_menu=setting12_menu; return;};
};
};
lcd_gotoxy(10,1);
if (change_val) {
if (screen_counter==1) {flag_blink=0; }
else {flag_blink=1;};
}
else {flag_blink=0;};
if (flag_blink) {lcd_putchar(0xFF);lcd_putchar(0xFF); }
else {sprintf(lcd_string,"%02u",muc_temp2); lcd_puts(lcd_string); };
lcd_putchar(0xDF);
lcd_putsf("C");
#asm("wdr")
screen_manager();
if (serv_tim1›14000) {sel_menu=major_menu; return; };
};
} |
|
|
|
|
13.04.2016, 21:58
|
|
Частый гость
Регистрация: 03.11.2006
Сообщений: 31
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от Str@nnik
|
Здравствуйте! Собрал астротаймер на led и кварце 32768, работает хорошо. Интересует несколько опций в меню которые нигде не описаны .
Заранее благодарен .
|
У самого такой же работает уже года 2.
1-е это корекция хода часов.
2-е 3-е помоему включает\отключает расчет времени включения\отключения по сумеркам. Помоему так если не ошибаюсь.
Дополнительно изменил программу для возможности принудительного отключения на некоторый период ночью. Применяю для включения света в курятнике.
|
|
|
|
14.04.2016, 06:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
dH и dL введены для экономии электричества, это принудительное время включения и выключения. Например ночью астротаймер включил свет, но в период с 02:00 до 06:00 нам освещение не нужно. Если эти величины выставить одинаковыми, то принудительного управления не будет.
|
|
|
|
14.04.2016, 06:19
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от nbo
|
Применяю для включения света в курятнике.
|
Для курятника есть другая тема https://kazus.ru/forums/showthread.php?t=112286&page=10
|
|
|
|
03.11.2016, 01:07
|
|
Прохожий
Регистрация: 15.02.2009
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
IOPA4, у вас немного неправильно работает перевод времени лето/зима. Переводиться только отображаемое время, а время вкл./откл. света не переводиться. Получается, что после перехода на зимнее время в 16-00 уже темно, а включение должно произойти только в 16-45. Т.е. надо смещать на час еще и расчеты вкл/откл света. Это можно поправить?
Заранее спасибо.
Последний раз редактировалось Azar123; 03.11.2016 в 01:14.
|
|
|
|
26.11.2016, 12:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Re: Уроки СИ для AVR микроконроллеров
После перевода времени нужно обновить данные, иначе вычисление восхода/захода произойдет только на следующие сутки:
Цитата:
|
void clock(void)
{
read_data(); //читаем дату и время из DS1307
#ifdef CORR
if ((Mon==3) && (Day›24) && (WeekDay=7) &&(change==0)) //если март и дата последнего
{ //воскресенья и перевод разрешен
if (Hrs==3) //и если время 3 ночи
{
Hrs++; //перевод на час вперед
// Watch++;
// eep_zone = Watch;
change=1; //запрет перевода в этом месяце
write_data();
calc();
}
};
if ((Mon==10) && (Day›24) && (WeekDay=7) && (change==0)) //если октябрь и дата последнего
{ //воскресенья и перевод разрешен
if (Hrs==3) //и если время 3 ночи
{
Hrs--; //перевод на час назад
// Watch--;
// eep_zone = Watch;
change=1; //запрет перевода в этом месяце
write_data();
calc();
}
};
#endif
if (Sec==0) {on_off_led(); //решаем включать или выключать свет
recode_time();} //только каждую минуту, отобразить время
if ((Sec==0)&&(Mins==0)&&(Hrs==0)) calc(); //раз в сутки вычисляем время восхода/захода
}
|
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:14.
|
|