Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: demanik  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » DS1307 примеры кода
DS1307 примеры кода
ntro123 Дата: Пн, 01.11.2010, 15:44  |                                                                                                                Сообщение # 16
Группа: Пользователи
Ранг:  Понимаю
Сообщений: 62
Репутация: 0   ±
Замечания:   ±
На сайте с 28.06.2010

Статус: Offline

DAlexV, спасибо! постараюсь разобраться ....
но так и не понял почему если в нажимателе установить между нажатиями 1000 милисекунд
то будет выводить на лсд не 1000, а 800 т.к. куда делись 200 миллисекунд?
ЯНДЕКС Дата: 01.11.2010
DAlexV Дата: Пн, 01.11.2010, 15:55  |                                                                                                                Сообщение # 17
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 697
Репутация: 26   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (ntro123)
куда делись 200 миллисекунд?

Мое предположение что твоя прога внешняя, + нагуженность проца во время анимации, + либо ранше, либо позже срабатывает на внешние раздражители типа кнопок. Могет внутри твоей проги таймер срывается. Переведи в схеме переключатель на 1000mS и посмотри осцилографом период сигнала. Все должно быть впорядке


Будьте оригинальны - не повторяйте чужих ошибок !!!!
Пишу только на Рыбе (SwordFish). Другую пищу не предлагать, на шерсть влияет :)
ntro123 Дата: Вт, 02.11.2010, 16:25  |                                                                                                                Сообщение # 18
Группа: Пользователи
Ранг:  Понимаю
Сообщений: 62
Репутация: 0   ±
Замечания:   ±
На сайте с 28.06.2010

Статус: Offline

DAlexV, ну да скорее всего оно так и есть.
пробывал поставить 4 секунды выводило 0100 (т.е. еслиб небыл сброс на 3 сек вывел бы 3100)
по идеии чем больше задержка между нажатиями тем точнее должно быть, а тут на оборот разница чутле не в 1000 мс.
ПС. нашел хорошию книгу (на мой взгляд хорощию) буду читать учится...
спасибо.
ntro123 Дата: Чт, 18.11.2010, 22:53  |                                                                                                                Сообщение # 19
Группа: Пользователи
Ранг:  Понимаю
Сообщений: 62
Репутация: 0   ±
Замечания:   ±
На сайте с 28.06.2010

Статус: Offline

DAlexV, Если еще актуально то нашел свои исходники программы которая кликает.
Прикрепления: mouse.rar(164.0 Kb)
DAlexV Дата: Чт, 18.11.2010, 22:56  |                                                                                                                Сообщение # 20
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 697
Репутация: 26   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

ntro123, Спасибо, погляжу. Как девайс ??? работает ????

Будьте оригинальны - не повторяйте чужих ошибок !!!!
Пишу только на Рыбе (SwordFish). Другую пищу не предлагать, на шерсть влияет :)
nitrometall Дата: Ср, 08.12.2010, 15:24  |                                                                                                                Сообщение # 21
Группа: Проверенные
Ранг:  Новенький
Сообщений: 17
Репутация: 0   ±
Замечания:   ±
На сайте с 30.10.2010

Статус: Offline

лучше делать часы на DS3231!
Legioner Дата: Чт, 23.11.2017, 12:20  |                                                                                                                Сообщение # 22
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 22
Репутация: 0   ±
Замечания:   ±
На сайте с 22.08.2015

Статус: Offline

Ребята может кто поможет не судите меня строго я только недавно начал изучать, накидал код для считывания времени с микросхемы DS1307 но дисплей выводит 00:00 и время не идет что делать? читал в даташите что надо послать команду start но как это сделать не могу разобратmся. Если можно на picbasic

Код
DEFINE OSC 8              'Назначение частоты генератора 8 МГц
define LCD_DREG PORTB     'Порт данных ЖКИ
define LCD_DBIT 0         'Вывод порта Бит данных ЖКИ
define LCD_RSREG PORTB    'Управление линией RS
define LCD_RSBIT 4        'Вывод порта линией RS
define LCD_EREG PORTB     'Управление линией E
define LCD_EBIT 5         'Вывод порта линией E
define LCD_BITS 4         'Разрядность шины данных
define LCD_LINES 2        'Количество строк ЖКИ
define LCD_COMMANDUS 2000 'Задержка перед посылкой данных
define LCD_DATAUS 50      'Задержка перед посылкой данных
define I2C_SDA PORTC.4    'Подключение часов к порту С
define I2C_SCL PORTC.3    'Подключение часов к порту С

TRISB = %11000000   'Установка порта В c 0 по 5 в состояние выхода а с 6 по 7 как вход
TRISC = %11111100   'Установка порта C в состояние выхода
'*******************************************************************************
CEKYN VAR BYTE       'Переменная для секунд
MINUT var byte       'Переменная для минут
MINUT_LCD var byte   'Переменная для вывода на дисплей минут
CHASI var byte       'Переменная для часов
CHASI_LCD var byte   'Переменная для вывода на дисплей часов
DNI VAR BYTE         'Переменная для дней
DEN VAR BYTE         'Переменная для дней недели
MESATZ VAR BYTE      'Переменная для месяцев
GOD VAR BYTE         'Переменная для год
clock_temp var byte  'Переменная для временного хранения значений времени
clock_temp1 var byte 'Переменная для временного хранения значений времени
MINUT_SET var byte   'Переменная для значений установки минут
CHASI_SET var byte   'Переменная для значений установки часов
SEK var byte         'Переменная для временного хранения значений времени

'*******************************************************************************
main:
gosub Clock_read                         
lcdout $FE,1
lcdout $FE,$0C," T=",dec2 CHASI_LCD,":",dec2 MINUT_LCD
pause 500  
goto main

'*******************************************************************************
Clock_read:
I2CREAD PORTC.4,PORTC.3,$D0,0,[CEKYN,MINUT,CHASI,DNI,DEN,MESATZ,GOD]
clock_temp = MINUT
GOSUB RAS_VREMYA
MINUT_LCD = clock_temp
clock_temp = CHASI
GOSUB RAS_VREMYA
CHASI_LCD = clock_temp
RETURN

RAS_VREMYA:
clock_temp1 = clock_temp & 15
clock_temp = clock_temp >> 4
clock_temp = clock_temp1 + 10 * clock_temp
RETURN
'*******************************************************************************

Сообщение отредактировал Legioner - Чт, 23.11.2017, 12:20
ivan_fd Дата: Чт, 23.11.2017, 14:33  |                                                                                                                Сообщение # 23
Группа: Модераторы
Ранг:  Специалист
Сообщений: 941
Репутация: 70   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Legioner,
при включении питания начальное состояниевсех регистров не определено. Поэтому необходимо принудительно включать тактовый генератор (бит CH = 0 в регистре 00H) во время начальной инициализации.
Так же желательно подцепить батарейку, так как может работать не стабильно, а может и вовсе не запустится.
И еще одно, адресация для чтения $D1, для записи $D0.

Инициализация:

Код
seconds VAR BYTE

I2CREAD PORTC.4,PORTC.3,$D1,0,
[seconds]seconds = seconds & $7F ; тут точно не помню, правильно ли написал команду логического И, так как нету у меня PicBasicPro
I2CWRITE PORTC.4,PORTC.3,$D0,0,[seconds]


Меня все время преследуют умные мысли...но я быстрее!!!
Сообщение отредактировал ivan_fd - Чт, 23.11.2017, 14:35
Legioner Дата: Чт, 23.11.2017, 14:48  |                                                                                                                Сообщение # 24
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 22
Репутация: 0   ±
Замечания:   ±
На сайте с 22.08.2015

Статус: Offline

ivan_fd, получается код должен выглядеть так?! и ещё один вопрос в подпрограмме чтения данных с ds1307 правильно ли записана мной команда
I2CREAD PORTC.4,PORTC.3,$D0,0,[CEKYN,MINUT,CHASI,DNI,DEN,MESATZ,GOD] учитывая вашу подсказку 
Код
DEFINE OSC 8              'Назначение частоты генератора 8 МГц
define LCD_DREG PORTB     'Порт данных ЖКИ
define LCD_DBIT 0         'Вывод порта Бит данных ЖКИ
define LCD_RSREG PORTB    'Управление линией RS
define LCD_RSBIT 4        'Вывод порта линией RS
define LCD_EREG PORTB     'Управление линией E
define LCD_EBIT 5         'Вывод порта линией E
define LCD_BITS 4         'Разрядность шины данных
define LCD_LINES 2        'Количество строк ЖКИ
define LCD_COMMANDUS 2000 'Задержка перед посылкой данных
define LCD_DATAUS 50      'Задержка перед посылкой данных
define I2C_SDA PORTC.4    'Подключение часов к порту С
define I2C_SCL PORTC.3    'Подключение часов к порту С

