Pic +ds1302 ou HT 1380

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Pic +ds1302 ou HT 1380

Mensagempor geraldomelo » 04 Ago 2008 05:10

olhem esse programa :

#include <16F628A.h>
#use delay (clock=20000000)
#fuses HS,NOWDT,PUT,BROWNOUT,NOLVP,NOMCLR
#use fast _io (A)
#use fast_io(B)
#include <regs_16.h>
#include <mod_lcd_pic16F628a.c>
#include <ds1302.c>


void main(void)
{
cmcon=7;
set_tris_a (0);
set_tris_b (0);
output_a(0);
output_b(0);
lcd_ini() ;
rtc_init();
rtc_set_datetime(4,8,8,1,3,15); //rtc_set_datetime(day,mth,year,dow,hour,min)

lcd_escreve('\f'); // apaga lcd
lcd_envia_byte(0,0x0c); // apaga cursor do lcd

While (true)
{ int hr,min,sec ;


rtc_get_time(hr,min,sec);
printf(lcd_escreve , "hora: %u:%u:%u" , hr,min,sec);

delay_ms(200);

lcd_escreve('\f'); // apaga lcd
}}

então pessoal , isso daqui inmprime no LCD do proteus assim :

3: 1 : 0 ai o final ai que está zero , as vezes muda para 3 e só .... engraçado eh que na janelinha do DS1302 qua aparece no proteus , mostra que ele setou certinho para 3 :15 e que tá funcionando ..

ah , outra coisa , nessa chamada para setar :

rtc_set_datetime(day,mth,year,dow,hour,min)

oque eh dow ???

por favor pessoal , me de um help ... já tentei de tudo aqui viu ..



abs

Geraldo
geraldomelo
Byte
 
Mensagens: 267
Registrado em: 14 Out 2006 16:53
Localização: Ribeirão preto - SP

Mensagempor abreucarlos » 04 Ago 2008 08:06

tente isso:

rtc_get_date( day, mth, year, dow);
rtc_get_time( hour, min, sec );

//rotinas do CCS

printf(lcd_putc,"%2X/%2X/%2X \n%2X:%2X:%2X",day,mth,year,hour,min,sec);

dow é o dia da semana, como no datashit: 1 - domingo, 2 - segunda e assim por diante.

Lembre-se, o ds1302 recebe e retorna os valores em BCD..de uma lida no datashit....
abreucarlos
Bit
 
Mensagens: 32
Registrado em: 30 Nov 2006 09:19

Mensagempor mamga » 04 Ago 2008 08:37

Só complementando DOW = Day Of Week

Estou tentando escrever uma rotina para manipulação do 1307 mas estou utilizando o HI-TECH. Muda muita coisa do 1307 para o 1302?
mamga
Nibble
 
Mensagens: 74
Registrado em: 28 Dez 2006 13:04

Mensagempor abreucarlos » 04 Ago 2008 10:25

me parece que só o tipo de comunicação. No DS1302 é SPI e no DS1307 é I²C.
abreucarlos
Bit
 
Mensagens: 32
Registrado em: 30 Nov 2006 09:19

Mensagempor geraldomelo » 05 Ago 2008 18:36

Pessoal , não deu certo ... agora eu coloquei a parte do exemplo e não tá funcionando tbm ..

rtc_get_date( day, mth, year, dow);
rtc_get_time( hr, min, sec );

printf(lcd_escreve, "%02u/%02u/%02u\n\r %02u:%02u:%02u\r",mth,day,year,hr,min,sec);


isso está no exemplo do CCs , e no proteus não funciona , deem uma olhada no printscreen ...( pode dar zoom do lado diretio e acima) percebam que na janelinha que abre do DS1302 , está tudo setado conforme o programa , mas no display não aparece o esperado , fica assim e não muda .. :

http://picasaweb.google.com/geraldo.mar ... 02__HT1380


pessoal , alguém poderia me ajudar ??? alguem aqui já mexeu com esses rtc ?? será que eh no proteus que não funciona ??

abs

Geraldo
geraldomelo
Byte
 
Mensagens: 267
Registrado em: 14 Out 2006 16:53
Localização: Ribeirão preto - SP

Mensagempor amboni » 06 Ago 2008 08:01

cara estes dias tava tentando fazer funcionar o DS1307 que a unica coisa que difere ele (que eu percebi) eh a comunicação de I2c para SPI(1302), e fazer funcionar o relogio, percebi que nao podia ficar lendo a hora todo instante... tipo uma rotian que ficasse lendo o relogio a cada 10ms pq dava pau, ai entao usei um pino do 1307 que da pra ti configurar ele como saida de 1hz, entao no meu pic fazia a leitura do relogio a cada 1 segundo (interrupção exerna) e imprimia no display...... tbm ja usava esse 1 segundo do relogio como base de tempo....
sendo que a reslução dele eh 1 segundo..(pra que ler em tempo menor que isso??)....

meu problema foi esse, quem sabe pode ser o seu tbm pq ambos são identicos...


valeu
amboni
amboni
Nibble
 
Mensagens: 50
Registrado em: 23 Abr 2008 08:26
Localização: Içara - SC

Mensagempor geraldomelo » 07 Ago 2008 03:58

Pessoal , resolvido o problema .... o negócio era que eu não psoo usar a diretiva fast_io , junto com a biblioteca do DS1302 , pois o pino I/O do DS , ora assume saida , ora entrada , e isso eh configorado com saida ou entrada automaticamente pelo CCS pelos comandos output_low ou output_high , e se a diretiva fast_io estiver , isso não funciona ... vc tem que fazer na mão .. o Orcino me deu a Luz ... mas eh cada pegadinha hein ...

abs

Geraldo
geraldomelo
Byte
 
Mensagens: 267
Registrado em: 14 Out 2006 16:53
Localização: Ribeirão preto - SP


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x