Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

Уроки СИ для AVR микроконроллеров

Непрочитано 01.05.2013, 11:22  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от Митя Посмотреть сообщение
для чайника чайницкого
В том-то и дело.
Когда уже узнал все "мели" компилятора, тогда эмпирически можно ошибку понять, а сначала по-любому смотреть надо - чего оно там накомпилячило.
Реклама:
omercury вне форума  
Непрочитано 18.11.2013, 21:44  
Prime
Прописка
 
Регистрация: 11.06.2005
Сообщений: 259
Сказал спасибо: 9
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
Prime на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Может кто сталкивался с проблемой:

IAR AVR, ATmega128, Normal DLIB, time.h
По-умолчанию размер структуры time_t - 32 бита, что позволяет хранить даты в диапазоне от 1 янв 1900 года до 2036 года. В том же файле описана структура размером в 64 бита, позволяющая работать с диапазоном от -9999 до 9999 года. Никак не получается её использовать - не нашёл настройку IAR или может какой дефайн нужно сделать. Подскажите плиз, как же заставить IAR работать с 64-битным временем?
__________________
Канал в Telegram об МК AVR @EasyAVR
Prime вне форума  
Непрочитано 19.11.2013, 02:38  
tempora
Почётный гражданин KAZUS.RUN
 
Регистрация: 10.01.2007
Сообщений: 3,411
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Зачем спрашивать одно и то же в разных темах? И при чём здесь Си и AVR?
__________________
There's always more than one way to skin a cat.
tempora вне форума  
Непрочитано 07.01.2015, 04:54  
Str@nnik
Прохожий
 
Регистрация: 03.01.2015
Сообщений: 1
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Str@nnik на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Здравствуйте! Собрал астротаймер на led и кварце 32768, работает хорошо. Интересует несколько опций в меню которые нигде не описаны .

Заранее благодарен .
Str@nnik вне форума  
Непрочитано 13.07.2015, 14:12  
kosmos440o
Заблокирован
 
Регистрация: 23.09.2007
Сообщений: 761
Сказал спасибо: 84
Сказали Спасибо 352 раз(а) в 151 сообщении(ях)
kosmos440o на пути к лучшему
По умолчанию 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; };
                };
}
kosmos440o вне форума  
Непрочитано 13.04.2016, 21:58  
nbo
Частый гость
 
Регистрация: 03.11.2006
Сообщений: 31
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
nbo на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от Str@nnik Посмотреть сообщение
Здравствуйте! Собрал астротаймер на led и кварце 32768, работает хорошо. Интересует несколько опций в меню которые нигде не описаны .

Заранее благодарен .
У самого такой же работает уже года 2.
1-е это корекция хода часов.
2-е 3-е помоему включает\отключает расчет времени включения\отключения по сумеркам. Помоему так если не ошибаюсь.
Дополнительно изменил программу для возможности принудительного отключения на некоторый период ночью. Применяю для включения света в курятнике.
nbo вне форума  
Непрочитано 14.04.2016, 06:16  
IOPA4
Почётный гражданин KAZUS.RUN
 
Аватар для IOPA4
 
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,290
Сказал спасибо: 452
Сказали Спасибо 501 раз(а) в 267 сообщении(ях)
IOPA4 на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

dH и dL введены для экономии электричества, это принудительное время включения и выключения. Например ночью астротаймер включил свет, но в период с 02:00 до 06:00 нам освещение не нужно. Если эти величины выставить одинаковыми, то принудительного управления не будет.
IOPA4 вне форума  
Непрочитано 14.04.2016, 06:19  
IOPA4
Почётный гражданин KAZUS.RUN
 
Аватар для IOPA4
 
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,290
Сказал спасибо: 452
Сказали Спасибо 501 раз(а) в 267 сообщении(ях)
IOPA4 на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

Сообщение от nbo Посмотреть сообщение
Применяю для включения света в курятнике.
Для курятника есть другая тема https://kazus.run/forums/showthread....112286&page=10
IOPA4 вне форума  
Непрочитано 03.11.2016, 01:07  
Azar123
Прохожий
 
Регистрация: 15.02.2009
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Azar123 на пути к лучшему
По умолчанию Re: Уроки СИ для AVR микроконроллеров

IOPA4, у вас немного неправильно работает перевод времени лето/зима. Переводиться только отображаемое время, а время вкл./откл. света не переводиться. Получается, что после перехода на зимнее время в 16-00 уже темно, а включение должно произойти только в 16-45. Т.е. надо смещать на час еще и расчеты вкл/откл света. Это можно поправить?
Заранее спасибо.

Последний раз редактировалось Azar123; 03.11.2016 в 01:14.
Azar123 вне форума  
Непрочитано 26.11.2016, 12:59  
IOPA4
Почётный гражданин KAZUS.RUN
 
Аватар для IOPA4
 
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,290
Сказал спасибо: 452
Сказали Спасибо 501 раз(а) в 267 сообщении(ях)
IOPA4 на пути к лучшему
По умолчанию 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(); //раз в сутки вычисляем время восхода/захода
}
IOPA4 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видео уроки dosikus Микроконтроллеры, АЦП, память и т.д 61 23.01.2012 21:06
Видео уроки (flash) Proteus 7.1 fmssp Proteus 5 13.08.2007 03:56
AVR уроки Рюмика chipic128 Proteus, KiCAD и другие ECAD 9 07.03.2007 21:46
уроки от LABCENTRE(PIC12F675+C) dosikus Микроконтроллеры, АЦП, память и т.д 22 09.10.2006 10:16


Часовой пояс GMT +4, время: 20:28.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.