DS1307
|
|
proton |
Дата: Ср, 20.07.2011, 09:56 | Сообщение # 1 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
16
Замечания:
±
На сайте с 13.07.2011
Статус:
Offline
|
Взял код с буржуйского сайта часов. Все работает. Но не могу инициализировать кнопки для установки времени. Device=16F877A ' We're using a 16F876 device with DS1307 RTC ' and 2*32 LCD default connection
Remarks On ' Enable remarks in the source Declare Xtal 4 Declare LCD_Type ALPHA ' Тип ЖКИ - буквенно -цифровой Declare LCD_DTPin PORTD.4 ' Порт данных ЖКИ Declare LCD_ENPin PORTD.3 ' Управление линией E Declare LCD_RSPin PORTD.2 ' Управление линией RS Declare LCD_Interface 4 ' Разрядность шины данных LCD_CommandUs = 200 ' Задать паузу между передачей команд на ЖКИ LCD_DataUs = 50 ' Задать паузу между передачей данных на ЖКИ Declare LCD_Lines 2 ' Количество строк ЖКИ Declare SDA_Pin PORTC.4 ' I2C Declare SCL_Pin PORTC.3
ADCON1 = 7
Symbol SOUT=PORTB.0 ' Assign the Speaker PortB.0
Dim INDX As Byte Dim LDAT As Byte Dim SEC As Byte Dim MN As Byte Dim HOUR As Byte 'Time Var Dim DAY As Byte Dim DATE As Byte Dim MONTH As Byte Dim YEAR As Byte Dim VR As Byte
Dim BIN_RVAL As Byte Dim BCD_RVAL As Byte Dim BIN2BCD_VAL As Byte Dim BCD2BIN_VAL As Byte 'BCD/BIN Conver Var Dim TEMP1 As Byte Dim TEMP2 As Byte
Dim Key As Byte Dim KeyD As Byte Dim BTNVAR1 As Byte 'Button Var Dim BTNVAR2 As Byte Dim BTNVAR3 As Byte
Data "SunMonTueWedThuFriSatJanFebMarAprMayJunJlyAugSepOctNovDec"
DelayMS 50 'powerup delay GoSub HI 'Start up Beep 'Busout $D0,$00,[$00] 'Start the clock 'Busout $D0,$07,[$10]
'Busout $D0,$02,[$18] '2lines to set the time 'Busout $D0,$01,[$27] 'Busout $D0,$03,[$05] 'Day 'Busout $D0,$04,[$29] 'Date 'Busout $D0,$05,[$04] 'Month 'Busout $D0,$06,[$04] 'Year
'Busout $D0,$07,[$11] 'LED on 'Busout $D0,$07,[$10] 'LED Flash Output from DS 1307 'Busout $D0,$07,[$00] 'LED off
Start: Cls GoSub ZROBTNVAR RunDisp: 'Main Prog GoSub Disp_TIM Key = 0 KeyD = 255 GoSub Keys If Key = 1 Then GoSub ZROBTNVAR : GoTo MinAdj GoTo RunDisp MinAdj: Cursor 2,2 Print "Adj Min " GoSub TimAdj If Key = 1 Then GoSub ZROBTNVAR : GoTo HourAdj If Key = 2 Then GoSub MinP If Key = 3 Then GoTo Start GoTo MinAdj HourAdj: Cursor 2,2 Print "Adj Hour" GoSub TimAdj If Key = 1 Then GoSub ZROBTNVAR : GoTo DayAdj If Key = 2 Then GoSub HourP If Key = 3 Then GoTo Start GoTo HourAdj DayAdj: Cursor 2,2 Print "Adj Day/Date" GoSub TimAdj If Key = 1 Then GoSub ZROBTNVAR : GoTo MonthAdj If Key = 2 Then GoSub DayP If Key = 3 Then GoTo Start GoTo DayAdj MonthAdj: Cursor 2,2 Print "Adj Month/Year" GoSub TimAdj If Key = 1 Then GoSub ZROBTNVAR : GoTo MinAdj If Key = 2 Then GoSub MonthP If Key = 3 Then GoTo Start GoTo MonthAdj TimAdj: GoSub PrtPN KeyD = 15 GoSub Disp_TIM Key = 0 GoSub Keys Return MinP: BCD2BIN_VAL = MN GoSub BCD2BIN BIN_RVAL = BIN_RVAL + 1 If BIN_RVAL > 59 Then BIN_RVAL = 0 BIN2BCD_VAL = BIN_RVAL GoSub BIN_TO_BCD BusOut $D0,$01 ,[BCD_RVAL] 'Save Mins Return HourP: BCD2BIN_VAL = HOUR GoSub BCD2BIN BIN_RVAL = BIN_RVAL + 1 If BIN_RVAL > 23 Then BIN_RVAL = 0 BIN2BCD_VAL = BIN_RVAL GoSub BIN_TO_BCD BusOut $D0,$02,[BCD_RVAL] 'Save Hours Return DayP: DAY = DAY + 1 If DAY > 7 Then GoSub DateP If DAY > 7 Then DAY = 1 BusOut $D0,$03,[DAY] 'Save Day Return DateP: BCD2BIN_VAL = DATE GoSub BCD2BIN BIN_RVAL = BIN_RVAL + 1 If BIN_RVAL > 31 Then BIN_RVAL = 1 BIN2BCD_VAL = BIN_RVAL GoSub BIN_TO_BCD BusOut $D0,$04,[BCD_RVAL] 'Save Date Return MonthP: MONTH = MONTH + 1 If MONTH > 12 Then GoSub YearP If MONTH > 12 Then MONTH = 1 BusOut $D0,$05,[MONTH] 'Save Month Return YearP: BCD2BIN_VAL = YEAR GoSub BCD2BIN BIN_RVAL = BIN_RVAL + 1 If BIN_RVAL > 20 Then BIN_RVAL = 0 BIN2BCD_VAL = BIN_RVAL GoSub BIN_TO_BCD BusOut $D0,$06,[BCD_RVAL] 'Save Years Return Disp_TIM: BusIn $D1,$3F,[SEC,SEC,MN,HOUR,DAY,DATE,MONTH,YEAR] Cursor 1,4 'Set Display to beginning VR=(day*3)-3 ' Display Day/Date Restore VR For INDX=0 To 2 Read LDAT Print LDAT Next Cursor 1,8 BCD2BIN_VAL=DATE GoSub BCD2BIN GoSub DispBin Cursor 1,11 VR = (((MONTH & $f0)>>4)*10)+(MONTH & $0f) VR=(Vr*3)+18 Restore VR For INDX=0 To 2 Read LDAT Print LDAT Next Print " 20" BCD2BIN_VAL=YEAR GoSub BCD2BIN GoSub DispBin Cursor 1,22 BCD2BIN_VAL=HOUR ' Display Hours/Mins GoSub BCD2BIN GoSub DispBin Print ":" BCD2BIN_VAL=MN GoSub BCD2BIN GoSub DispBin Print ":" BCD2BIN_VAL=SEC GoSub BCD2BIN GoSub DispBin Return BIN_TO_BCD: TEMP1 = Dig BIN2BCD_VAL, 0 TEMP2 = Dig BIN2BCD_VAL, 1 TEMP2 = TEMP2 << 4 ' MOVE NUMBER OVER TO 2ND NIBBLE BCD_RVAL = TEMP1 ^ TEMP2 Return BCD2BIN: TEMP1 = BCD2BIN_VAL & $F ' CONVERT THE VALUES FROM BCD TO BIN TEMP2 = BCD2BIN_VAL & $F0 ' MASK OF EITHER SIDE TEMP2 = TEMP2 >>4 ' DIVIDE BY 16 TEMP2 = TEMP2 * 10 ' X BY 10 BIN_RVAL = TEMP1 + TEMP2 ' NOW ADD THE FIRST NUMBER YOU THOUGHT OF Return DispBin: Print Dec2 BIN_RVAL Return PrtPN: Cursor 2,25 Print "Adj +" Return ZROBTNVAR: GoSub Click BTNVAR1 = 0 : BTNVAR2 = 0 : BTNVAR3 = 0 Return Keys: GoSub ConDly Button PORTA.3,1,KeyD,1,BTNVAR1,1,Key1 Button PORTA.4,1,KeyD,1,BTNVAR2,1,Key2 Button PORTA.5,1,KeyD,1,BTNVAR3,1,Key3 Return Key1: Key = 1 Return Key2: Key = 2 Return Key3: Key = 3 Return ConDly: DelayMS 30 Return Click: Sound SOUT,[120,10] Return HI: Sound SOUT,[70,25] Sound SOUT,[100,15] Return
End
Сообщение отредактировал
proton - Ср, 20.07.2011, 20:26
|
|
|
|
MasterPic |
Дата: Чт, 28.07.2011, 11:56 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
186
Замечания:
±
На сайте с 22.11.2008
Статус:
Offline
|
Вот без комментариев неохота разбираться. Приведи хотя бы кусок, где пытаешься инициализировать? И что значит инициализировать?
|
|
|
|
retas |
Дата: Пт, 29.07.2011, 00:24 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
445
Замечания:
±
На сайте с 10.09.2007
Статус:
Offline
|
http://avrdevices.ru/chasi-realynogo-vremeni-ds1307/#more-513
|
|
|
|
ADMIN |
Дата: Пт, 29.07.2011, 07:03 | Сообщение # 4 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Не надо плодить одно и то же
|
|
|
|
Володимир |
Дата: Сб, 03.03.2012, 12:08 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 22.04.2010
Статус:
Offline
|
Подскажите как решить такую проблему. Сделал себе бортовой компьютер для автомобиля по такой схеме http://www.bk-ukraine.narod.ru/files/shema_mikro3.pdf Собрал несколько аналогичных приборов, на одиончных екземплярах иногда при чтении данных с ДС1307 вместо чтения выполняется команда записи, в результате в ДС1307 записывается произвольная информация и часы останавливаються.
|
|
|
|
terrarus |
Дата: Сб, 03.03.2012, 13:23 | Сообщение # 6 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
На http://terrarus.ucoz.ru/contr_na_pic16/index.html есть полнейшее описание прибора и управляющей программы в котором используются часы ds1307. Прибор и часы исправно работают уже более 2 лет. В приборе есть и кнопки и программа обработки кнопок. И все работает нормально. Конечно программа не совершенна! Сейчас бы я сделалал все иначе, (и уже делаю), но работает она корректно. Посмотрите. может быть моя работа поможет вам в осмыслении ваших проблем.
PS. Советую Вам, никогда у нас на форуме не приводить ссылки, подобные http://www.bk-ukraine.narod.ru/files/shema_mikro3.pdf, которые требуют ввести номер наших отовых телефонов, или какие-то другие личные данные. Лично меня это наводит на мысль, не без основательно, что меня пытаются обокрасть - списать деньги с моего личного счета.
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал
terrarus - Сб, 03.03.2012, 13:50
|
|
|
|
Володимир |
Дата: Сб, 03.03.2012, 13:39 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 22.04.2010
Статус:
Offline
|
Quote (terrarus) На http://terrarus.ucoz.ru/contr_na_pic16/index.html есть полнейшее описание прибора и упарвляющей программы в котором используются часы ds1307. Прибор и часы исправно работают уже более 2 лет. В приборе есть и кнопки и программа обработки кнопок. И все работает нормально. Конечно программа не совершенна! Сейчас бы я сделалал все иначе, (и уже делаю), но работает она корректно. Посмотрите. может быть моя работа поможет вам в осмыслении ваших проблем. У меня тоже, уже несколько лет все работает, главный вопрос не как работать с ДС1307, а как боротся с помехами от автомобиля. Абсолютно одинаковые платы и детали, но одни работают без проблем, а одна работает тольно на не запушенном двигателе, при запуске двигателя при чтении данных с ДС1307 часы останавливаются.
|
|
|
|
terrarus |
Дата: Сб, 03.03.2012, 13:41 | Сообщение # 8 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
На http://terrarus.ucoz.ru/contr_na_pic16/index.html есть полнейшее описание прибора и упарвляющей программы в котором используются часы ds1307. Прибор и часы исправно работают уже более 2 лет. В приборе есть и кнопки и программа обработки кнопок. И все работает нормально. Конечно программа не совершенна! Сейчас бы я сделалал все иначе, (и уже делаю), но работает она корректно. Посмотрите. может быть моя работа поможет вам в осмыслении Ваших проблем. -------------------------------------------- PS. Советую Вам никогда у нас на форуме не приводить ссылки подобные http://www.bk-ukraine.narod.ru/files/shema_mikro3.pdf, которые требуют ввести номера наших сотовых телефонов и которые требуют для доступа скачать какой-то файл, а затем отправить наш номер сотового телефона. Меня, лично, это наводит на мысль, что меня собираются обокрасть.
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
|
|
|
|
Володимир |
Дата: Сб, 03.03.2012, 13:54 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 22.04.2010
Статус:
Offline
|
Quote (terrarus) PS. Советую Вам никогда у нас на форуме не приводить ссылки подобные http://www.bk-ukraine.narod.ru/files/shema_mikro3.pdf которые требуют ввести номера наших сотовых телефонов и которые требуют для доступа скачать какой-то файл, а затем отправить наш номер сотового телефона. Меня, лично, это наводит на мысль, что меня собираются обокрасть. Я конечно извеняюсь если что не так, но только что открывал данную ссылку, и яндекс у меня ничего не просил.
|
|
|
|
terrarus |
Дата: Сб, 03.03.2012, 14:29 | Сообщение # 10 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
Quote (Володимир) как боротся с помехами от автомобиля Я решал эти пробемы так: 1. использованием DC-DC преобразователей по питанию. 2. Использованием оптопар по цифровым входам и выходам микроконтроллера. Этих мер оказывалось предостатосчо!
PS. Да, забыл! Обязательно на всех цепях питания, как сможно ближе к выводам микросхем, ставьте развязывающие конденсароты по 0,01...0,1 мкФ!
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал
terrarus - Сб, 03.03.2012, 14:37
|
|
|
|
Володимир |
Дата: Сб, 03.03.2012, 14:58 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 22.04.2010
Статус:
Offline
|
Quote (terrarus) Я решал эти пробемы так: 1. использованием DC-DC преобразователей по питанию. 2. Использованием оптопар по цифровым входам и выходам микроконтроллера. Этих мер оказывалось предостатосчо! Ну это слишком услажняет схему, тем более, что такой глюк наблюдается на одной из трех плат, и то очень редко, только одна плата из 12 отказалась работать при работающем двигателе. Quote (terrarus) PS. Да, забыл! Обязательно на всех цепях питания, как сможно ближе к выводам микросхем, ставьте развязывающие конденсароты по 0,01...0,1 мкФ! Попробую подпаять прямо к выводам питания. А что если на управляющие выводы SDA SCL повесить конденсаторы для погашения помех?
|
|
|
|
ivan_fd |
Дата: Сб, 03.03.2012, 18:00 | Сообщение # 12 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Quote (Володимир) А что если на управляющие выводы SDA SCL повесить конденсаторы для погашения помех?
Этого делать нельзя. Вообще работать не будет. Подключать согласно даташиту.
|
|
|
|
ADMIN |
Дата: Сб, 03.03.2012, 20:43 | Сообщение # 13 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Quote (Володимир) тем более, что такой глюк наблюдается на одной из трех плат, и то очень редко, только одна плата из 12 отказалась работать при работающем двигателе. Это и называется - русский авось. Работает и ладно. Появился глюк - всЁ виновато, только не собственная непредусмотрительность. Если бы все читали даташиты, таких вопросов возникало бы меньше.
|
|
|
|
terrarus |
Дата: Сб, 03.03.2012, 23:08 | Сообщение # 14 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
451
Замечания:
±
На сайте с 21.08.2008
Статус:
Offline
|
Quote (Володимир) А что если на управляющие выводы SDA SCL повесить конденсаторы для погашения помех? Таким образом завалите фронты сигналов присутствующие на SDA SCL и действительно, как отметил ivan_fd,ничего работать не будет. А вот подключение "развязывающих" конденсаторов по 0,01...0,1 мкф как можно ближе к ножкам питания всех микросхем (не только МК) позволяет устранить савовозбуждение схем по цепям питания (которое, кстати не совсем опытный радиолюбитель может просто не замечать). Эти конденсаторы в этом случае выполняют совсм другую задачу, чем тупое подключение конденсаторов в любые произвольные точки схемы- здесь они принесут только вред. Quote (Володимир) Ну это слишком услажняет схему Тем и отличается профессиональный разработчик радиоаппаратуры от любителя находящегося на стадии раннего радиолюбительства, что первый для достижения устойчивости и надежности работы проектируемого изделия применяет те схемные решения, о чем дилетант даже не подозревает или просто пренебрегает. Вообще проще исключить микросхему реального времени из вашего девайса и поставить рядом с ним бабушкин механический заводной будильник.
Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
|
|
|
|
Володимир |
Дата: Вт, 06.03.2012, 17:20 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 22.04.2010
Статус:
Offline
|
Quote (terrarus) Вообще проще исключить микросхему реального времени из вашего девайса и поставить рядом с ним бабушкин механический заводной будильник. Исключить нельзя, для работы данного устройства используется тактовый сигнал в вывода SQW.
|
|
|
|