Страница 1 из 1

WINAVR ATMega + DS1307

Добавлено: Сб окт 10, 2009 12:44:51
pwb
Привет!

Никак не могу подружить мегу8 и часы :(
Помогите пожалуйста. В протеусе все нормально, а когда дело доходит до железа, то полный аут. все висит.
Я подозреваю что дело в этом:

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

while (!(TWCR & (1 << TWINT)));

если сделать вот так:

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

  // Initial ATMega8 TWI/I2C Peripheral
  TWSR = 0x00;   // Select Prescaler of 1
  // SCL frequency = 11059200 / (16 + 2 * 47 * 1) = 98.743 khz
  TWBR = (F_CPU / 100000UL - 16) / 2;

а вот достаточно закоментировать инициализацию TWI, то все работает в протеусе...
Протеус 7.6 SP0
WinAVR 20090313

Может кто-нибудь кинет в меня нормальной библиотекой для работы в часиками в winavr?
Нигде не могу найти :(

Добавлено: Сб окт 10, 2009 13:00:13
ARV
кинуть можно, только искать надо, да и опасаюсь - кину, да вдруг попаду и зашибу?! так что поищите сами :) нормальную либу для работы с I2C

для начала вот вам ключик к тайной дверце: Peter Fleury http://jump.to/fleury - пользуюсь его либами давно и ни разу не пожалел (немного подправил под себя и все)

Добавлено: Сб окт 10, 2009 17:41:32
pwb
Спасибо Огромное!!! Весь инет перерыл... да видно не до конца :)

Добавлено: Сб окт 10, 2009 19:30:38
pwb
НЕ работает через аппаратный TWI :(
софтовый в протеусе пашет... щас пролью на железо, посмотрим...
Хочу все-таки запустить на аппаратном!!! ПОМОГИТЕ!

Добавлено: Сб окт 10, 2009 21:45:09
pwb
вероятно неисправная МК часов или контроллер.

Добавлено: Сб окт 10, 2009 22:38:38
Pooher
Я не понял, не работает в железе или в Proteus?
Если в железе, то возможно причина в низком питании. Ну а в Proteus, лично у меня, I2C не работает, правда я и не разбирался по чему, мне эта симуляция нафиг не нужна, я железу больше верю.

Добавлено: Сб окт 10, 2009 23:03:41
pwb
питание нормальное 5.05 вольт.
подтягивающие резисторы стоят 4.7к
батарейка подключена + к ноге Vbat минус общий.
плату делал по всем требованиям даташита, т.е. экран есть
обнаружил, что часики греются... причем нормально так.

сделал софтовый I2C, в протеусе работает, на железе никак.
часы новые. инициализацию пытался сделать...
частоты МК пробовал разные от 1 до 8МГц от внутреннего кварца.
фото, как выглядит на железе прилагаю... в протеусе такую картинку можно получить если убрать один из подтягивающих резисторов.

Добавлено: Сб окт 10, 2009 23:12:10
ARV
даже и не знаю, что там может быть сложного...

вот файлик для работы с часами - ориентирован на использование библиотечки, что я вам давал

Добавлено: Вс окт 11, 2009 10:04:04
Pooher
Ну, раз "часики греются", смотрите разводку

Добавлено: Вс окт 11, 2009 17:39:21
pwb
часы действительно сдохли. поставил новые и исправил код.
поставил вот так:

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

void rtc_init(void)
{
  unsigned char temp;
  i2c_start(DS1307_ID+I2C_WRITE);
  i2c_write(0x00);
  i2c_start(DS1307_ID+I2C_READ);
  temp=i2c_read(NACK);
  i2c_stop();

  if(temp & (1<<CH))         //если питание часов пропадало
    {
      ds1307_addr[2]=0;
      ds1307_addr[1]=0;
      ds1307_addr[0]=0;
      hour_mode=HOUR_24;
      Write_DS1307();
      i2c_start(DS1307_ID+I2C_WRITE);
      i2c_write(DS1307_CONTROL);
      i2c_write(0x90);
      i2c_stop();

    }
}

теперь работает!!! большущее спасибо!!!

Добавлено: Вс фев 21, 2010 10:37:02
geniusbsd
Привет Всем.
Возникла проблема собрал Atmega8 16PU + DS1307 по схеме из даташита
Запитывл схему четырьмя способами
1. Подано питание от программатора USBASP около 3 вольт, батарейка не впаяна. Все работает как надо.
2. Подано питание от программатора USBASP около 3 вольт, батарейка впаяна. Часы стоят.
3. При питании от кроны через кренку 5 вольтовую часы стоят
4. При подачи стабилизированного питания 5В(компьютерный БП) на кренку 5 вольтовую( на выходе 4.5В) батарейка не впаяна часы работаю

В архиве процедуры работы с аппаратным TWI и работы с ds1307

Re: WINAVR ATMega + DS1307

Добавлено: Пн авг 09, 2010 19:07:05
fizicko
А можно будет в неё записывать и читать если кварц не заведёться?