News:

Let's find out together what makes a PIC Tick!

Main Menu

DS1307

Started by henktimmerman47@gmail.com, Apr 09, 2023, 09:23 AM

Previous topic - Next topic

henktimmerman47@gmail.com

Ik heb een proefopstelling gemaakt om met een PIC 16F628A het kloksignaal van een DS1307 uit te lezen (zie schema).Allereerst probeer ik met I2COUT een aantal variabelen in het register van de DS1307 te schrijven (bit7 van adres 00H=0, bit6 van 02H=0, bit5 en bit7 van 07H=1). Vervolgens in een oneindige loop het uitlezen van sec., min. enz. Maar wat ik ook doe de resultaten op het display blijven 32 (decimaal). Wat ontbreekt er in de listing?

No message is associated with this attachment. '****************************************************************
'*  Name    : KlokDS1307.BAS                                    *
'*  Author  : Henk Timmerman                                    *
'*  Notice  : Copyright (c) 2022 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 18-01-2023                                        *
'*  Version : 1.0                                               *
'*  Notes   : PIC 16F628A met klok DS1307                       *
'*          : I2E verbinding, print geheugen H00 t/m H06        *
'****************************************************************
DEVICE  16F628A               ;We gebruiken een 16F628A type
CONFIG  HS_OSC, WDT_Off,PWRTE_ON, LVP_OFF, BODEN_OFF, MCLRE_OFF                 
DECLARE ALL_DIGITAL   = TRUE  ;Allle ingangen digitaal
DECLARE XTAL          = 20    ;Kristal 20 MHz
DECLARE LCD_RSPIN = PORTA.2   ;RS pin van LCD verhuizen naar PortA.2
DECLARE LCD_ENPIN = PORTA.3   ;EN pin van LCD verhuizen naar PortA.3

INCLUDE "C:\PICprogrammas\WeerstationOpdrachtcodes.inc"

;Logische constanten
SYMBOL HOOG       = 1         ;Hoog niveau
SYMBOL LAAG       = 0         ;Laag niveau

SYMBOL LED        = PORTA.0
SYMBOL SCL_PIN    = PORTB.3
SYMBOL SDA_PIN    = PORTA.5

;Variabelen declareren
;Word array

;Word

;Byte
DIM Init AS BYTE
DIM Sec AS BYTE
DIM Min AS BYTE
DIM Uur AS BYTE
DIM Dag AS BYTE
DIM Datum AS BYTE
DIM Maand AS BYTE
DIM Jaar AS BYTE
DIM Control AS BYTE

;        76543210
PORTA = %00000001             ;Bij opstarten wordt LED geactiveerd
PORTB = %00000000
TRISA = %11111110             ;A0 uitgang voor LED
TRISB = %11111111             ;USART B2 Moet in rust hoogohmig zijn

DECLARE PORTB_PULLUPS ON
CLEAR
DELAYMS 500
LED = LAAG
Init = %00000000
;SCL_PIN = LAAG
I2COUT SDA_PIN, SCL_PIN, %11010000, $00,[Init]; schrijf osc enabled
DELAYMS 10
I2COUT SDA_PIN, SCL_PIN, %11010000, $02, [Init];schrijf 24h mode
DELAYMS 10
I2COUT SDA_PIN, SCL_PIN, %11010000, $07, [%10010010];bit7 en 5 van ocntrol register=1, 8.192 kHz
DELAYMS 10
;SCL_PIN = HOOG

WHILE 1=1
  ;SCL_PIN = LAAG
  I2CIN SDA_PIN, SCL_PIN, %11010001, $00, [Sec]; uitlezen sec.
  DELAYMS 10
  I2CIN SDA_PIN,SCL_PIN, %11010001, $01, [Min]; uitlezen minuten.
  DELAYMS 10
  I2CIN SDA_PIN,SCL_PIN, %11010001, $02, [Uur]; uitlezen uren.
  DELAYMS 10
  I2CIN SDA_PIN,SCL_PIN, %11010001, $03, [Dag]; uitlezen dag.
  DELAYMS 10
  I2CIN SDA_PIN,SCL_PIN, %11010001, $04, [Datum]; uitlezen datum.
  DELAYMS 10
  I2CIN SDA_PIN,SCL_PIN, %11010001, $05, [Maand]; uitlezen maand.
  DELAYMS 10
  I2CIN SDA_PIN,SCL_PIN, %11011101, $06, [Jaar]; uitlezen jaar.
  DELAYMS 10
  I2CIN SDA_PIN,SCL_PIN, %11011111, $07, [Control]; uitlezen control register.
  DELAYMS 10
  ;SCL_PIN = HOOG
 
  CLS
  PRINT AT 1,1,DEC2 Sec, " ", DEC2 Min, " ", DEC2 Uur, " ", DEC2 Dag; resultaat 32?
  PRINT AT 2,1,DEC2 Datum, " ", DEC2 Maand, " ", DEC2 Jaar, " ", DEC2 Control; resultaat 32?
  ;LED = HOOG
  DELAYMS 5000
  ;LED = LAAG
WEND

John Lawton

Google Translate sayeth:
I made a test set-up to read the clock signal of a DS1307 with a PIC 16F628A (see diagram). First of all, with I2COUT I try to write a number of variables in the register of the DS1307 (bit7 of address 00H=0, bit6 of 02H=0, bit5 and bit7 of 07H=1). Then in an infinite loop reading sec., min. etc. But no matter what I do the results on the display remain 32 (decimal). What's missing from the listing?

John Drew

Henk
Somewhere in the WIKI or in the samples directory of Positron  there is a code to do this.
Using my phone at present so difficult to find. Its 20:30 so family time.
If it's not there let me know as I have the code in one of my programs and I'll look it up tomorrow.
John

normnet

As John suggested a DS1307 inc file is in the following directory on my (normnet) PC:
C:\Users\normnet\PDS\Includes\DS1307.inc

henktimmerman47@gmail.com


Thanks for the tip. I found DS1307_INC. You will find the listing and the schedule in the appendix. The result is not good. 20 is presented 6 times continuously on the screen. What is missing?

Yours sincerely
Henk

John Drew

Do you have pullup resistors on CLK and DTA?
These are required. If you have a board then they may already be present. 4K7 is a good starting point.
John

henktimmerman47@gmail.com

Ja voor pull up heb ik 10k genomen. Ontbreekt er iets in de listing?

groet Henk

Dompie

@henktimmerman47@gmail.com Henk dit is een Engels-talig forum. Vertaal je teksten even met Google Translate naar Engels. Een vraag in het Engels is veel makkelijker te beantwoorden voor niet-Nederlanders.
Groetjes
Johan (Gouda)

Google Translate:
Henk this is an English language forum.  Translate your texts into English with Google Translate.  A question in English is much easier to answer for non-Dutch people.