аналоговые часы на mega8

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 11
Зарегистрирован: Сб мар 30, 2013 17:14:14

Сообщение krab223 »

Доброго времени суток Всем!Собрал вот такие часы http://www.licrym.org/index.php/%D0%90% ... 1%81%D1%8B но проблема в то что стрелки не двигаются то есть они не идут.Хотя кнопками выставляетя нужное время.По словам автора временем заведует ds1307 посмотреть обмен данными не могу так как нет осциллографа,но судя по всему их нет или причина в чем то другом.Попробовал в протее собрал повесил осцил на ноги sda и scl обмена нет то есть есть только тогда когда нажимаешь кнопки и передвигаются стрелки.В чем может быть дело?Может дело в фьюзах?Ставил кварц наружний или внутренний результат одинаковый.Видео добавить не могу т.к больше 2метров.Как только доберусь до осциллографа отпишусь.P/s у автора все работало.Заранее благодарен.
Вложения
mega8.rar
(96.38 КБ) 135 скачиваний
code.zip
(98.03 КБ) 135 скачиваний
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Сообщение eess9 »

В вашем коде я не увидел настройки скорости I2C. Она у вас просто 0. За нее отвечает байт TWBR и биты TWPS1...0 байта TWSR. В даташите есть формула. По моим прикидкам на 8МГц для 100кГц на шине надо TWBR=24 и TWPS1=1 TWPS0=0.
Но лучше меня перепроверьте :)
Реклама
Родился
Сообщения: 11
Зарегистрирован: Сб мар 30, 2013 17:14:14

Сообщение krab223 »

Я в етом не волоку, пока могу только готовый код залить в контроллер.Че мне делать дальше если мона на пальцах объясните :beer:Вот что сказал казусник" Я вроде уже сказал, - переделывайте опрос кнопок - в том виде, в котором сейчас типа PIND&(1<<7) - это срабатывание по единице, а они у вас подтянуты к единице всегда резисторами 10кОм." Подмогите перековырять :dont_know:Вроде понятно объяснил,но я этого ни разу не делал надо что ли 1 на 0 поменять и все?спрашивать там больше не хочу!(очень уж .....)
Родился
Сообщения: 11
Зарегистрирован: Сб мар 30, 2013 17:14:14

Сообщение krab223 »

поменял 1 на 0, :dont_know: часы пошли!!!только вот кнопки теперь не работают где еще покрутить while (1)
{
if (PIND&(0<<7))
{
gMinutes++;
if (gMinutes == 60) gMinutes = 0;
delay_ms(200); //антидребезг
ds1307_setTime (0, gMinutes, gHours, 1, 1, 9); //in SS-MM-HH-DD-MM-YY
while (PIND&(0<<7));
};

if (PINB&(0<<1))
{
gHours++;
if (gHours == 24) gHours = 0;
delay_ms(200); //антидребезг
ds1307_setTime (0, gMinutes, gHours, 1, 1, 9); //in SS-MM-HH-DD-MM-YY
while (PINB&(0<<1));
};

ds1307_readTime();

OCR1A = ceil(gMinutes * 4.25);
OCR1B = ceil(gHours * 11.0;

};
}
Было вот так if (PIND&(1<<7)) while (PIND&(1<<7));другой порт if (PINB&(1<<0)) while (PINB&(1<<0));что я сделал не так или не доделал?Может while(0)?
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

надо в исходном коде исправить:

Код: Выделить всё

if (PIND&(1<<7))     исправить на   if (!(PIND&(1<<7)))
while (PIND&(1<<7))  исправить на   while (!(PIND&(1<<7)))
if (PINB&(1<<1))     исправить на   if (!(PINB&(1<<1))) 
while (PINB&(1<<1))  исправить на   while (!(PINB&(1<<1)))
 
Ставим плюсы: )
Реклама
Родился
Сообщения: 11
Зарегистрирован: Сб мар 30, 2013 17:14:14

Сообщение krab223 »

Здрасте спасибо приму к сведению,но попробывать не смогу т.к. часы уже идут с другим кодом помог один хороший человек за что ему огромное спасибо!проект п.п.+схема+code Вот может кому сгодится правда пока без будильника,но все только начинается :))P/s м-да kazus-ники быстро меня выпалили работают оперативно надо заметить http://kazus.ru/forums/showthread.php?p ... post663205
Вложения
cod vitalik.rar
(567.46 КБ) 126 скачиваний
Реклама
Ответить

Вернуться в «AVR»