Sari la conținut
ELFORUM - Forumul electronistilor

BASCOM


yo9hnf

Postări Recomandate

Da, am vazut ca in codul afisat lipseste partea de setare a orei si cineva a sesizat asta. Iata un cod pe care ti-l propun in baza celor scrise in programul descris acolo:

Seco:         Incr Seco         If Seco > 59 Then Seco = 0         Seco = Makebcd(seco)         I2cstart                                           ' Generate start code         I2cwbyte Ds1307w                                   ' send address         I2cwbyte 0                                         ' starting address in 1307         I2cwbyte Seco         I2cstopReturn'-------------------------------------Mine:         Incr Mine         If Mine > 59 Then Mine = 0         Mine = Makebcd(mine)         I2cstart                                           ' Generate start code         I2cwbyte Ds1307w                                   ' send address         I2cwbyte 1                                         ' starting address in 1307         I2cwbyte Mine         I2cstopReturn'-------------------------------------Hour:         Incr Hour         If Hour > 23 Then Mine = 0         Mine = Makebcd(mine)         I2cstart                                           ' Generate start code         I2cwbyte Ds1307w                                   ' send address         I2cwbyte 2                                         ' adresa orei in 1307         I2cwbyte Hour         I2cstopReturn
73!!!
Link spre comentariu

La mine nu da:

$regfile = "m8def.dat"$crystal = 1000000'------------------------  lcd -----------------------------------------------Config Lcd = 16 * 2Config Lcdpin = Pin , Rs = Pind.0 , E = Pind.1 , Db4 = Pind.2 , Db5 = Pind.3 , Db6 = Pind.4 , Db7 = Pind.5Cls'---------------------------  ds 1307 -----------------------------------------$lib "ds1307clock.lib"'configure the scl and sda pinsConfig Sda = Portd.7Config Scl = Portd.6'address of ds1307Const Ds1307w = &HD0                                        ' Addresses of Ds1307 clockConst Ds1307r = &HD1'------------------------------ key --------------------------------------------Config Pinc.1 = InputConfig Pinc.2 = InputConfig Pinc.3 = InputConfig Pinc.4 = Input'------------------------------------------------------------------------------Config Debounce = 30Dim A As Byte , B As Byte , Data1 As Byte , C As ByteDim Seco As Byte , Mine As Byte , Hour As Byte'----------------------------------------------------------------------------Cursor Off'-----------------------------ClsLocate 1 , 6Lcd "Hello"Locate 2 , 1Lcd "avrprojects.info"Wait 2For A = 1 To 15 Shiftlcd LeftWaitms 300NextCls'-------------------------------------------------------------------------------Main:Do         Gosub Ds1307         Gosub 24_12         Gosub ChekkeyLoop'-------------------------------------------------------------------------------Ds1307:        I2cstart                                            ' Generate start code        I2cwbyte Ds1307w                                    ' send address        I2cwbyte 0                                          ' start address in 1307        I2cstart                                            ' Generate start code        I2cwbyte Ds1307r                                    ' send address        I2crbyte Seco , Ack                                 'sec        I2crbyte Mine , Ack                                 ' MINUTES        I2crbyte Hour , Nack                                ' Hours        I2cstop        Seco = Makedec(seco) : Mine = Makedec(mine) : Hour = Makedec(hour)        If Seco > 59 Then Seco = 0        If Mine > 59 Then Mine = 0        If Hour > 23 Then        Hour = 0        Gosub Seco        End IfReturn'------------------------------------------------------------------------------- 24_12: If Pinc.4 = 1 Then Gosub Disply_24 If Pinc.4 = 0 Then Gosub Disply_12 Return'-------------------------------------------------------------------------------Disply_24:         Locate 1 , 1         Lcd "Time = " ; Hour ; ":" ;         If Mine < 10 Then            Lcd "0" ; Mine ; ":" ;         Else            Lcd Mine ; ":" ;         End If         If Seco < 10 Then            Lcd "0" ; Seco         Else            Lcd Seco         End If         Locate 2 , 6         Lcd "(24)"Return'-------------------------------------------------------------------------------Disply_12:         If Hour = 0 Then Hour = 12         If Hour > 12 Then Hour = Hour - 12         Locate 1 , 1         Lcd "Time = " ; Hour ; ":" ;         If Mine < 10 Then            Lcd "0" ; Mine ; ":" ;         Else            Lcd Mine ; ":" ;         End If         If Seco < 10 Then            Lcd "0" ; Seco         Else            Lcd Seco         End If         Locate 2 , 6         Lcd "(12)"Return'-------------------------------------------------------------------------------Chekkey:         Debounce Pinc.1 , 0 , Seco , Sub         Debounce Pinc.2 , 0 , Mine , Sub         Debounce Pinc.3 , 0 , Hour , SubReturn'---------------------------------------------Seco:         Incr Seco         If Seco > 59 Then Seco = 0         Seco = Makebcd(seco)         I2cstart                                           ' Generate start code         I2cwbyte Ds1307w                                   ' send address         I2cwbyte 0                                         ' starting address in 1307         I2cwbyte Seco         I2cstopReturn'-------------------------------------Mine:         Incr Mine         If Mine > 59 Then Mine = 0         Mine = Makebcd(mine)         I2cstart                                           ' Generate start code         I2cwbyte Ds1307w                                   ' send address         I2cwbyte 1                                         ' starting address in 1307         I2cwbyte Mine         I2cstopReturn'-------------------------------------Hour:         Incr Hour         If Hour > 23 Then Mine = 0         Mine = Makebcd(mine)         I2cstart                                           ' Generate start code         I2cwbyte Ds1307w                                   ' send address         I2cwbyte 2                                         ' adresa orei in 1307         I2cwbyte Hour         I2cstopReturn
Link spre comentariu