TRISB = %11000000   'Установка порта В c 0 по 5 в состояние выхода а с 6 по 7 как вход
TRISC = %11111100   'Установка порта C в состояние выхода
'*******************************************************************************
CEKYN VAR BYTE       'Переменная для секунд
MINUT var byte       'Переменная для минут
MINUT_LCD var byte   'Переменная для вывода на дисплей минут
CHASI var byte       'Переменная для часов
CHASI_LCD var byte   'Переменная для вывода на дисплей часов
DNI VAR BYTE         'Переменная для дней
DEN VAR BYTE         'Переменная для дней недели
MESATZ VAR BYTE      'Переменная для месяцев
GOD VAR BYTE         'Переменная для год
clock_temp var byte  'Переменная для временного хранения значений времени
clock_temp1 var byte 'Переменная для временного хранения значений времени
MINUT_SET var byte   'Переменная для значений установки минут
CHASI_SET var byte   'Переменная для значений установки часов
SEK var byte         'Переменная для временного хранения значений времени
seconds var byte

I2CREAD PORTC.4,PORTC.3,$D1,0,
[seconds]seconds = seconds & $7F 
I2CWRITE PORTC.4,PORTC.3,$D0,0,

[seconds]'*******************************************************************************
main:
gosub Clock_read                         
lcdout $FE,1
lcdout $FE,$0C," T=",dec2 CHASI_LCD,":",dec2 MINUT_LCD
pause 500  
goto main

'*******************************************************************************
Clock_read:
I2CREAD PORTC.4,PORTC.3,$D0,0,[CEKYN,MINUT,CHASI,DNI,DEN,MESATZ,GOD]
clock_temp = MINUT
GOSUB RAS_VREMYA
MINUT_LCD = clock_temp
clock_temp = CHASI
GOSUB RAS_VREMYA
CHASI_LCD = clock_temp
RETURN

RAS_VREMYA:
clock_temp1 = clock_temp & 15
clock_temp = clock_temp >> 4
clock_temp = clock_temp1 + 10 * clock_temp
RETURN
'*******************************************************************************


Цитата ivan_fd ()
И еще одно, адресация для чтения $D1, для записи $D0.

Сообщение отредактировал Legioner - Чт, 23.11.2017, 15:15
xvovanx Дата: Чт, 23.11.2017, 16:51  |                                                                                                                Сообщение # 25
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 317
Репутация: 16   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата Legioner ()
правильно ли записана мной команда
I2CREAD PORTC.4,PORTC.3,$D0,0,[CEKYN,MINUT,CHASI,DNI,DEN,MESATZ,GOD]

Я использую команды BusIn и BusOut при работе с часами I2C
Прикрепления: 0292352.png(1.2 Kb) · 8776563.png(1.5 Kb) · 1960503.png(1.5 Kb)
Legioner Дата: Чт, 23.11.2017, 16:55  |                                                                                                                Сообщение # 26
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 22
Репутация: 0   ±
Замечания:   ±
На сайте с 22.08.2015

Статус: Offline

Цитата xvovanx ()
Я использую команды BusIn и BusOut при работе с часами I2C
А разве PicBasic поймет эти команды??
Откомпилировал код с поправками от ivan_fd зашил в камень сейчас все отлично работает. Спасибо всем!
xvovanx Дата: Чт, 23.11.2017, 22:01  |                                                                                                                Сообщение # 27
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 317
Репутация: 16   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата Legioner ()
А разве PicBasic поймет эти команды??

А почему бы и нет, это ж стандартные команды для работы с шиной I2C
Прикрепления: 6702130.png(111.5 Kb)
Legioner Дата: Пт, 24.11.2017, 06:36  |                                                                                                                Сообщение # 28
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 22
Репутация: 0   ±
Замечания:   ±
На сайте с 22.08.2015

Статус: Offline

xvovanx, Это я так понял для Proton?! я начал изучать контроллеры на MicroCode Studio. из учебника команды у меня такие  если я не прав исправьте меня, критика и тыканье носом приветствуется.
Прикрепления: 0827919.jpg(193.6 Kb)
xvovanx Дата: Пт, 24.11.2017, 23:55  |                                                                                                                Сообщение # 29
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 317
Репутация: 16   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Цитата Legioner ()
Это я так понял для Proton?!

Да для Протона, пользуюсь этим
https://files.inbox.lv/ticket....+PDF.7z

Сообщение отредактировал xvovanx - Сб, 25.11.2017, 00:03
Форум Picbasic.ru » Программирование МК » Proton PicBasic » DS1307 примеры кода
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: