Vai al contenuto
PLC Forum


DS1307 E CB220


fetente

Messaggi consigliati

Buongiorno a tutti,

sono nuovo, pertanto, mi presento. Mi chiamo Andrea e sono dipendente di un'Azienda di riciclo materie plastiche. Siccome ho fatto diversi programmi con PLC in passato, adesso mi hanno chiesto di fare il programma per una applicazione un po' particolare. Ho già fatto tutto quello che potevo per quanto riguarda l'automazione ecc, lasciando per ultimo il problema del tempo. In sostanza, ho bisogno di avere data e ora di un certo evento, e l'unico modo per farlo è usare un RTC. Ho fatto tutto il programma con un Cubloc CB220 (lo avevo comprato tanto tempo fa, ma non ci ho mai fatto niente, quindi l'ho utilizzato). Il problema è che non capisco come fare a farlo dialogare con l'RTC. Di esempi sul web ce ne sono tanti, ma tutti utilizzano librerie preconfezionate che non posso utilizzare (tipo arduino ecc). Qualcuno ha idea di come fare?

Grazie a tutti,

 

Andrea

Link al commento
Condividi su altri siti


Non ci giuro però non ho il tempo per adesso di approfondire..se vuoi guarda qui. E' solo un esempio e credo che guardando gli sheets potrai rendertene conto da solo..

Link al commento
Condividi su altri siti

Ciao, in effetti, ieri sera, ho guardato i datasheet e ho visto che uno è un SPI e l'altro I2C. Questa mattina presto, mi sono messo a studiare un po' il ds del 1307 e ho cercato di cavarne qualcosa. Oggi pomeriggio faccio le prime prove

Nel frattempo, se qualcuno avesse già scritto qualcosa....

Grazie,

 

 

Andrea

Link al commento
Condividi su altri siti

Dopo un po' di ore, questo è il risultato....

Dim rec(15) As Byte

Set I2c 9,8


Sub ReadRTC()
 Dim minuti As Byte
 Dim ore As Byte
 Dim gg As Byte
 Dim giorno As Byte
 Dim mese As Byte
 Dim anno As Byte
 Dim ss As String
 Dim tmph As Integer
 Dim tmpl As Integer
 Dim r As Integer
 
 I2cstart
 r=I2cwrite(&b11010000)           'slave address write mode
 If r=1 Then errore 0
 r=I2cwrite(&H01)                      'puntatore dell'indirizzo partendo da 1 (non ci interessano i secondi)
 If r=1 Then errore 1
 I2cstart
 r=I2cwrite(&b11010001)          'slave address read mode
 If r=1 Then errore 9
 minuti=I2cread(0)                    'da qui leggo e il puntatore dell'indirizzo incrementa di 1 ad ogni lettura
 tmph=minuti.Nib1                   'leggo il nibble superiore per trovare le decine
 tmph=tmph*10                        'e lo moltiplico per 10
 tmpl=minuti.Nib0                    'leggo il nibble inferiore per trovare le unità
 minuti=tmpl+tmph                   'che sommo alle decine lette in precedenza
 
 ore=I2cread(0)                        'ripeto l'operazione per tutte le altre letture
 tmph=ore.Nib1
 tmph=tmph*10
 tmpl=ore.Nib0
 ore=tmpl+tmph
 
 gg=I2cread(0)                        'il numero di giorno (da 1 a 7) non mi interessa ma lo devo leggere per incrementare il puntatore
 
 giorno=I2cread(0)
 tmph=giorno.Nib1
 tmph=tmph*10
 tmpl=giorno.Nib0
 giorno=tmpl+tmph
 
 mese=I2cread(0)
 tmph=mese.Nib1
 tmph=tmph*10
 tmpl=mese.Nib0
 mese=tmpl+tmph
 
 anno=I2cread(0)
 tmph=anno.Nib1
 tmph=tmph*10
 tmpl=anno.Nib0
 anno=tmpl+tmph
 
 I2cstop
 
 Delay 15
 
 If Len(Dec giorno)=1 Then             'aggiungo uno '0' se il giorno va da 1 a 9 per formattare la data gg/mm/aa
 ss="D=0" + Dec giorno
 Else
 ss="D=" + Dec giorno
 End If
 
 If Len(Dec mese)=1 Then
 ss=ss + "/0" + Dec mese
 Else
 ss=ss + "/" + Dec mese
 End If
 
 ss=ss + "/" + Dec anno
 Putstr 0, ss
 Delay 200
 
 ss="H=" + Dec ore
 
 If Len(Dec minuti)=1 Then                            'faccio la stessa cosa con l'ora per formattarla hh:mm
 ss=ss + ":0" + Dec minuti
 Else
 ss=ss + ":" + Dec minuti
 End If
 Putstr 0, ss
 Delay 200
End Sub
 
Sub errore(sas As Integer)
 Debug "Errore" + Dec sas
End Sub

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...