Salut tuturor!Pai eroarea asta o sa-ti tot apara pana inlocuiesti etichetele de la subrutine (seco, mine, bla, bla) cu altele care sa difere de variabilele folosite in program.Acesta este doar un punct de vedere.P.E. Am verificat si este corect ceea ce am scris!

Link spre comentariu

Merge acum...partial.Am instalat Bascom 1.11.9 si nu mai imi da eroarea. Am modificat configurarea LCDului si pinii pt butoane. Imi apare la inceput Hello ..avr project, dar cand trebuie sa imi afiseze ora ramane pe :Time =12:00:01 (12) PS : Eu nu am pe placa de dezvoltare (evb 4.3) rezistentele de pull-up de pe butoane.

Link spre comentariu

E normal sa iti plece de la o ora anume, dar cind incerci sa setezi ora din buntoane merge?

Pai nu merge, aici e problema. Nu am cele 3 rezistente de pull-up pe butoane, dar am incercat acum cu o rezistenta de 10k dar nu stiu daca imi face bine contact. O sa atasez niste butoane separate cu rezistentele respective.
Link spre comentariu

Merge acum...partial.Am instalat Bascom 1.11.9 si nu mai imi da eroarea. Am modificat configurarea LCDului si pinii pt butoane. Imi apare la inceput Hello ..avr project, dar cand trebuie sa imi afiseze ora ramane pe :Time =12:00:01 (12) PS : Eu nu am pe placa de dezvoltare (evb 4.3) rezistentele de pull-up de pe butoane.

aceeasi versiune o am si eu si nu da eroare
Link spre comentariu

Uite codul ptr pull-up intern. Probabil va trebui sa il modifici ptr versiunea ta de program:

'------------------------------ key --------------------------------------------Config Pinc.1 = InputConfig Pinc.2 = InputConfig Pinc.3 = InputConfig Pinc.4 = InputPortc = &B00011110                                          'pull-up bitii 1..4'------------------------------------------------------------------------------
Link spre comentariu

Insereaza te rog si comanda I2Cinit dupa acest pasaj:'----------------------------------------------------------------------------Cursor Off'-----------------------------ClsLocate 1 , 6Lcd "Hello"Locate 2 , 1Lcd "avrprojects.info"Wait 2'-------------------------------si dupa aia spune daca merge.Se pare ca uc nu comunica cu DS1307

Link spre comentariu

Asa nu ?

 

Dim Seco As Byte , Mine As Byte , Hour As Byte'----------------------------------------------------------------------------Cursor Off'-----------------------------ClsLocate 1 , 6Lcd "Hello"Locate 2 , 1Lcd "avrprojects.info"Wait 2I2CinitFor A = 1 To 15 Shiftlcd LeftWaitms 300Next

 

Nici asa nu merge.

Link spre comentariu

Testeaza comunicatia cu DS1307, ca mai jos:

Sub Idoicinit:Lcd "Verify COM"I2cinitI2cstart   I2cwbyte DS1307_addr                 ' trimiti pe magistrala adresa DS1307 I2cstop  Waitms 10Lcd "COM OK!"End Sub
Daca nu este OK, nu vei primi mesajul pe LCD
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum
×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări