часы DS12887 под управлением 16f877A на СИ не могу запустить

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Открыл глаза
Сообщения: 54
Зарегистрирован: Пн авг 05, 2013 12:18:46

Сообщение electronik_tver »

Уважаемые форумчане, столкнулся с наверно очень несложной проблемой, помогите пож кто знает,
имеется несколько девайсов DS12887
korpus.JPG
вот такой девайс
(2.52 КБ) 875 скачиваний
это часы реального времени в одном корпусе с батарейкой и кварцем. Знаю что они жутко неудобные и имеются более экономичные микрухи но часы есть и нужно их куданить применить.
Описание на русском читал

даташит на английском переводил
http://www.it.uu.se/edu/course/homepage ... 7-rtc0.pdf

диаграммы и временные характеристики есть,
TimeDelaynumber.JPG
времянки
(87.51 КБ) 813 скачиваний
Timerdelaywaveform.JPG
диаграммы Интел
(36.96 КБ) 590 скачиваний
примеры программ есть, вроде все понятно но неполучается запустить собственную программу.
Реклама
Открыл глаза
Сообщения: 54
Зарегистрирован: Пн авг 05, 2013 12:18:46

Сообщение electronik_tver »

вот пример с какогото буржуйского форума
time.c
(2.78 КБ) 344 скачивания
вот более распространенная в поиске версия Timothy Reitmeyer
clock.c
(13.23 КБ) 264 скачивания
тут еще немного
http://www.electro-tech-online.com/thre ... ion.96376/
http://www.ccsinfo.com/forum/viewtopic.php?p=67343

на стр 37 Радиоежегодник за 1989г хорошо описано про советский аналог
Реклама
Открыл глаза
Сообщения: 54
Зарегистрирован: Пн авг 05, 2013 12:18:46

Сообщение electronik_tver »

вот что получилось у меня:

#include <htc.h>
#include <stdio.h>
#include "usart.h"
#include "hard_config.h"

__CONFIG(HS & WDTDIS & PWRTEN & BOREN & LVPDIS & UNPROTECT );

#define DS_AS RC0
#define DS_WR RC1
#define DS_RD RC2
#define DS_Data PORTD

unsigned char ReadMemory (unsigned char Addr);
void WriteMemory (unsigned char Addr,unsigned char Data);
void ClockInit( void );

near unsigned char hours; //,minutes,seconds,day,mon,year,week,mem;

void main() // начало процедуры
{// установка начальных параметров
GIE = 0;init_comms();ClockInit();
//WriteMemory(0x02,0b00000000);
//hours=ReadMemory(0x02);
while(1) {
//hours=ReadClock(0x02); minutes=ReadClock(0x01); seconds=ReadClock(0x00);
//day=ReadClock(0x04); mon=ReadClock(0x05); year=ReadClock(0x06); week=ReadClock(0x03);
hours=ReadMemory(0x02);printf("\r\n=%d", hours);
DelayS(1);
//if (hours <10) printf("\r\n=0%d", hours); else printf("\r\n=%d", hours);
}// окончание бесконечного цикла
}// окончание процедуры

unsigned char ReadMemory (unsigned char Addr) { //читаем значение данных по адресу Addr
unsigned char temp = 0;
TRISD=0b00000000;
DS_RD=1;DS_WR=1;DS_AS=1;
DS_Data=Addr;
DS_AS=0;DelayUs(1);
DS_RD=0;DelayUs(1);
TRISD=0b11111111;
temp = DS_Data;
DS_RD=1;DS_AS=1;
return temp;}

void WriteMemory (unsigned char Addr, unsigned char Data ) {//записываем значение данных по адресу Addr
DS_RD=1;DS_WR=1;DS_AS=1;
TRISD=0b00000000;
DS_Data=Addr;DS_AS=0; DelayUs(1);
DS_Data=Data;DS_WR=0;DelayUs(1);
DS_WR=1;DS_AS=0;}

void ClockInit( void ){
TRISC0=0x00;TRISC1=0x00;TRISC2=0x00;PORTC=0;
WriteMemory (0x0A, 0b11110100 ); //Регистр А
WriteMemory (0x0B, 0b11111110 ); //Регистр В
}



архив проекта:
Clock_DS12887.zip
(193.3 КБ) 220 скачиваний

пробовал разные типы обмена моторола и интел, и с внешней процедурой и одной сишкой, выдает нули при чтении и часы стоят не меняют секунды, на настройки не отзываются.
Что я сделал не так?




PS Блин вообще тема специальная про часы есть, только увидел , может можно перенести туда
Открыл глаза
Сообщения: 54
Зарегистрирован: Пн авг 05, 2013 12:18:46

Сообщение electronik_tver »

Ну помогите хоть ктонибудь несложный ведь протокол, у меня просто опыта маловато а разобраться хочу, на роботофоруме вообще обсмеяли, типа че тут сложного читаешь мануал и пишешь, а я уже неделю терзаю 20 строчек кода
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Сообщения: 54
Зарегистрирован: Пн авг 05, 2013 12:18:46

Сообщение electronik_tver »

неожиданно обсуждение переместилось сюда :

http://radiokot.ru/forum/viewtopic.php? ... 1#p1876371

если это комуто понадобится
Реклама
Ответить

Вернуться в «Периферия»