Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



DS 1307 и ATmega16

Сообщений 1 страница 3 из 3

1

Всем доброго времени суток !
Уже какую неделю сижу и мучаюсь с подключение микросхемы DS 1307 к атмеге , и все никак не выходит.
Схематично все подключено по даташиту  программа вроде тоже написано правильно ( взята с примеров в баском авр )

Код:
$regfile = "m16def.dat"

$crystal = 16000000

$lib "lcd4.lbx"
                                          ' for smaller code
$lib "ds1307clock.lib"

Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7


Config Lcd = 16 * 2                                         ' modified lib

'configure the scl and sda pins

Config Sda = Portc.1

Config Scl = Portc.0

'address of ds1307

Const Ds1307w = &HD0
                                        ' Addresses of Ds1307 clock
Const Ds1307r = &HD1

Config Clock = User
                                         ' this will dim the bytes automatic
'dim other needed variables

Dim Weekday As Byte


Lcd "DS1307"

Waitms 100

' assigning the time will call the SetTime routine

Time$ = "00:00:00"
                                          ' to watch the day changing value
Date$ = "00-00-00"
                                          ' 13 november 2002
Do

Print

  Lcd "  " ; Date$

  Lowerline

  Lcd " " ; Time$

  Waitms 500

Loop

End


'called from ds1307clock.lib

Getdatetime:
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 0                                                ' start address in 1307

  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307r                                          ' send address
  I2crbyte _sec , Ack
  I2crbyte _min , Ack                                       ' MINUTES
  I2crbyte _hour , Ack                                      ' Hours
  I2crbyte Weekday , Ack                                    ' Day of Week
  I2crbyte _day , Ack                                       ' Day of Month
  I2crbyte _month , Ack                                     ' Month of Year
  I2crbyte _year , Nack                                     ' Year
  I2cstop
  _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
  _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return

Setdate:
  _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 4                                                ' starting address in 1307
  I2cwbyte _day                                             ' Send Data to SECONDS
  I2cwbyte _month                                           ' MINUTES
  I2cwbyte _year                                            ' Hours
  I2cstop
Return

Settime:
  _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
  I2cstart                                                  ' Generate start code
  I2cwbyte Ds1307w                                          ' send address
  I2cwbyte 0                                                ' starting address in 1307
  I2cwbyte _sec                                             ' Send Data to SECONDS
  I2cwbyte _min                                             ' MINUTES
  I2cwbyte _hour                                            ' Hours
  I2cstop
Return

НА дисплей выводит какие то каракули (изображение прикрепить немогу :dontknow: )

Кто нибудь сталкивался с такой проблемой  :question:  ?

Помогите разобраться .

0

2

Код:
Do

locate 1 , 1

  Lcd "  " ; Date$

locate 2 , 1

  Lcd " " ; Time$

Loop

End

0

3

На днях скрещивал мегу32 и DS1307.
Ну и сконфигурировал I2C таким образом:
Config Sda = PortB.5                                       
Config Scl = PortB.6 
А на этих ногах оказались MOSI и MISO контроллера, после прошивки МК заглох.... самое интересное что фьюзы не трогал. Программатором не опознавался, короче беда. Ладно осталась платка (думал что больше никогда не пригодится, фьюзы выставляю с закрытыми глазами) от фьюзбит доктора тыц, там есть функция стирания флэша.  В общем стёр все нафиг, мк ожил. Вот теперь я в непонимании, всегда думал что мк невозможно "убить" не правильной прошивкой. Есть мнения на этот счет?

0