Taggato: PIC DS1302 DS1307
-
AutorePost
-
13 Settembre 2021 alle 14:12 #10610
Anthony820
PartecipanteSalve,
Sono nuovo del gruppo, e da qualche tempo sto provando a far comunicare un RTC DS1302 con un PIC ma con scarso successo.
Potrebbe qualcuno darmi una mano, in modo.da capire dove possa essere l’errore.
Grazie.Inserisco una parte di codice per la lettura dei secondi.
#define RB1 RST //enable del DS1302 #define RB2 SCLK // clock DS1302 #define RB3 IO // input/output DS1302 Main(){ ANSEL=0b00000000; TRISB=0b00000000; unsigned char=secondi; RST=0; Init_DS1302(); Set_time(); while(1){ Secondi=read_time();} } Init_DS1302(){ Write_time(0xBE); //cmd per dissattivare la protezione Write_time(0x00); //codice disattivamento } Set_time(){ Write_time(0x80); //cmd per scrivere i secondi Write_time(0x00); // valore secondi } Write_time(unsigned char comando){ Int i; RST=1; for(i=0; i<8; i++){ SCLK=0; If((comando&0x80)) IO=1; else IO=0; SCLK=1; } SCLK=0; RST=0; } Read_time(){ int i, valore, valore_finale; valore=0; write_time(0x81); TRISB=0b00001000; RST=1; for(i=0;i<8;i++){ SCLK=1; If(IO&0x01) valore=valore+0x01; else valore=valore +0x00; valore_finale=valore; //salva su valore finale prima dello shift valore=valore <<1; SCLK=0; } TRISB=0b00000000; RST=0; return valore_finale; }
14 Settembre 2021 alle 16:10 #10614Picmicro675
PartecipanteNon si capisce che compilatore usi. Poi dipende da che micro usi. Secondo me non vale la pena comprare della famiglia 16F8xx, meglio quelli più recenti come 16F1xxx che magari trovi già in hardware il necessario per trasmettere.
Poi penso che siano problemi di tempistiche, il foglio dati si riferisce ad un clock massimo di mezzo MHz. Quindi prova ad introdurre qualche NOP o ritardo di qualche ciclo.
In ultimo tentativo dovresti aver un analizzatore logico per vedere il segnale prodotto, al limite un oscilloscopio doppia traccia. Se usi il DS 1307 dovresti attenerti alle specifiche dell’I2C.
Ultimo suggerimento provare con MikroC e le sue librerie. -
AutorePost
- Devi essere connesso per rispondere a questo topic.