28.03.2009, 21:05
|
#361
|
Прописка
Регистрация: 09.02.2007
Сообщений: 108
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Добрый всем вечер!!!
Мужики поставьте аську и не парьтесь всякими яндекс.ру, рамблер .ру
Рекомендую qip8092, я уже им года два пользуюсь. (425-014-089)
|
|
|
|
28.03.2009, 22:03
|
#362
|
Прописка
Регистрация: 09.02.2007
Сообщений: 108
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Нашел тут кое-что интересное… http://licrym.org/images/wiki/big_clock_final_code.txt
Вот только не пойму как работает?
char get_day(void)//возвращает значение дня недли, начиная с 0-ВС 1-пн ...
{
int a, y, m;
a = (14 - month) / 12;
y = year - a;
m = month + 12 * a - 2;
return (7000 + (day + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12)) % 7;
};
Михалыч может, разберетесь?
|
|
|
|
28.03.2009, 22:36
|
#363
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Сообщение от yuriji
|
Михалыч может, разберетесь?
|
Я уже предлагал такой вариант, но код занимает много места - Atmega8 не резиновая:
Код:
|
unsigned char day_week(void)
{
int y;
unsigned char m, d, w, c;
y=Y;
d=day;
m=M;
if (m ‹ 3)
{
m = m + 10;
y = y - 1;
}
else {m = m - 2;};
c = y%100; // div
y = (int)fmod ((float)y,100.0);
w = (char)fmod((float)(Abs (Trunc (2.6 * m - 0.2) + d + y%4 + y + c%4 - 2 * (float)c)), 7.0);
return (w);
} |
Все очень просто - 28 дней, три месяца и 2009 лет назад воскрес Христос и как помните в воскресенье, т.е. 0-ой день, 0-ой месяц и 0-ой год. Теперь нужно сосчитать сколько прошло дней с этой даты, учитывая високосные годы (каждые 4 года) и переход на декретное время (Старый Новый Год! ). Потом поделить все это на 7 (к-во дней в неделе) и в остатке получаем порядковый номер дня недели.
|
|
|
|
28.03.2009, 22:53
|
#364
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
В нашем случае нужно использовать так:
Код:
|
char get_day(void)//возвращает значение дня недли, начиная с 0-ВС 1-пн ...
{
int a, y, m;
a = (14 - M) / 12;
y = Y - a;
m = M + 12 * a - 2;
return (7000 + (day + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12)) % 7;
}; |
Дальше если месяц третий(31 день) или десятый(31 день) нужно начиная с даты 31-7=25(последняя неделя), т.е. с 25 по 31 проверять не 0-ой ли это день и если нулевой, то сделать перевод.
|
|
|
|
28.03.2009, 23:16
|
#365
|
Частый гость
Регистрация: 23.11.2007
Сообщений: 32
Сказал спасибо: 192
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Раз тут тема про С для АVR, а как я до этого писал, что изучаю С по сайту http://avr123.nm.ru/ то в принципе есть вопрос к автору и не только (приветствуется любое мнение) ,а точнее просьба помочь разобраться. Засада вот в чём, написал прогу задача 5 ( avr123.nm.ru/z5.htm ) вывод данных на USART & LCD, решил начать с USART т.е. всё про LCD в коменте. Проблема вот в чём не получается запустить ATmega16 на 115200 с внешним генератором 11,0592MHz.Fuse выставил на CKSEL=0000. Использую программатор ATSTK500(Atmel)все jumpers выставил как положенно ,осцилом смотрел генерация 11,0592 на XTAL1(13 pin) присутствует,не хочет выдавать на Com ничего( мониторю COM Port Toolkit 3.9).Перестроил проект на 8MHz (внутр генератор)9600 бод.Процесс пошёл но с ошибками,но это уже что-то, т.е. Toolkit что-то начал видеть правда с сильными ошибками думаю из-за погрешности в 0.8%(поправьте если не так).Помогите разобраться где туплю.
|
|
|
|
28.03.2009, 23:38
|
#366
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Сообщение от Denexp
|
Раз тут тема про С для АVR, а как я до этого писал, что изучаю С по сайту http://avr123.nm.ru/ то в принципе есть вопрос к автору и не только (приветствуется любое мнение) ,а точнее просьба помочь разобраться. Засада вот в чём, написал прогу задача 5 ( avr123.nm.ru/z5.htm ) вывод данных на USART & LCD, решил начать с USART т.е. всё про LCD в коменте. Проблема вот в чём не получается запустить ATmega16 на 115200 с внешним генератором 11,0592MHz.Fuse выставил на CKSEL=0000. Использую программатор ATSTK500(Atmel)все jumpers выставил как положенно ,осцилом смотрел генерация 11,0592 на XTAL1(13 pin) присутствует,не хочет выдавать на Com ничего( мониторю COM Port Toolkit 3.9).Перестроил проект на 8MHz (внутр генератор)9600 бод.Процесс пошёл но с ошибками,но это уже что-то, т.е. Toolkit что-то начал видеть правда с сильными ошибками думаю из-за погрешности в 0.8%(поправьте если не так).Помогите разобраться где туплю.
|
Я понял так: Вы запустили CVAVR и создали заготовку типа:
......
Код:
|
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 115200
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x05; |
.....
Запрограммировали фьюзы и далее что-то не получается?
-- Прилагается рисунок: --
|
|
|
|
29.03.2009, 00:11
|
#367
|
Частый гость
Регистрация: 23.11.2007
Сообщений: 32
Сказал спасибо: 192
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Ага спасибо, настройки USART кривые были
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 115200
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x05;
так должно было быть, чётко подметили где рыть.
// USART Transmitter: Off как-то получилось 8O
Ещё раз спасибо!
|
|
|
|
29.03.2009, 09:58
|
#368
|
Прописка
Регистрация: 09.02.2007
Сообщений: 108
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Сообщение от IOPA4
|
В нашем случае нужно использовать так:
Код:
|
char get_day(void)//возвращает значение дня недли, начиная с 0-ВС 1-пн ...
{
int a, y, m;
a = (14 - M) / 12;
y = Y - a;
m = M + 12 * a - 2;
return (7000 + (day + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12)) % 7;
}; |
Дальше если месяц третий(31 день) или десятый(31 день) нужно начиная с даты 31-7=25(последняя неделя), т.е. с 25 по 31 проверять не 0-ой ли это день и если нулевой, то сделать перевод.
|
Спасибо Михалыч, теперь понял.
Михалыч, а переход на лед индикатор пока не рассматривали?
Если питается от сети, «светит», сеть пропала, всю периферию отключаем и тикает только таймер часов.
|
|
|
|
29.03.2009, 10:25
|
#369
|
Почётный гражданин KAZUS.RU
Регистрация: 07.05.2008
Адрес: Мурманск
Сообщений: 1,300
Сказал спасибо: 461
Сказали Спасибо 526 раз(а) в 273 сообщении(ях)
|
Сообщение от yuriji
|
Спасибо Михалыч, теперь понял.
Михалыч, а переход на лед индикатор пока не рассматривали?
Если питается от сети, «светит», сеть пропала, всю периферию отключаем и тикает только таймер часов.
|
Я переписал код для автоперевода летнего/зимнего времени с применением присланной функцией - влезло только для английской версии. Не проверял - как будто "протеусный грип" (теперь у меня вышибает каждую минуту). Вчера посылка пришла 2 ЖКИ EL 1602A. С ледами вчера занимался - универсальный драйвер писал (для от 3-х знаков до ....), а вот как и на какой индикатор выводить инфо не придумал.
Прикрепленный файл: 8681318.zip
|
|
|
|
29.03.2009, 18:42
|
#370
|
Прописка
Регистрация: 09.02.2007
Сообщений: 108
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Михалыч , а чем обусловлено такое схемное решение БП.
-- Прилагается рисунок: --
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:06.
|
|