{"id":970,"date":"2019-01-23T21:38:30","date_gmt":"2019-01-23T21:38:30","guid":{"rendered":"http:\/\/mikrobotik.com\/wp2\/?p=970"},"modified":"2023-04-14T15:31:39","modified_gmt":"2023-04-14T12:31:39","slug":"rtc-entegreler","status":"publish","type":"post","link":"https:\/\/www.mikrobotik.com\/wp2\/2019\/01\/23\/rtc-entegreler\/","title":{"rendered":"RTC saat entegreleri i\u00e7in k\u00fct\u00fcphane aramaya son."},"content":{"rendered":"<p>RTC saat entegrelerini kullan\u0131rken devaml\u0131 k\u00fct\u00fcphane aray\u0131\u015f\u0131 i\u00e7erisine giriliyor. Fakat k\u00fct\u00fcphaneler kullan\u0131c\u0131lar taraf\u0131ndan de\u011fi\u015fikli\u011fe u\u011frad\u0131\u011f\u0131ndan program\u0131n\u0131z \u00e7al\u0131\u015f\u0131rken birden \u00e7al\u0131\u015fmaz olabiliyor.<br \/>\nHele bir de ayn\u0131 isimde k\u00fct\u00fcphaneler ise, g\u00fcncelleme yap\u0131ld\u0131\u011f\u0131nda, eski k\u00fct\u00fcphane de\u011fi\u015fiyor ve \u00e7al\u0131\u015fan program \u00e7al\u0131\u015fmaz olabiliyor.<br \/>\n<span style=\"color: #ff0000;\"><strong>\u00c7are nedir.<\/strong><\/span> <strong>K\u00fct\u00fcphanesiz kolay eri\u015fim. Program sizin program\u0131n\u0131z olacak kafan\u0131z kar\u0131\u015fmayacak.<\/strong><span style=\"color: #ff6600;\"><br \/>\n<\/span><span style=\"color: #ff0000;\"><strong>NOT : Bu yaz\u0131n\u0131n sonunda 3 kablo ileti\u015fim ve I2C ileti\u015fimi \u00f6\u011frenmi\u015f oldu\u011funuzdan I2C ve 3 kablo ileti\u015fim ile haberle\u015fme yapan di\u011fer sens\u00f6rler ve cihazlar ile k\u00fct\u00fcphane olmaks\u0131z\u0131n haberle\u015febileceksiniz. Haberle\u015fme tekni\u011fi ayn\u0131 olduktan sonra yap\u0131lacak tek \u015fey, Datasheete bak\u0131p bilginin bulundu\u011fu registerleri ( Yazma\u00e7lar\u0131 ) \u00f6\u011frenmek ve kulland\u0131\u011f\u0131m\u0131z sens\u00f6r ya da mod\u00fcl\u00fcn fonksiyonlar\u0131n\u0131 bilmektir.<\/strong><\/span><\/p>\n<h3 style=\"text-align: center;\"><strong>Kolay m\u0131?<\/strong>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0<strong>\u00c7ok kolay olaca\u011f\u0131n\u0131 g\u00f6receksiniz.<\/strong><\/h3>\n<p>Tek kablo ileti\u015fimi \u00f6\u011frenmek istiyorsan\u0131z, DS18B20 s\u0131cakl\u0131k sens\u00f6r\u00fcn\u00fc anlatt\u0131\u011f\u0131m <a href=\"https:\/\/www.mikrobotik.com\/wp2\/2018\/09\/28\/ds18b20-isi-sensoru-orneklerle-detayli-anlatim-pic-ve-arduino\/\" target=\"_blank\" rel=\"noopener\"><strong>yaz\u0131ma g\u00f6z atabilirsiniz.\u00a0<\/strong><\/a><\/p>\n<p>Her ne kadar anlat\u0131lanlar Arduino konusu gibi g\u00f6r\u00fcnse de t\u00fcm i\u015flemcilerde durum de\u011fi\u015fmez. Bir mod\u00fcl\u00fc sadece k\u00fct\u00fcphane ile \u00e7al\u0131\u015ft\u0131r\u0131rsan\u0131z, di\u011fer mod\u00fcllerde de k\u00fct\u00fcphane arars\u0131n\u0131z. Bulamad\u0131\u011f\u0131n\u0131zda kullanamazs\u0131n\u0131z. Haberle\u015fme sistemlerini \u00f6\u011frendi\u011finizde K\u00fct\u00fcphane aray\u0131\u015f\u0131na girmeden mod\u00fclleri kullanabilirsiniz.<br \/>\nBurada arduino i\u00e7in WIRE k\u00fct\u00fcphanesi I2C i\u00e7in kullan\u0131lm\u0131\u015ft\u0131r. Picbasic te I2C komutlar\u0131 vard\u0131r . <strong><span style=\"color: #ff6600;\">Di\u011fer dillerde de haberle\u015fme i\u00e7in, komut yada k\u00fct\u00fcphaneler vard\u0131r. \u00d6nemli olan haberle\u015fmeyi bilmek ve datasheet dedi\u011fimiz kullan\u0131m kitap\u00e7\u0131klar\u0131ndan faydalanabilmektir.\u00a0<\/span><\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><strong>K\u00fct\u00fcphane konusuna bakal\u0131m.<\/strong><\/span> <strong>T\u00fcm resimler k\u00fct\u00fcphane isimleri olarak RTClib.h ve RTClib.cpp yi kullan\u0131yor. B<\/strong><strong>oyutlar\u0131na bakarsan\u0131z hi\u00e7biri, birbirinin ayn\u0131 de\u011fil.<\/strong><span style=\"color: #ff6600;\"><br \/>\n<\/span>Bunlardan birini k\u00fct\u00fcphane olarak koydunuz, ya g\u00fcncelleme geldi\u011finde de\u011fi\u015firse, ya da ayn\u0131 isimde, k\u00fct\u00fcphane kullanan birinin program\u0131n\u0131 derlersiniz, fakat k\u00fct\u00fcphane de kullan\u0131lan fonksiyon isimleri gibi parametreler uymaz. Bundan dolay\u0131 derlenemez, ya da do\u011fru \u00e7al\u0131\u015fmaz. Bir de buna kullanmad\u0131\u011f\u0131n\u0131z fonksiyonlar\u0131n k\u00fct\u00fcphane de olup program\u0131n\u0131za eklenmesi var.<br \/>\nB\u00fct\u00fcn bunlar\u0131n \u00f6tesine ge\u00e7ersek, siz bir RTC entegresi ald\u0131n\u0131z fakat k\u00fct\u00fcphane bununla uyumsuz. Belki de k\u00fct\u00fcphanesi yok.<br \/>\n<img decoding=\"async\" class=\"wp-image-971 alignleft lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/RTClib_5.jpg\" alt=\"\" width=\"298\" height=\"232\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 298px; --smush-placeholder-aspect-ratio: 298\/232;\" \/> <img decoding=\"async\" class=\"wp-image-972 alignright lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/RTClib_1.jpg\" alt=\"\" width=\"233\" height=\"251\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 233px; --smush-placeholder-aspect-ratio: 233\/251;\" \/> <img decoding=\"async\" class=\"wp-image-973 alignleft lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/RTClib_2.jpg\" alt=\"\" width=\"218\" height=\"259\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 218px; --smush-placeholder-aspect-ratio: 218\/259;\" \/><img decoding=\"async\" class=\"wp-image-974 alignleft lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/RTClib_3.jpg\" alt=\"\" width=\"182\" height=\"209\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 182px; --smush-placeholder-aspect-ratio: 182\/209;\" \/> <img decoding=\"async\" class=\"wp-image-975 alignright lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/RTClib_4.jpg\" alt=\"\" width=\"190\" height=\"221\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 190px; --smush-placeholder-aspect-ratio: 190\/221;\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>.<\/p>\n<h3><span style=\"color: #ff6600;\"><strong>B\u00fct\u00fcn bunlar\u0131 bir kenara koyup, kendi RTC entegrenize ve benzer mod\u00fcllere, kolay eri\u015fim program\u0131\u00a0yaz\u0131n.<\/strong><\/span><\/h3>\n<p>Entegrelerin Datasheetlerine bakarak hangi haberle\u015fme sistemini kulland\u0131\u011f\u0131n\u0131 \u00f6\u011frenebiliriz. Buna g\u00f6re kullanaca\u011f\u0131m\u0131z haberle\u015fme metodunu se\u00e7eriz.<br \/>\n<span style=\"color: #ff6600;\"><strong>RTC entegresini nas\u0131l se\u00e7eriz.<\/strong><\/span>\u00a0Genelde saat s\u00f6z konusu oldu\u011funda hemen RTC entegresi kullan deriz. Do\u011fru, yan\u0131na da bir s\u0131cakl\u0131k sens\u00f6r\u00fc koyar\u0131z. Bu da do\u011fru. Program\u0131m\u0131z\u0131 yaparken harici belle\u011fe de ihtiyac\u0131m\u0131z olur bir de 24C16 gibi bir I2C kullanan haf\u0131za entegresi de kullan\u0131r\u0131z. B\u00fct\u00fcn bunlar\u0131n yerine DS323x entegre kullanmaya ne dersiniz. Hem RTC , hem S\u0131cakl\u0131k sens\u00f6r\u00fc, hem de ekstra haf\u0131za.<br \/>\n<span style=\"color: #ff6600;\">Se\u00e7iminizi yaparken kolaya ka\u00e7may\u0131p benzer sistemleri incelemenizde fayda var. K\u00fct\u00fcphanesi olan bir entegre kullan\u0131r\u0131m demeyin, diye bu yaz\u0131y\u0131 yazd\u0131m.\u00a0<\/span><\/p>\n<p><span style=\"color: #ff6600;\"><br \/>\n<\/span><img decoding=\"async\" class=\"aligncenter size-full wp-image-1043 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/rtc1.jpg\" alt=\"\" width=\"660\" height=\"358\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 660px; --smush-placeholder-aspect-ratio: 660\/358;\" \/><br \/>\n\u00d6rnek olarak yukar\u0131daki resimdeki mod\u00fcle bakabilirsiniz. Bu mod\u00fclde DS3231 kullan\u0131lm\u0131\u015f. Bu entegrede haf\u0131za sistemi yok. Bunun yerine ekstradan 256 byte&#8217;l\u0131k bir haf\u0131za eklenmi\u015f.<\/p>\n<p><strong>Siz olsan\u0131z haf\u0131zaya ihtiyac\u0131n\u0131z da varsa DS3232 entegresini se\u00e7ermiydiniz. Hem\u00a0 236 byte haf\u0131zas\u0131 olan ve s\u0131cakl\u0131k sens\u00f6r\u00fc bulunan. (DS3231 de de s\u0131cakl\u0131k sens\u00f6r\u00fc vard\u0131r.)<\/strong><\/p>\n<p><strong>DS1302 :<\/strong> 3 kablolu haberle\u015fme kullan\u0131r. Senkronize seri ileti\u015fim protokol\u00fcd\u00fcr. \u00a0Bu protokole uygun program mant\u0131\u011f\u0131 ve videosu a\u015fa\u011f\u0131dad\u0131r.<\/p>\n<p><strong>DS1307 :<\/strong> I2C haberle\u015fme protokol\u00fcn\u00fc kullan\u0131r. Bu zaten Arduino kullan\u0131c\u0131lar\u0131nda wire.h k\u00fct\u00fcphanesi demektir. Bu k\u00fct\u00fcphaneyi kullanmam\u0131z gerekir. Protokol\u00fcn kar\u0131\u015f\u0131k olmas\u0131ndan dolay\u0131, kullanm\u0131\u015f olsak da, biraz daha ileri seviyeye geldi\u011finizde buna da ihtiyac\u0131n\u0131z olmaz.<br \/>\nDi\u011fer programlama dili kullan\u0131c\u0131lar\u0131 kendi programlama dillerinin gere\u011fi olarak, I2C k\u00fct\u00fcphanelerini ya da komutlar\u0131n\u0131 kullanabileceklerdir.<\/p>\n<p><strong>DS3231 ve DS3232 :<\/strong> I2C haberle\u015fme protokol\u00fcn\u00fc kullan\u0131r. <span style=\"color: #ff6600;\"><strong>Hatta baz\u0131 parametreleri de\u011fi\u015ftirerek saat k\u0131sm\u0131 i\u00e7in DS1307 ile ayn\u0131 program\u0131 kullanabilirsiniz.<\/strong><\/span> ( Bu konu videolarda g\u00f6sterilecektir.) DS323X diye an\u0131lan 3231,3232 gibi seri entegrelerin bilgileri a\u015fa\u011f\u0131daki tabloda yer almaktad\u0131r. Ayr\u0131ca farkl\u0131l\u0131klar\u0131n\u0131 g\u00f6rmek i\u00e7in <a href=\"https:\/\/pdfserv.maximintegrated.com\/en\/an\/AN5143.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Bu Sayfaya Bakabilirsiniz.<\/strong><\/a><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-989 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/ds323X-entegretablo.jpg\" alt=\"\" width=\"663\" height=\"325\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 663px; --smush-placeholder-aspect-ratio: 663\/325;\" \/><br \/>\nBu entegreler haberle\u015fme protokol\u00fc olarak farkl\u0131 protokol kullansa da g\u00f6nderdi\u011fi datalar,\u00a0<strong>BCD kodlamay\u0131 kullan\u0131r.<\/strong> Amat\u00f6r olanlar DEC, HEX, BIN gibi parametreleri bilirler. Bunlar 10luk, 16l\u0131k, 2 lik say\u0131 sistemleridir.BCD ise 4 bitlik yap\u0131s\u0131 ile 0-9 aras\u0131 say\u0131lan, say\u0131lar\u0131 temsil eder. Normalde 4 bit 0-15 e kadar saysa da BCD kodlamada say\u0131lar\u0131n sonu 9 dur.<\/p>\n<p>BCD de nereden \u00e7\u0131kt\u0131 diyeceksiniz. <span style=\"color: #ff6600;\"><strong>BCD kolay bir sistemdir merak<\/strong> etmeyin.<br \/>\n<span style=\"color: #000000;\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-983 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/images.png\" alt=\"\" width=\"412\" height=\"122\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 412px; --smush-placeholder-aspect-ratio: 412\/122;\" \/>Yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi bir \u00e7evrim yap\u0131ld\u0131\u011f\u0131nda 8 bitlik verinin birbiri ile ayn\u0131 olmad\u0131\u011f\u0131n\u0131 g\u00f6rebilirsiniz. \u00c7\u00fcnk\u00fc BCD kodlama 8 bit de\u011fildir. 2 adet 4 bit say\u0131 8 bit gibi g\u00f6r\u00fcnse de hepsi 4 bitlik olarak kendi aras\u0131nda ayr\u0131l\u0131r. A\u015fa\u011f\u0131daki \u00f6rneklerde bunu g\u00f6rebilirsiniz.<br \/>\n<\/span><\/span><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-985 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/01-10-binary-to-BCD-by-fours.png\" alt=\"\" width=\"512\" height=\"154\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 512px; --smush-placeholder-aspect-ratio: 512\/154;\" \/><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-984 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/Binary_clock.png\" alt=\"\" width=\"538\" height=\"394\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 538px; --smush-placeholder-aspect-ratio: 538\/394;\" \/><\/p>\n<p>Yukar\u0131daki gibi saate 10:37:49 yazmak isterseniz kodu BCD ye \u00e7evirmeniz gerekir. Son \u015fekilde a\u015fa\u011f\u0131dan yukar\u0131 do\u011fru 4 bit temsil edilmi\u015ftir.<br \/>\n<strong>\u00c7al\u0131\u015fma mant\u0131\u011f\u0131 \u015fudur.<\/strong><br \/>\nEntegreden gelen BCD yi decimal dedi\u011fimiz 10 luk sisteme \u00e7evirip i\u015flemlerimizi yapar\u0131z. \u00c7\u0131kan say\u0131y\u0131 ise BCD ye \u00e7evirerek RTC entegresine yollar\u0131z. (BCD to DEC \u00a0 ve DEC to BCD).<\/p>\n<p><strong>\u00d6rnek DEC to BCD : RTC ye g\u00f6nderece\u011fimiz bilgiyi BCD ye \u00e7eviririz.<\/strong><br \/>\nValue=49; \u00a0Value=(Value\/10*16) + (Value%10); \/\/ saniye<br \/>\n<strong>\u00f6rnek BCD to DEC : RTC den gelen bilgiyi ayar yapmak i\u00e7in DEC de\u011ferine \u00e7eviririz.<\/strong><br \/>\nValue=(Value\/16 *10) + (Value%16);<br \/>\n<span style=\"color: #ff6600;\">Bunlar arduino i\u00e7in standart kal\u0131pt\u0131r kullanabilirsiniz. Ayr\u0131ca di\u011fer dillerde farkl\u0131 form\u00fcller kullan\u0131labilir.<br \/>\n<\/span><strong>Mesela <span style=\"color: #ff6600;\">picbasic<\/span> te kullan\u0131lan \u015fekil \u015fudur.<\/strong> <span style=\"color: #ff6600;\"><br \/>\n<\/span><strong>TEMP=(SN DIG 1)&lt;&lt;4+SN DIG 0:SN=TEMP \u00a0 \u00a0 (Bu sat\u0131r DEC to BCD)<\/strong><span style=\"color: #ff6600;\"><br \/>\n<\/span><strong>BOS=((sn&gt;&gt;4) &amp; $0F)*10+(SN &amp; $0F):sn=BOS \u00a0 ( Bu sat\u0131r BCD to DEC) olarak kullan\u0131l\u0131r.<\/strong><\/p>\n<p><strong><span style=\"color: #ff0000;\">BCD konusu anla\u015f\u0131ld\u0131\u011f\u0131na g\u00f6re art\u0131k DS1302 ile programlamaya ba\u015flayabiliriz.\u00a0<\/span><\/strong><\/p>\n<h3 style=\"text-align: center;\"><strong><span style=\"color: #ff0000;\">DS1302 RTC entegresi :<\/span>\u00a0<\/strong><a href=\"https:\/\/datasheets.maximintegrated.com\/en\/ds\/DS1302.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Datasheet&#8217;e buradan ula\u015fabilirsiniz.\u00a0<\/strong><\/a><\/h3>\n<p>3 kablolu ileti\u015fim kullan\u0131yor. Bu 3 pin istedi\u011finiz dijital pimlerden se\u00e7ilebilirsiniz. Devrede 32.768kHz kristal kullanman\u0131z gerekir.<br \/>\nPimler : I\/O, SCLK,RST. Benim program\u0131mda 11., 12. , 13. pimler kullan\u0131lm\u0131\u015ft\u0131r.<br \/>\nRTC , tarih,saat,haftan\u0131n g\u00fcn\u00fc art\u0131k y\u0131l hesab\u0131 haz\u0131rd\u0131r. 2100 e kadar sorun yoktur.<br \/>\nAyr\u0131ca 31*8bit batarya destekli RAM vard\u0131r. <strong>\u015eayet ekstra eeprom gibi kullanmak isterseniz buras\u0131n\u0131 kullanabilirsiniz. Pil bitesiye kadar bilgiler burada sakl\u0131 kalacakt\u0131r.<\/strong><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1000 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/ds1302_sema-1.jpg\" alt=\"\" width=\"437\" height=\"295\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 437px; --smush-placeholder-aspect-ratio: 437\/295;\" \/><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-992 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/ds1302_1.jpg\" alt=\"\" width=\"573\" height=\"477\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 573px; --smush-placeholder-aspect-ratio: 573\/477;\" \/><\/p>\n<p><strong>Yukar\u0131daki tablo datasheet ten al\u0131nm\u0131\u015ft\u0131r.<\/strong> Burada g\u00f6r\u00fclen Register denilen yazma\u00e7lara bakal\u0131m. Bu kodlarla bilgileri al\u0131r\u0131z ya da g\u00f6ndeririz.<br \/>\n<strong>READ :<\/strong> Bu \u00a0sat\u0131rdaki 8 bitlik bilgiyi okumak i\u00e7in bu adresi vermeniz laz\u0131m ondan sonra entegre size bu adrese ait sat\u0131rdaki 8 biti verecektir.<br \/>\n<strong>WRITE :<\/strong> Bu sat\u0131rdaki 8 bitlik s\u00fctunlara yazmak istedi\u011finiz de\u011feri yazmak i\u00e7in bu kodu verirsiniz. Entegre kar\u015f\u0131l\u0131k olarak verdi\u011finiz de\u011feri al\u0131p gerekli bit lere yazar.<br \/>\n<strong>bit7-bit0 :<\/strong> 8 bitlik de\u011ferdir. Baz\u0131 yerlerde g\u00f6sterilecek de\u011feri ve ayr\u0131ca saatte yap\u0131lmas\u0131 gereken i\u015flemleri g\u00f6sterir.<br \/>\n<strong>RANGE :<\/strong> saat bilgilerinde alabilece\u011fi de\u011feri g\u00f6sterir. Mesela sat\u0131rda saniye varsa 00-59 aras\u0131 sayar diye belirtir.<br \/>\n<strong>CH biti :<\/strong> clock halt bitidir. Saatin ilk \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131nda entegre \u00e7al\u0131\u015fm\u0131yormu\u015f gibi gelir. Bu 8 bitlik alana saniye de\u011feri 00 olarak girilmezse saat \u00e7al\u0131\u015fmaz. Bundan dolay\u0131 entegreye \u00f6nce do\u011fru zaman de\u011ferlerinin kay\u0131t edilmesini ister. Ayr\u0131ca entegrenin her iki gerilim kayna\u011f\u0131 susarsa bu bit yine ilk haline d\u00f6ner. Gerilim kaynaklar\u0131 ba\u011flansa bile Saat yeni kay\u0131ta kadar \u00e7al\u0131\u015fmaz.<br \/>\n<strong>WP biti<\/strong>\u00a0: write protect: yazma korumas\u0131d\u0131r. Bu bit 1 oldu\u011funda sadece bilgiler okunur yaz\u0131lamaz. Buna RAM daki bilgiler de dahildir.<br \/>\n<strong>90h-91h olan sat\u0131rdaki<\/strong> bilgiler \u015farjl\u0131 pil kullan\u0131l\u0131yorsa diye d\u00fc\u015f\u00fcn\u00fclm\u00fc\u015f. Ayr\u0131nt\u0131lar\u0131 datasheetten bak\u0131p \u00f6\u011frenebilirsiniz.<br \/>\n<strong>CLOCK BURST :<\/strong> Buradaki read ve write kodlar\u0131n\u0131 kullanarak zincir \u015feklinde tek komutla t\u00fcm saat bilgilerini bir kerede okuyup alabilirsiniz ya da t\u00fcm\u00fcne birden yazabilirsiniz.<br \/>\n<strong>RAM :<\/strong> Bu k\u0131s\u0131mdaki READ ve WRITE kodlar\u0131n\u0131 kullanarak 31 adet RAM b\u00f6lgesine tek tek kay\u0131t yap\u0131p okuyabilirsiniz. Her kay\u0131t 8bit=1 byte t\u0131r. 31x8bit kay\u0131t yap\u0131labilir.<br \/>\n<strong>RAM BURST :<\/strong> \u00a0Bu kodlar\u0131 kullanarak t\u00fcm RAM b\u00f6lgesine zincir \u015feklinde tek bir komutla kay\u0131t yapabilirsiniz.<\/p>\n<p><span style=\"color: #ff6600;\"><strong>A\u015fa\u011f\u0131daki program par\u00e7ac\u0131klar\u0131 sadece anlatabilmek ama\u00e7l\u0131d\u0131r tam program ise link olarak en altta mevcuttur.<\/strong><\/span><br \/>\n<strong>Okuma algoritmas\u0131na bakal\u0131m:<\/strong><br \/>\nreadbyte alt program\u0131 ve onu \u00e7a\u011f\u0131ran yerdeki program par\u00e7alar\u0131 bize bunu g\u00f6sterecektir.<br \/>\n1- \u00d6ncelikle hangi sat\u0131r\u0131 okumam\u0131z gerekti\u011fini entegreye bildirmemiz laz\u0131m.(cmdByte = 0x81)<br \/>\n2- Bu byte&#8217;\u0131 entegreye g\u00f6ndermemiz gerekir. (writebyte ile)<br \/>\n3- G\u00f6nderdikten sonra bilgi alabilmemiz i\u00e7in I\/O pimini ge\u00e7ici olarak INPUT yapmam\u0131z gerekir.<br \/>\n4- Bilgiyi ald\u0131ktan sonra BCD to DEC ile kullanabilece\u011fimiz duruma getiririz<br \/>\n5- ileti\u015fim hatt\u0131n\u0131 sonland\u0131r\u0131r\u0131z.<\/p>\n<p><strong>Yazma Algoritmas\u0131 da \u015fu \u015fekildedir.<\/strong><br \/>\n1- G\u00f6ndermek istedi\u011fimiz de\u011fi\u015fkenlere de\u011feri verip onlar\u0131 DEC to BCD kullanarak haz\u0131rlar\u0131z.<br \/>\n2- I\/O pimini output olarak ayarlar\u0131z.<br \/>\n2- Hangi adrese kay\u0131t yap\u0131lacaksa o adres entegreye bildirilir.<br \/>\n3- arkas\u0131ndan de\u011fi\u015fkenimizi entegreye g\u00f6ndeririz.<br \/>\n4- ileti\u015fim hatt\u0131n\u0131 sonland\u0131r\u0131r\u0131z.<\/p>\n<p>Bu mant\u0131k ile bakt\u0131\u011f\u0131m\u0131zda\u00a0a\u015fa\u011f\u0131daki program par\u00e7alar\u0131nda, void date_hour() alt program\u0131 ile 0x81 yazma\u00e7\u0131ndan bilgi okumak i\u00e7in \u00f6nce 0x81 kodunu entegreye bildirmek gerekir. Bunun i\u00e7in\u00a0digitalWrite(sclk_pin, LOW);<br \/>\ndigitalWrite(ce_pin, HIGH); komutlar\u0131 kullan\u0131larak ileti\u015fim ba\u015flat\u0131l\u0131r .<br \/>\nwriteByte(cmdByte); ile writebyte\u00a0\u00a0alt program\u0131n\u0131 \u00e7a\u011f\u0131r\u0131r\u0131z. Daha sonra okumak i\u00e7in<br \/>\nreadByte(); altprogram\u0131n\u0131 \u00e7a\u011f\u0131r\u0131r\u0131z. Bu alt programda bilgi okunup BCD to DEC olarak \u00e7evrilir. Sonras\u0131nda<br \/>\ndigitalWrite(ce_pin, LOW); \/\/ byte al\u0131m\u0131 tamamland\u0131 \u00a0komutunu kullanarak ileti\u015fimi kapat\u0131r\u0131z.<\/p>\n<p><strong>Yazma k\u0131sm\u0131n\u0131<\/strong> da buradan takip edebilirsiniz.<strong>\u00a0void rtc_adjust()<\/strong> alt program\u0131 entegreye saat bilgisini kaydetmek i\u00e7indir.<\/p>\n<p><span style=\"color: #ff6600;\"><strong>K\u0131saca ileti\u015fim ba\u015flatmak i\u00e7in ve sonland\u0131rmak i\u00e7in alttaki komutlar kullan\u0131l\u0131r.\u00a0<\/strong><\/span><br \/>\ndigitalWrite(sclk_pin, LOW); \/\/ haberle\u015fme ba\u015flatmak i\u00e7in saat palsi s\u0131f\u0131r yap\u0131l\u0131r.<br \/>\ndigitalWrite(ce_pin, HIGH); \/\/ haberle\u015fme ba\u015flat\u0131l\u0131r<br \/>\nwritebyte ya da readbyte komutlar\u0131<br \/>\ndigitalWrite(ce_pin, LOW); \/\/ byte al\u0131m\u0131 tamamland\u0131 \u0130leti\u015fim sonland\u0131r\u0131l\u0131r.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-title=\"ds1302 read write komut\" data-enlighter-group=\"1\" data-enlighter-theme=\"beyond\">void readByte(){\r\n  pinMode(data_pin, INPUT);\r\n  Value = 0;\r\n  for (int i = 0; i &lt; 8; ++i)  \/\/ 8 bitlik data al\u0131n\u0131r. \r\n  {\r\n    currentBit = digitalRead(data_pin);\r\n    Value |= (currentBit &lt;&lt; i);\r\n    digitalWrite(sclk_pin, HIGH);\r\n    delayMicroseconds(1);\r\n    digitalWrite(sclk_pin, LOW);\r\n  }\r\n \/\/ digitalWrite(ce_pin, LOW);   \/\/ byte al\u0131m\u0131 tamamland\u0131\r\n  Serial.print (\"DEC deger  : \");Serial.println (Value);\r\n   Value=(Value\/16 *10) + (Value%16); \/\/ dec kod hex koduna \u00e7evrilir. \r\n  return Value;\r\n}\r\n\r\nvoid writeByte(uint8_t value)\r\n{ \r\n  pinMode(data_pin, OUTPUT);\r\n  shiftOut(data_pin, sclk_pin, LSBFIRST, value);\r\n}\r\n\r\nvoid rtc_adjust(){\r\n\r\n  valsec=25;valsec=(valsec\/10*16) + (valsec%10);cmdByte = 0x80;commstart(); writeByte(cmdByte); writeByte(valsec);digitalWrite(ce_pin, LOW);   \/\/ byte al\u0131m\u0131 tamamland\u0131\r\n  valmin=35;valmin=(valmin\/10*16) + (valmin%10);cmdByte = 0x82;commstart(); writeByte(cmdByte); writeByte(valmin);digitalWrite(ce_pin, LOW);   \/\/ byte al\u0131m\u0131 tamamland\u0131\r\n valhour=23;valhour=(valhour\/10*16) + (valhour%10);cmdByte = 0x84;commstart(); writeByte(cmdByte); writeByte(valhour);digitalWrite(ce_pin, LOW);   \/\/ byte al\u0131m\u0131 tamamland\u0131\r\n  \r\n}\r\n\r\nvoid date_hour(){\r\n  cmdByte = 0x81; \/\/ 129= 81h registerini okumak i\u00e7in \r\n Serial.println (cmdByte); \r\n  digitalWrite(sclk_pin, LOW);  \/\/ haberle\u015fme ba\u015flatmak i\u00e7in saat palsi s\u0131f\u0131r yap\u0131l\u0131r\r\n  digitalWrite(ce_pin, HIGH);  \/\/ haberle\u015fme ba\u015flat\u0131l\u0131r\r\n  writeByte(cmdByte);  \/\/ cmdbyte = okuma ve yazma kodunun ba\u015flad\u0131\u011f\u0131 adresi RTC ye g\u00f6nderir.\r\n  readByte();   \/\/ RTC gelen adrese g\u00f6re data yollar. data al\u0131m\u0131na gidilir.\r\n  valsec=Value &amp; 0x7F;  \/\/ \r\n  Serial.println (valsec);\r\n  \r\n}\r\n\r\nvoid seridata(){\r\n  for (int k = 0; k &lt; 7; ++k)\r\n  {\r\n  cmdByte=0x81;\r\n  cmdByte=cmdByte+(k*2);\r\n   digitalWrite(sclk_pin, LOW);  \/\/ haberle\u015fme ba\u015flatmak i\u00e7in saat palsi s\u0131f\u0131r yap\u0131l\u0131r\r\n  digitalWrite(ce_pin, HIGH);  \/\/ haberle\u015fme ba\u015flat\u0131l\u0131r\r\n  writeByte(cmdByte);  \/\/ cmdbyte = okuma ve yazma kodunun ba\u015flad\u0131\u011f\u0131 adresi RTC ye g\u00f6nderir.\r\n  readByte();   \/\/ RTC gelen adrese g\u00f6re data yollar. data al\u0131m\u0131na gidilir.\r\n    myInts[k]=Value;\r\n   digitalWrite(ce_pin, LOW);   \/\/ byte al\u0131m\u0131 tamamland\u0131 \r\n  }\r\n  \r\n  Serial.print (\"myint_0  \");Serial.println (myInts[0]);\r\n  Serial.print (\"myint_1  \");Serial.println (myInts[1]);\r\n  Serial.print (\"myint_2  \");Serial.println (myInts[2]);\r\n  Serial.print (\"myint_3  \");Serial.println (myInts[3]);\r\n  Serial.print (\"myint_4  \");Serial.println (myInts[4]);\r\n  Serial.print (\"myint_5  \");Serial.println (myInts[5]);\r\n  Serial.print (\"myint_6  \");Serial.println (myInts[6]);\r\n}\r\n\r\n\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h3 style=\"text-align: center;\"><span style=\"color: #ff0000;\"><strong>DS1307 I2C haberle\u015fmeli RTC entegresi : <\/strong><\/span><a href=\"https:\/\/datasheets.maximintegrated.com\/en\/ds\/DS1307.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Datasheet&#8217;e buradan bakabilirsiniz.<\/strong><\/a><\/h3>\n<p><strong><span style=\"color: #ff6600;\">Bu entegre DS1302 den farkl\u0131d\u0131r. I2C ile haberle\u015fir,<\/span><\/strong>\u00a0hem de SQW denilen ayarlad\u0131\u011f\u0131n\u0131z frekansta kare dalga \u00e7\u0131k\u0131\u015f verir. Batarya destekli 56 byte l\u0131k NV SRAM vard\u0131r.\u00a0Devrede 32.768kHz kristal kullanman\u0131z gerekir.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1001 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/ds1307_sema.jpg\" alt=\"\" width=\"401\" height=\"305\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 401px; --smush-placeholder-aspect-ratio: 401\/305;\" \/><strong>SQW \u00e7\u0131k\u0131\u015f\u0131nda 1 adet diren\u00e7 olmak zorunda.<\/strong> \u00c7\u00fcnk\u00fc bu \u00e7\u0131k\u0131\u015f a\u00e7\u0131k kollekt\u00f6r dedi\u011fimiz VCC ye ba\u011fl\u0131 olmayan bir \u00e7\u0131k\u0131\u015ft\u0131r ve buray\u0131 VCC ye ba\u011flaman\u0131z gerekmektedir. Ancak o zaman \u00e7\u0131k\u0131\u015f alabilirsiniz. \u015eemas\u0131 \u015fu \u015fekildedir.( a\u00e7\u0131k kollekt\u00f6r veya a\u00e7\u0131k kanal \u00a0, open collector,open drain) <em>Tavsiyem sizler de bu tip bilgilerde ingilizcesini kullan\u0131n.\u00a0<\/em><br \/>\n<img decoding=\"async\" class=\"aligncenter size-full wp-image-1013 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/sqw_cikis.jpg\" alt=\"\" width=\"376\" height=\"120\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 376px; --smush-placeholder-aspect-ratio: 376\/120;\" \/><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1002 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/ds1307_register.jpg\" alt=\"\" width=\"809\" height=\"350\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 809px; --smush-placeholder-aspect-ratio: 809\/350;\" \/><\/p>\n<p><span style=\"color: #ff6600;\"><strong>Burada tek bir adres var. Bu adres ile hem kay\u0131t yap\u0131l\u0131r hem de okunur. Ayr\u0131ca DEVICE ADDRESS denilen I2C haberle\u015fmesini ba\u015flatan bir adres vard\u0131r.\u00a0uint8_t devaddr=0x68; \u015feklinde program ba\u015f\u0131nda tan\u0131mlanm\u0131\u015ft\u0131r. Burada g\u00f6rd\u00fc\u011f\u00fcn\u00fcz 0x68 hex kodudur. Fakat sadece 7 bitlik bir say\u0131ya kar\u015f\u0131l\u0131k gelir. ( 1101000 ) \u00a0buna wire.h k\u00fct\u00fcphanesi taraf\u0131ndan 1 ya da 0 eklenir. 1 okuma yapaca\u011f\u0131n\u0131 0 kay\u0131t yapaca\u011f\u0131n\u0131 belirtir. Say\u0131n\u0131n son hali ise 0xD0 ya da 0xD1 olacakt\u0131r.\u00a0<\/strong><\/span><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1003 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/ds1307_sqw.jpg\" alt=\"\" width=\"799\" height=\"495\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 799px; --smush-placeholder-aspect-ratio: 799\/495;\" \/><\/p>\n<p>Bu tabloda ise SQW \u00e7\u0131k\u0131\u015f\u0131n\u0131n nas\u0131l ayarlanaca\u011f\u0131 g\u00f6r\u00fclmektedir. 1Hz lik sinyali buradan al\u0131p saatlerinizde &#8220;:&#8221;\u00a0 i\u015faretiyle g\u00f6sterilen yerde yan\u0131p s\u00f6nme animasyonu yapabilirsiniz. Bunun i\u00e7in arduinoyu kullanman\u0131za gerek yok. Devredeki SQW \u00e7\u0131k\u0131\u015f\u0131n\u0131 1-4.7K l\u0131k diren\u00e7 ve transist\u00f6r ile Displayin \u00a0nokta ledlerine verebilirsiniz. ( videolarda 0x90=90h =10010000 verilerek 1Hz sinyal \u00fcretilmi\u015ftir. ) Ya da LCD kullanacaksan\u0131z Arduinonun giri\u015f ucuyla hissedip LCD de gerekli i\u015flemi yapabilirsiniz.\u00a0 Videoda 90 say\u0131s\u0131 hex girilece\u011fine dec girildi\u011finden sonu\u00e7 hatal\u0131 \u00e7\u0131km\u0131\u015ft\u0131r. buradaki do\u011frudur.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1009 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/ds1307_device_address.jpg\" alt=\"\" width=\"571\" height=\"364\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 571px; --smush-placeholder-aspect-ratio: 571\/364;\" \/><\/p>\n<p>Yukar\u0131daki tabloda I2C olarak yazma ve okuma bilgilerinin \u00e7al\u0131\u015fma \u015fekli belirtilmi\u015ftir. Slave Address b\u00f6l\u00fcm\u00fcne dikkat ederseniz bizim verdi\u011fimiz 0x68 adresinin yan\u0131na 1 ya da 0 getirilmi\u015ftir. Bu adres t\u00fcm I2C kullanan sistemlerde farkl\u0131 olmaktad\u0131r. DS1307 ve DS3232 \u00a0gibi entegrelerde bu adres de\u011fi\u015fmiyor gibi g\u00f6r\u00fcnse de muadili olan RTC entegrelerinde de\u011fi\u015fik olabilir. <span style=\"color: #ff6600;\">Ald\u0131\u011f\u0131n\u0131z entegrenin datasheet&#8217;ine bakarak \u00f6\u011frenebilirsiniz.\u00a0<\/span><\/p>\n<p><span style=\"color: #ff0000;\"><strong>DS1307 ile nas\u0131l haberle\u015firiz.<\/strong><\/span><br \/>\n<strong>Yazma k\u0131sm\u0131nda algoritma:<\/strong><br \/>\n1- yaz\u0131lacak de\u011fi\u015fken belirlenir.<br \/>\n2- DEC to BCD ile BCD koda \u00e7evrilir.<br \/>\n3- Haberle\u015fme ba\u015flat\u0131l\u0131r<br \/>\n4- hangi yazma\u00e7&#8217;a bilgi yaz\u0131lacaksa o bildirilir<br \/>\n5- yaz\u0131lacak bilgi g\u00f6nderilir.<br \/>\n6- haberle\u015fme sonland\u0131r\u0131l\u0131r.<\/p>\n<p><strong>Program olarak kar\u015f\u0131l\u0131\u011f\u0131 a\u015fa\u011f\u0131daki \u015fekildedir.\u00a0<\/strong><br \/>\nValue=55;<br \/>\nValue=(Value\/10*16) + (Value%10); \/\/ saniye<br \/>\nWire.beginTransmission(devaddr); \/\/ haberle\u015fme ba\u015flat (slave adres belirt)<br \/>\nWire.write(0); \/\/ s\u0131f\u0131r\u0131nc\u0131 registerden basla demektir.<br \/>\nWire.write(Value);<br \/>\nWire.endTransmission(); \/\/ haberle\u015fme sonland\u0131r\u0131l\u0131r.<\/p>\n<p><strong>Okuma k\u0131sm\u0131nda algoritma:<\/strong><br \/>\n1- Haberle\u015fme ba\u015flat\u0131l\u0131r<br \/>\n2- Hangi yazma\u00e7tan okunaca\u011f\u0131 bildirilir<br \/>\n3- haberle\u015fme kapat\u0131l\u0131r.<br \/>\n4- Bilgi iste\u011fi g\u00f6nderilir. Slave adresi belirtilir, ka\u00e7 byte bilgi istenecekse bildirilir. ( Dikkat : Bu bilgiden daha az ya da daha fazla almak isterseniz hata verir ve de\u011fi\u015fkene aktar\u0131lmaz.)<br \/>\n5- Bilgi beklemeye ba\u015flan\u0131r bilgi geldi\u011finde bilgi de\u011fi\u015fkenlere byte olarak aktar\u0131l\u0131r<br \/>\n6- Haberle\u015fme son bilgi al\u0131nd\u0131ktan sonra otomatik kapat\u0131lm\u0131\u015f demektir sonland\u0131rman\u0131za gerek yoktur.<\/p>\n<p><strong>Program olarak kar\u015f\u0131l\u0131\u011f\u0131 a\u015fa\u011f\u0131daki \u015fekildedir.<br \/>\n<\/strong>Wire.beginTransmission(devaddr); \/\/ haberle\u015fme ba\u015flat (slave adres belirt)<br \/>\nWire.write(0x00); \/\/ Hangi registerden al\u0131nacaksa o yaz\u0131l\u0131r.<br \/>\nWire.endTransmission(); \/\/ haberle\u015fme sonland\u0131r\u0131l\u0131r<br \/>\nWire.requestFrom(devaddr,8); \u00a0\/\/ haberle\u015fmeyi tekrar sa\u011flar ve slave adres ile ka\u00e7 byte istenece\u011fi yaz\u0131l\u0131r.<br \/>\nif(Wire.available()&lt;=8) { \/\/ \u00a0 burada <strong>while<\/strong> ile bekleme de kullan\u0131labilir.<br \/>\nmyInts[0] = Wire.read();\/\/ okunacak karakter de\u011fi\u015fkene aktar\u0131l\u0131r.<br \/>\nmyInts[1] = Wire.read();\/\/ okunacak karakter de\u011fi\u015fkene aktar\u0131l\u0131r.<br \/>\nmyInts[2] = Wire.read();\/\/ okunacak karakter de\u011fi\u015fkene aktar\u0131l\u0131r.<br \/>\nmyInts[3] = Wire.read();\/\/ okunacak karakter de\u011fi\u015fkene aktar\u0131l\u0131r.<br \/>\nmyInts[4] = Wire.read();\/\/ okunacak karakter de\u011fi\u015fkene aktar\u0131l\u0131r.<br \/>\nmyInts[5] = Wire.read();\/\/ okunacak karakter de\u011fi\u015fkene aktar\u0131l\u0131r.<br \/>\nmyInts[6] = Wire.read();\/\/ okunacak karakter de\u011fi\u015fkene aktar\u0131l\u0131r.<br \/>\nmyInts[7] = Wire.read();\/\/ okunacak karakter de\u011fi\u015fkene aktar\u0131l\u0131r.<\/p>\n<p>T\u00fcm bilgiler okunduktan sonra de\u011fi\u015fkenler BCD to DEC ile \u00e7evrilerek i\u015flemlerde kullan\u0131labilir sadece g\u00f6stermek i\u00e7in kullanacaksan\u0131z buradaki gibi BCD yi \u00e7evirmeden kullanabilirsiniz.<br \/>\nshowhour=String(myInts[2],HEX)+&#8221;:&#8221;+String(myInts[1],HEX)+&#8221;:&#8221;+String(myInts[0],HEX);<br \/>\nBu \u015fekilde showhour de\u011fi\u015fkenini LCD ye yazd\u0131rabilirsiniz.<\/p>\n<p><strong>A\u015fa\u011f\u0131daki program par\u00e7alar\u0131 ise <span style=\"color: #ff0000;\">PICBASIC<\/span> ile nas\u0131l yap\u0131laca\u011f\u0131n\u0131 g\u00f6sterir.<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-title=\"Picbasic 12F683 ile DS1307 kullan\u0131m\u0131\" data-enlighter-group=\"2\" data-enlighter-theme=\"beyond\">\r\nZAMAN_YAZ:\r\nhesap=YIL\/4\r\nk=status.0\r\nif k=1 AND AY=2 AND GUN&gt;28 then\r\nGUN=28\r\nELSE\r\n\r\n if k=0 and ay=2 and gun&gt;28 then \r\n    gun=29\r\n    else\r\n    endif\r\nendif\r\n;baslayaz: sn=00:dak=10:saat=13:gun=25:ay=6:YIL=17\r\n        TEMP=(SN DIG 1)&lt;&lt;4+SN DIG 0:SN=TEMP\r\n        TEMP=(DAK DIG 1)&lt;&lt;4+DAK DIG 0:DAK=TEMP\r\n        TEMP=(SAAT DIG 1)&lt;&lt;4+SAAT DIG 0:SAAT=TEMP\r\n        TEMP=(GUN DIG 1)&lt;&lt;4+GUN DIG 0:GUN=TEMP\r\n        TEMP=(AY DIG 1)&lt;&lt;4+AY DIG 0:AY=TEMP\r\n        TEMP=(YIL DIG 1)&lt;&lt;4+YIL DIG 0:YIL=TEMP\r\n        I2CWrite SDA, SCL,$D1,$00,[SN,DAK,SAAT,HAFGUN,GUN,AY,YIL]\r\n        PAUSE 10 \r\n        return \r\n\r\n\r\nSAATOKU:\r\n    I2CRead SDA, SCL,$D1,$00,[SN,DAK,SAAT,HAFGUN,GUN,AY,YIL,TEMP]\r\n         BOS=((sn&gt;&gt;4) &amp; $0F)*10+(SN &amp; $0F):sn=BOS\r\n         BOS=((DAK&gt;&gt;4) &amp; $0F)*10+(DAK &amp; $0F):DAK=BOS\r\n         BOS=((SAAT&gt;&gt;4) &amp; $0F)*10+(Saat &amp; $0F):SAAT=BOS\r\n         BOS=((GUN&gt;&gt;4) &amp; $0F)*10+(GUN &amp; $0F):GUN=BOS\r\n         BOS=((AY&gt;&gt;4) &amp; $0F)*10+(AY &amp; $0F)  :AY=BOS\r\n         BOS=((YIL&gt;&gt;4) &amp; $0F)*10+(YIL &amp; $0F):YIL=BOS\r\n\r\nSEROUT2 GPIO.5,84,[\"LCDWR 1,1-\",\"Hour:\",\" \",DEC2 saat,\":\",DEC2 dak,\":\",DEC2 sn ]\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<h3 style=\"text-align: center;\"><span style=\"color: #ff0000;\"><strong>DS3232 I2C haberle\u015fmeli RTC entegresi :<\/strong><\/span> <a href=\"https:\/\/datasheets.maximintegrated.com\/en\/ds\/DS3232.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Datasheet&#8217;e buradan bakabilirsiniz.<\/strong><\/a><\/h3>\n<p><span style=\"color: #ff6600;\">Bu entegre proteus denemelerinde DS3231 olmad\u0131\u011f\u0131 i\u00e7in se\u00e7ildi.<\/span> I2C kullan\u0131m sistemi ayn\u0131 oldu\u011fundan I2C olan RTC lerde sadece ba\u015flang\u0131\u00e7 registerinin (yazma\u00e7) numaras\u0131n\u0131 yazman\u0131z yeterli saat bilgileri i\u00e7in datasheet&#8217;e bakarsan\u0131z DS1307 ile ayn\u0131 oldu\u011funu g\u00f6rebilirsiniz. DS1307 program\u0131n\u0131 hi\u00e7 bir de\u011fi\u015fiklik yapmadan DS3232 ve 3231 entegrelerinde kullanabilirsiniz.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>\u00d6nemli bir farkl\u0131l\u0131k.<\/strong><\/span> <em><strong>Bu entegrelerin ba\u011flant\u0131 resmine bakarsan\u0131z X1 ve X2 giri\u015fleri yoktur. Bunlar\u0131n kristalleri i\u00e7indedir. Kristaller s\u0131cakl\u0131kla k\u00fc\u00e7\u00fck sapmalar yap\u0131yordu. \u0130\u00e7eri almakla birlikte, i\u00e7inde s\u0131cakl\u0131k sens\u00f6r\u00fc de bulundu\u011fundan, s\u0131cakl\u0131\u011fa g\u00f6re kristal frekans\u0131n\u0131 da d\u00fczeltiyor. Bununla ilgili registerleri de datasheet i\u00e7inde bulabilirsiniz. 10h registeri aging offset registeri bu i\u015f i\u00e7in ayr\u0131lm\u0131\u015ft\u0131r.\u00a0<\/strong><\/em><\/p>\n<p><span style=\"color: #ff6600;\"><strong>Farkl\u0131l\u0131klar nelerdir . <\/strong><\/span><a href=\"https:\/\/pdfserv.maximintegrated.com\/en\/an\/AN5143.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Buradan DS323X entegrelerinin farkl\u0131l\u0131klar\u0131na bakabilirsiniz.<\/strong><\/a> Tabii ki i\u015f sadece saat k\u0131sm\u0131yla kalm\u0131yor. I2C kullanan k\u0131s\u0131m ortak. <span style=\"color: #ff6600;\">Saat k\u0131sm\u0131 ortak olsa da saat k\u0131sm\u0131ndaki registerlerde baz\u0131 k\u00fc\u00e7\u00fck de\u011fi\u015fiklikler var.<\/span><br \/>\n<span style=\"color: #ff6600;\"><strong>Bunun yan\u0131 s\u0131ra ds323X serisi SICAKLIK \u00f6l\u00e7\u00fcm\u00fc yap\u0131labiliyor.<\/strong><\/span> S\u0131cakl\u0131k do\u011frulu\u011fu 3 derece civar\u0131na \u00e7\u0131ksa da, devrenizi kutu i\u00e7erisine koydu\u011funuzda kutu i\u00e7erisindeki s\u0131cakl\u0131\u011f\u0131 \u00f6l\u00e7mek i\u00e7in ayr\u0131ca bir s\u0131cakl\u0131k sens\u00f6r\u00fcne gerek yoktur. Bu s\u0131cakl\u0131k k\u0131sm\u0131n\u0131 kullanarak gerekti\u011finde FAN sisteminizi devreye alabilirsiniz.<br \/>\nEntegrelerde bir de RAM sistemi var Bunun boyutlar\u0131 farkl\u0131d\u0131r. Baz\u0131 bilgileri buraya koyarak i\u015flemcinizi rahatlatabilirsiniz. Mesela yeni karakter tan\u0131mlar\u0131n\u0131z\u0131 buraya koyarak i\u015flemcinizin haf\u0131zas\u0131ndan tasarruf edebilirsiniz. Zaten saati \u00f6\u011freniyorsunuz oradan karakter de \u00e7a\u011f\u0131rabilirsiniz.<br \/>\nAyr\u0131ca 2 adet ALARM b\u00f6lgesi var. Bu b\u00f6lgeleri, programlayarak \u00e7e\u015fitli i\u015flevler y\u00fckleyebilirsiniz.<br \/>\nBaz\u0131lar\u0131 3.3V ile \u00e7al\u0131\u015fabilecek kapasitededir.<br \/>\n<span style=\"color: #ff0000;\"><strong>Saat (RTC) entegrenizi se\u00e7erken bu gibi kriterlere g\u00f6re se\u00e7meniz yerinde olacakt\u0131r.\u00a0<\/strong><\/span><\/p>\n<p>A\u015fa\u011f\u0131daki register tablosunu g\u00f6rd\u00fc\u011f\u00fcn\u00fczde, farkl\u0131l\u0131klar\u0131 da g\u00f6rm\u00fc\u015f olacaks\u0131n\u0131z. Fakat g\u00fczel taraf\u0131 her birine, ayn\u0131 saat bilgilerine ula\u015fabiliyormu\u015fsunuz gibi, kolayl\u0131kla ula\u015fabileceksiniz.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1017 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/3232_sema1.jpg\" alt=\"\" width=\"407\" height=\"313\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 407px; --smush-placeholder-aspect-ratio: 407\/313;\" \/><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1015 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/3232_reg.jpg\" alt=\"\" width=\"684\" height=\"672\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 684px; --smush-placeholder-aspect-ratio: 684\/672;\" \/><\/p>\n<p><span style=\"color: #ff0000;\"><strong>Buraya kadar da saat entegrelerini ve ileti\u015fimini konu\u015ftuk. \u015eimdi ise saat de\u011ferlerini de\u011fi\u015ftirmeye y\u00f6nelik bir ka\u00e7 \u00f6rnek yapal\u0131m.<\/strong><\/span><br \/>\nMesela okudu\u011fumuz saat 13:15:00 olsun. Bu saati 1 saat ileri almak istesek ne yapmam\u0131z laz\u0131m.<br \/>\n13:15:00 i\u00e7in \u00a0BCD kodlamaya g\u00f6re \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan 3 registeri okuyup bilgileri ald\u0131ktan sonra da de\u011fi\u015fikli\u011fimizi yap\u0131p hemen RTC i\u00e7erisindeki ilgili registerlere koyabiliriz.<br \/>\n<span style=\"color: #ff6600;\">Dikkat edilmesi gereken bir durum:<\/span><br \/>\n00h registerinden saniyeyi okuduk. Bu de\u011fer 7 bitlik bir de\u011fer. \u015eayet 8. bit 1 olursa ki baz\u0131 entegrelerde bu bit kullan\u0131labiliyor. O zaman bizim ihtiyac\u0131m\u0131z neyse onu almal\u0131y\u0131z. Yani 8. biti s\u0131f\u0131rlamal\u0131y\u0131z.<br \/>\nBunun i\u00e7in mant\u0131k i\u015flemlerini kullan\u0131p AND i\u015flemiyle 8. biti s\u0131f\u0131rlayaca\u011f\u0131z.<strong> b=binary demektir.<\/strong><br \/>\nSaniye=10000000b \u00a0saniye =saniye &amp; 01111111b<br \/>\nAND i\u015flemi 1. say\u0131 ile 2. say\u0131 bitlerini birbiri ile \u00e7arpmak demektir. Bu \u015fekilde 8. biti 0 yapt\u0131\u011f\u0131m\u0131z i\u00e7in 8. bit s\u0131f\u0131rlanm\u0131\u015f olacak di\u011fer bitler oldu\u011fu gibi kalacakt\u0131r. Net olarak saniye bilgisini ald\u0131k.<\/p>\n<p>01h registerinden Dakika =15 \u00a0 dakika =0001 0101 say\u0131lar\u0131na tekab\u00fcl eder. BCD olarak 4 bitlik g\u00f6sterimde.<br \/>\nBunu da 7 bit oldu\u011funu bildi\u011fimizden AND i\u015flemine tabi tutup yanl\u0131\u015fl\u0131k olmas\u0131n\u0131 \u00f6nleyelim.<br \/>\nDakika=00010101b \u00a0 Dakika=Dakika &amp; 01111111b i\u015flemiyle 8. biti s\u0131f\u0131rlad\u0131k.<\/p>\n<p>02h registerinden Saat bilgisini okuduk. (Burada baz\u0131 bitlerdeki bilgiler bize net olarak saati vermeyebilirler. Bunlar\u0131 s\u0131f\u0131rlamam\u0131z laz\u0131m. \u00a06. 7. bitler 24 saat metoduna g\u00f6re \u00e7al\u0131\u015f\u0131yorsak s\u0131f\u0131rd\u0131r. fakat biz yine net saat bilgisini almak i\u00e7in AND i\u015flemine tabi tutal\u0131m.<br \/>\nSaat=13 \u00a0saat= 0001 0011 \u00a0BCD bilgisini ald\u0131k. \u00a0saat=saat &amp; 00111111b \u00a0 Bu \u015fekilde net olarak saati elde ettik.<br \/>\n5. bitin \u00f6zel bir durumu var. 24 saatlik dilimi kullan\u0131yorsan\u0131z 21 yazmak i\u00e7in 5. bite ihtiyac\u0131n\u0131z var. bunu kullanman\u0131z laz\u0131m. \u015eayet 6. biti 1 yaparsan\u0131z 12 saatlik sistemi kullanman\u0131z gerekti\u011fini g\u00f6receksiniz. Bu \u015fekilde kullan\u0131mda 5. biti de kontrol edip, AM\/PM k\u0131sm\u0131n\u0131 da saate yazd\u0131rman\u0131z gerekir. 5. biti kontrol ederseniz buradaki bitin durumu AM\/PM bilgisini verecektir. Zaten 12 saatlik sistemde 20. saat olmad\u0131\u011f\u0131ndan bu bit kullan\u0131lmamaktad\u0131r.<br \/>\n<a href=\"https:\/\/www.arduino.cc\/reference\/en\/language\/structure\/bitwise-operators\/bitwiseand\/\" target=\"_blank\" rel=\"noopener\"><strong>AND i\u015fleminin arduinoda nas\u0131l olur diyenler bu sayfaya bakabilirler.\u00a0<\/strong><\/a><\/p>\n<p><span style=\"color: #ff6600;\">Bu \u015fekilde NET olarak BCD de\u011ferlerimizi ald\u0131k.<br \/>\n<\/span><span style=\"color: #ff0000;\"><strong>Hat\u0131rlatma :<\/strong><\/span>\u00a08 bit ile sadece 99 a kadar say\u0131lar\u0131 bcd olarak kullanabilirsiniz.\u00a0<a href=\"https:\/\/ncalculators.com\/digital-computation\/bcd-decimal-converter.htm\" target=\"_blank\" rel=\"noopener\"><strong>BCD \u00e7evrim arac\u0131<\/strong><\/a><br \/>\n\u015eimdi <strong>BCD DEC<\/strong> ve <strong>DEC BCD<\/strong> d\u00f6n\u00fc\u015f\u00fcmlerine bakal\u0131m. Zaten a\u015fa\u011f\u0131daki form\u00fcller bu i\u015fi yap\u0131yor. sadece form\u00fclleri do\u011fru yerde kullanman\u0131z kal\u0131yor.<br \/>\nNormalde BCD DEC desek de bu okuma ve g\u00f6sterilme itibariyle BCD HEX g\u00f6sterme \u015fekli diyebiliriz.<br \/>\nMesela 1001 1001bcd olan bir kodumuz var. Bu okunurken 4 bitlik okuma yap\u0131ld\u0131\u011f\u0131ndan HEX gibi okunur. 99 demektir. Bunu birle\u015ftirip ger\u00e7ek bilgisayar\u0131m\u0131zdaki gibi DEC komutuna \u00e7evirmek i\u00e7in bu bitleri birle\u015ftirelim. 10011001b = 153 desimal say\u0131ya kar\u015f\u0131l\u0131k gelir. Ger\u00e7ek binary sistemde hex 99 DEC 153 say\u0131s\u0131d\u0131r. Fakat bunu \u015f\u00f6yle d\u00fc\u015f\u00fcnelim. 153 say\u0131s\u0131 hex olarak 99 \u00e7\u0131kt\u0131 binary sisteminde de bunu teyit edebiliyoruz.<br \/>\nYa say\u0131 140 olsa. dec 140 =\u00a0 hex 8C = 1000 1100b yapard\u0131.\u00a0 BCD ye \u00e7evrilemezdi. bcd 9 dan yukar\u0131s\u0131n\u0131 kullanamaz. Say\u0131 \u00e7evrimlerinde hata yapmazsan\u0131z program\u0131n\u0131z gayet g\u00fczel \u00e7al\u0131\u015facakt\u0131r.<\/p>\n<p><span style=\"color: #ff6600;\">Neden HEX gibi okunur dedik.<\/span> Hex say\u0131lar\u0131, 2 tane 4 bitlik say\u0131 olarak okunur. Ayn\u0131 BCD deki gibi okunur. 0xFE gibi. Burada F y\u00fcksek 4 bit&#8217;i belirtir E d\u00fc\u015f\u00fck 4 bit&#8217;i belirtir.<\/p>\n<p><span style=\"color: #ff6600;\"><strong>Form\u00fclleri inceleyelim.<\/strong> :<\/span><br \/>\n<span style=\"color: #ff6600;\">DEC to BCD form\u00fcl\u00fc<\/span>\u00a0\u00a0<strong>saat=(saat\/10*16) + (saat%10);<br \/>\nBu form\u00fcle g\u00f6re i\u015flemleri yapal\u0131m.<br \/>\n<\/strong>99\/10= 9,9 \u00a0buradan ilk say\u0131n\u0131n 9 oldu\u011funu g\u00f6rebiliriz.<br \/>\nbunu binary olarak yazal\u0131m ki *16 y\u0131 g\u00f6sterebilelim. 1001b<br \/>\n\u0130kili kodlamada sola kayd\u0131rma \u00e7arpma demektir. 4 kez sola kayd\u0131r\u0131rsan\u0131z 16 ile \u00e7arpm\u0131\u015f olursunuz. \u015eimdi say\u0131m\u0131z 10010000b oldu. ilk d\u00f6rt bit yerine oturdu.<br \/>\nikinci i\u015flem olarak 99\/10=9.9 fakat % i\u015fareti mod alma i\u015flemi oldu\u011fundan mod 10 a g\u00f6re kalan 9 olur.<br \/>\nBu say\u0131y\u0131 da d\u00fc\u015f\u00fck 4 bit k\u0131sm\u0131na yazarsak 10011001bcd olacakt\u0131r.<br \/>\n<span style=\"color: #ff6600;\">\u015eimdi saat \u00f6rne\u011fimize d\u00f6nelim.<\/span> Saatimizin 13 oldu\u011funu biliyoruz. 13+1=14 yapt\u0131k.<br \/>\nBunu BCD koduna \u00e7evirelim.<br \/>\n14\/10=1.4 \u00a0burada 1 say\u0131s\u0131n\u0131 al\u0131yoruz.<br \/>\n1*16 = 0001000b say\u0131s\u0131na denk gelecektir.<br \/>\n2. i\u015flemde ise 14 mod 10 yapt\u0131\u011f\u0131m\u0131zda kalan 4 olacakt\u0131r.<br \/>\ni\u015flem sonucu = 00010100bcd olarak bulunur.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>DEC TO BCD i\u00e7in ba\u015fka bir form\u00fcl de budur.\u00a0<\/strong><\/span><br \/>\nform\u00fcl :\u00a0DEC2BCD(dec) (((dec \/ 10) &lt;&lt; 4) + (dec % 10))<\/p>\n<p><span style=\"line-height: 1.6471;\"><span style=\"color: #ff6600;\">BCD TO DEC \u00a0form\u00fcl\u00fc :<\/span>\u00a0<\/span><strong style=\"line-height: 1.6471;\">Value=(Value\/16 *10) + (Value%16);<br \/>\n<\/strong>Burada ise 98=1001 1000bcd say\u0131s\u0131d\u0131r. Bu say\u0131y\u0131 Desimal olarak ald\u0131\u011f\u0131m\u0131zda 152 eder.<br \/>\n152 yi form\u00fclde yerine koyal\u0131m.<br \/>\n152\/16= 9,5 \u00a0buradan 9 tamsay\u0131y\u0131 alal\u0131m ve 10 ile \u00e7arpal\u0131m.<br \/>\n9*10=90 bunu bekletelim ve mod alma i\u015flemini yapal\u0131m.<br \/>\n152 mod 16 =8 say\u0131s\u0131d\u0131r.<br \/>\n98bcd say\u0131s\u0131n\u0131 buluruz. =10011000bcd<\/p>\n<p><strong>A\u015fa\u011f\u0131da DS1302 entegresinden al\u0131nan bilgiler DEC ve HEX olarak g\u00f6sterilmektedir.<\/strong><br \/>\n<span style=\"color: #ff6600;\"><strong>BCD de\u011ferler HEX de\u011feri gibi d\u00fc\u015f\u00fcn\u00fclebilir.<\/strong><\/span><br \/>\n<strong>\u00d6rnek:<\/strong> dec37 say\u0131s\u0131 hex 0x25 say\u0131s\u0131na Bin 00100101 say\u0131s\u0131na denk gelir.<br \/>\nBCD ye g\u00f6re 25 say\u0131s\u0131 da 0010 0101 say\u0131s\u0131na e\u015fittir. Bu tip say\u0131 \u00e7evrimlerinde okunu\u015fu birbirine benziyor diye yanl\u0131\u015f alg\u0131lamay\u0131n. <strong>Mutlaka bilgiyi al\u0131rken ve entegreye geri koyarken bu d\u00f6n\u00fc\u015f\u00fcmlere dikkat edin.\u00a0<\/strong><br \/>\n<span style=\"color: #ff0000;\"><strong>Say\u0131 d\u00f6n\u00fc\u015f\u00fcmlerinde buna dikkat ediniz<\/strong>.<\/span> Saat ekran\u0131nda g\u00f6r\u00fcnen say\u0131 BCD say\u0131s\u0131d\u0131r ve HEX say\u0131s\u0131 gibi okunur.<br \/>\n<strong>Bunu ne zaman kullanabilirsiniz.<\/strong> Ancak direkt olarak lcd de g\u00f6stermek isterseniz (say\u0131,HEX) olarak g\u00f6sterebilirsiniz.<br \/>\n<span style=\"color: #ff6600;\"><strong>\u0130\u015flemlerde kesinlikle bu \u015fekilde kullan\u0131lamaz. D\u00f6n\u00fc\u015f\u00fcm yapmak \u015fartt\u0131r.<br \/>\n<\/strong><\/span><strong>Yapmazsan\u0131z ne olabilir :<\/strong>\u00a0Ekrandaki dakika 35 tir. bunu \u00f6\u011frendiniz ve d\u00f6n\u00fc\u015f\u00fcm yapmad\u0131n\u0131z. 35= 00110101bcd dir. Bunu 0x35 gibi alg\u0131lay\u0131p, bunun \u00fczerinde 5 koyarsak toplam 40 olmas\u0131 gerekirken 3A olacakt\u0131r. BCD kodlamada 9 dan daha b\u00fcy\u00fck say\u0131 yazamad\u0131\u011f\u0131m\u0131z i\u00e7in hata verecektir.<br \/>\n<span style=\"color: #ff0000;\"><strong>Bu hatan\u0131n \u00f6n\u00fcne ge\u00e7ebilmek i\u00e7in entegreden bilgiyi ald\u0131\u011f\u0131n\u0131zda d\u00f6n\u00fc\u015f\u00fcm i\u015flemi yap\u0131n ve entegreye yollarken de d\u00f6n\u00fc\u015f\u00fcm i\u015flemi yap\u0131n.\u00a0<\/strong><\/span><\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-1034 lazyload\" data-src=\"https:\/\/www.mikrobotik.com\/wp2\/wp-content\/uploads\/2019\/01\/deger.jpg\" alt=\"\" width=\"903\" height=\"599\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 903px; --smush-placeholder-aspect-ratio: 903\/599;\" \/><\/p>\n<h2 style=\"text-align: center;\"><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/tree\/main\/RTC_saat_entegre\" target=\"_blank\" rel=\"noopener\"><strong>Videolarda kullan\u0131lan t\u00fcm dosyalara buradan ula\u015fabilirsiniz.\u00a0<\/strong><\/a><\/h2>\n<p><span style=\"color: #ff0000;\"><strong>Not:<\/strong> <\/span><br \/>\nVideolarda <strong>rs232 usb d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fc<\/strong> ile birlikte seri haberle\u015fme sistemini kullanan <span style=\"color: #ff0000;\"><strong>EASYLCD<\/strong> <\/span>mod\u00fcl kullan\u0131lm\u0131\u015ft\u0131r. Tek kablo ile de k\u00fct\u00fcphanesiz olarak kullan\u0131labilen bir mod\u00fcld\u00fcr.<br \/>\nBu mod\u00fcl hakk\u0131nda detayl\u0131 bilgiyi <a href=\"https:\/\/www.mikrobotik.com\/wp2\/2018\/06\/27\/easylcd-hd44780-uyumlu-karakter-lcd-seri-modul\/\" target=\"_blank\" rel=\"noopener\"><strong>bu sayfadan alabilirsiniz.<\/strong><\/a><\/p>\n<p>Ayr\u0131ca RTC entegrelerde kullanaca\u011f\u0131n\u0131z <strong>pillerin \u00f6mr\u00fcn\u00fc hesaplamak i\u00e7in<\/strong> <a href=\"https:\/\/www.maximintegrated.com\/en\/design\/tools\/calculators\/product-design\/battery.cfm\" target=\"_blank\" rel=\"noopener\"><strong>bu sayfaya bakabilirsiniz.<\/strong><\/a><\/p>\n<p>DS1302 RTC entegresine ait video:<iframe data-src=\"https:\/\/www.youtube.com\/embed\/Ju_IqElMBRI\" width=\"901\" height=\"507\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><\/p>\n<p>DS1307 RTC entegresine ait video:<br \/>\n<iframe data-src=\"https:\/\/www.youtube.com\/embed\/d-y-f5ULdVc\" width=\"901\" height=\"507\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><\/p>\n<p>DS3232 ve DS323x I2C sistemli RTC entegresine ait video:<br \/>\n<iframe data-src=\"https:\/\/www.youtube.com\/embed\/ufS5gleUeyo\" width=\"901\" height=\"507\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" data-load-mode=\"1\"><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start lazyload\">\ufeff<\/span><\/iframe><\/p>\n<p class=\"title style-scope ytd-video-primary-info-renderer\"><span style=\"color: #ff6600;\"><strong>RTC Entegrelerinin g\u00f6sterimi i\u00e7in EASYLCD ve LCD k\u00fct\u00fcphane, LCD shield ile \u00e7al\u0131\u015fmas\u0131.<\/strong><\/span><iframe data-src=\"https:\/\/www.youtube.com\/embed\/lfwgTEqFku0\" width=\"901\" height=\"507\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><\/p>\n<h3><strong>Konuda eksik olan yerler varsa ileti\u015fim k\u00f6\u015fesinden bildirebilirsiniz.<br \/>\nSormak istediklerinizi ileti\u015fim k\u00f6\u015fesinden sorabilirsiniz.<\/strong><\/h3>\n","protected":false},"excerpt":{"rendered":"<p>RTC saat entegrelerini kullan\u0131rken devaml\u0131 k\u00fct\u00fcphane aray\u0131\u015f\u0131 i\u00e7erisine giriliyor. Fakat k\u00fct\u00fcphaneler kullan\u0131c\u0131lar taraf\u0131ndan de\u011fi\u015fikli\u011fe u\u011frad\u0131\u011f\u0131ndan program\u0131n\u0131z \u00e7al\u0131\u015f\u0131rken birden \u00e7al\u0131\u015fmaz olabiliyor. Hele bir de ayn\u0131 isimde k\u00fct\u00fcphaneler ise, g\u00fcncelleme yap\u0131ld\u0131\u011f\u0131nda, eski&#8230; <\/p>\n","protected":false},"author":1,"featured_media":1043,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,14,3,13,5],"tags":[],"class_list":["post-970","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-easylcd","category-pic","category-puf","category-raspi"],"_links":{"self":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/comments?post=970"}],"version-history":[{"count":3,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/970\/revisions"}],"predecessor-version":[{"id":2569,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/970\/revisions\/2569"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media\/1043"}],"wp:attachment":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media?parent=970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/categories?post=970"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/tags?post=970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}