ywar2 Postat Noiembrie 17, 2011 Partajează Postat Noiembrie 17, 2011 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 I2cstopReturn73!!! Link spre comentariu
yo9hnf Postat Noiembrie 17, 2011 Autor Partajează Postat Noiembrie 17, 2011 Imi da eroare :cry: ... Link spre comentariu
ywar2 Postat Noiembrie 17, 2011 Partajează Postat Noiembrie 17, 2011 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
yo9hnf Postat Noiembrie 17, 2011 Autor Partajează Postat Noiembrie 17, 2011 Am copiat tot codul de la tine si tot imi da eroare. Folosesc Bascom 2.0.7.1 Link spre comentariu
ywar2 Postat Noiembrie 17, 2011 Partajează Postat Noiembrie 17, 2011 1.11.9.0 portabil Link spre comentariu
nico_2010 Postat Noiembrie 17, 2011 Partajează Postat Noiembrie 17, 2011 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
yo9hnf Postat Noiembrie 17, 2011 Autor Partajează Postat Noiembrie 17, 2011 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
ywar2 Postat Noiembrie 17, 2011 Partajează Postat Noiembrie 17, 2011 E normal sa iti plece de la o ora anume, dar cind incerci sa setezi ora din buntoane merge? Link spre comentariu
yo9hnf Postat Noiembrie 17, 2011 Autor Partajează Postat Noiembrie 17, 2011 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
vasile eugen Postat Noiembrie 17, 2011 Partajează Postat Noiembrie 17, 2011 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
ywar2 Postat Noiembrie 17, 2011 Partajează Postat Noiembrie 17, 2011 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
yo9hnf Postat Noiembrie 17, 2011 Autor Partajează Postat Noiembrie 17, 2011 Am incercat si cu codul postat de tine, dar tot nu merge.Am facut o tastatura cu rezistentele de pull-up puse la Vcc dar tot degeaba, ramane blocat la : Time =12:00:01 (12) Link spre comentariu
nico_2010 Postat Noiembrie 17, 2011 Partajează Postat Noiembrie 17, 2011 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
yo9hnf Postat Noiembrie 17, 2011 Autor Partajează Postat Noiembrie 17, 2011 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
nico_2010 Postat Noiembrie 17, 2011 Partajează Postat Noiembrie 17, 2011 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 SubDaca nu este OK, nu vei primi mesajul pe LCD Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum