01.03.2009, 19:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Уроки СИ для AVR микроконроллеров
to: yuriji
Я бы светодиод не ставил, конечно информативно, красиво, но для одного порта великовата нагрузка вход семистора плюс светодиод (20 мА мах), для аккумулятора лишняя нагрузка и вход симистора будет шунтировать светодиод - надо разбросать по отдельным выходам порта. Можно на ЛЦД какую-нибудь загагульку высвечивать.
|
|
|
|
02.03.2009, 11:35
|
|
Прохожий
Регистрация: 08.12.2008
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сообщение от IOPA4
|
Сообщение от alexkuba
|
Буду очень благодарен IOPA4 за помощь. Как воспользоваться Вашими функциями для расчета восхода/захода Солнца? На входе есть число, месяц, год и широта. Долгота всегда берется одна (скажем 0). На выходе нужно получить UTC время восхода и заката. Процессор ATmega88PV-10AU, но это не суть важно (хотя 8Кб программной памяти просто гнобят )
Смотрю файл hw3.с, но пока не могу понять, где же эти самые времена и из чего получаются...
|
Поясните, пожалуйста, что за устройство. Если, только показывать время восхода/захода солнца и текущее время (координаты, часовой пояс - не требуют ввода, то, в принципе, до Atmegi8 ужаться можно.
Код:
|
//B5 - широта, lat - долгота, day,M,Y - день, месяц, год, H - часовой пояс
//hr, mins, sec, msec - часы, минуты, секунды - для часов, сс - счетчик |
Солнечное время расчитывается по методу Монтенбрука и Пфлегера (в интернете есть книга), а времена сохраняются в два массива HH и MM. В [0] восход, в [1] заход.
|
Здравствуйте! Был в поездке поэтому только сейчас, наконец прочитал ответ IOPA4. Дело в том, что мне нужно не само время восхода/захода а разница между временем восхода в определённую (опорную) дату и временем восхода в текущую дату (тоже самое и для захода). Поэтому мне неважна долгота и можно брать её 0, можно не учитывать также летнее-зимнее время и часовые пояса. Возможно это позволит как то сократить код? Т.е. нужна функция, которя вернет разницу (скажем в UTC) между временем восхода/захода для двух дат. Кроме этого в приборе будет индикатор на 4 знакоместа, 7 светодиодов, 3 кнопки, меню и т.д. и т.п... т.е. желательно влезть хотя бы в половину памяти (4 кБ)
|
|
|
|
02.03.2009, 17:52
|
|
Прописка
Регистрация: 09.02.2007
Сообщений: 108
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Ну, вот собрал, правда пока на макетке, работает, но с часами беда как не крутил, как не играл настройками, часы нагло врут, то бегут, то отстают.
Кто знает, как правильно настроить таймер?
-- Прилагается рисунок: --
![](https://kazus.ru/nuke/users_images/02032009/6097902.jpg)
|
|
|
|
02.03.2009, 20:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Уроки СИ для AVR микроконроллеров
Сообщение от yuriji
|
Ну, вот собрал, правда пока на макетке, работает, но с часами беда как не крутил, как не играл настройками, часы нагло врут, то бегут, то отстают.
Кто знает, как правильно настроить таймер?
|
Я не увидел на макетке кварца, если от внутреннего RC, то будут врать. Счетчик настраивается здесь:
Цитата:
|
// Declare your global variables here
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
cc++;
if (cc›=1000) {msec++; cc=0;};//в реальном устройстве настроить!!! cc›=?
// Place your code here
}
|
msec - это не милисекунды, это просто я так назвал переменную. Нам нужно получить 1 Гц при частоте прерываний таймера 125 кгц. Записываем в таймер 82h -(131) (256-131=125). Он досчитает до 256 и сбросится по переполнению, сс прибавится. сс - будет считать до 1000 - итого 125000. Кажется так:
Код:
|
ASSR=0x00;
TCCR2=0x03;
TCNT2=0x82;
OCR2=0x00; |
Настройка таймера.
Код:
|
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
cc++;
if (cc›=1000) {msec++; cc=0; TCNT2=0x82;};//в реальном устройстве настроить!!! cc›=?
// Place your code here
} |
Кажется так?
-- Прилагается рисунок: --
![](https://kazus.ru/nuke/users_images/02032009/3622832.jpg)
-- Прилагается рисунок: --
![](https://kazus.ru/nuke/users_images/02032009/6097902.jpg)
|
|
|
|
02.03.2009, 20:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Уроки СИ для AVR микроконроллеров
Посмотрите код, я попытался настроить часы и добавил вызов меню ввода данных, когда уже устройство запущено. Откройте в CVAVR файл предварительных настроек с расширением *.cwp
Прикрепленный файл: 6216288.zip
|
|
|
|
02.03.2009, 21:01
|
|
Прописка
Регистрация: 09.02.2007
Сообщений: 108
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Уроки СИ для AVR микроконроллеров
Сообщение от IOPA4
|
Посмотрите код, я попытался настроить часы и добавил вызов меню ввода данных, когда уже устройство запущено. Откройте в CVAVR файл предварительных настроек с расширением *.cwp
|
нет там этого файла *.cwp
или я его не вижу и cvAVR тоже?
-- Прилагается рисунок: --
Прикрепленный файл: 6216288.zip
|
|
|
|
02.03.2009, 21:04
|
|
Прописка
Регистрация: 09.02.2007
Сообщений: 108
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
извиняюсь, я не тот архив распаковал.
спасибо!!!
|
|
|
|
02.03.2009, 21:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Уроки СИ для AVR микроконроллеров
Настройка таймера описана здесь:
http://my-avr.at.ua/publ/1-1-0-17
|
|
|
|
02.03.2009, 22:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Сообщение от yuriji
|
извиняюсь, я не тот архив распаковал.
спасибо!!!
|
А я, извиняюсь, запутался с таймерами. В проекте, то что внутри обработчиков прерываний нужно поменять местами. Попробовал написать, как на сайте http://my-avr.at.ua/publ/1-1-0-17 в Протеус часы перестали мигать - мала скорость моделирования, а код в сноске. Убрал две переменные cc и msec. Попробуйте на спаяном проекте, может правильно? Если получится - отпишитесь.
Прикрепленный файл: 1644480.zip
|
|
|
|
02.03.2009, 23:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Уроки СИ для AVR микроконроллеров
Жаль, смогу собрать устройство только в следующие выходные. Нашел ресурс по вычислению on-line счетчиков и прескале: http://greschenz.dyndns.org/AvrWizOnline.php
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:58.
|
|