HackerBoxes 0008: Clockwork (9 / 20 steg)
Steg 9: Gränssnitt till realtidsklocka (RTC) hårdvara
En realtidsklocka (RTC) är en datorklocka, oftast i form av en integrerad krets, manövreras att hålla reda på den aktuella tiden. RTCs har oftast en alternativ källa av makt, så att de kan fortsätta att hålla tiden medan den främsta källan till makt är av eller inte tillgänglig. Detta alternativ källa av makt kan vara en mynt/knapp cell eller en supercapacitor. Alternativa kraftkällan kan också leverera ström till batteriet backas RAM. I äldre datorsystem, detta batteri backas RAM användes ofta för att lagra BIOS inställningarna. När batteriet inte, måste användaren allmänt starta datorn i BIOS för att återställa det datum/tid och eventuella inställningar som hårddisk parametrar eller boot ordning.
En gemensam exempel RTC integrerad krets är DS1302 (datablad). Det är en underhållsladdning tidtagning chip som innehåller en realtids klocka/kalender och 31 bytes statiska RAM. Det använder mycket lite ström och kan underhållas av en liten coin cell. DS1302 kan kommunicera med en mikroprocessor via ett enkelt seriellt gränssnitt.
Modulen DS1302 har fem stift. Makt, marken, klocka, Data och Återställ. Återställ PIN-koden är också ibland kallas CE (chip aktivera). Som visas här, kan de fem stift bara kopplas rakt igenom till stift 5-9 Pro mini. Vänta? Varför skulle vi binda VCC (power) och marken stift på I/O pins? God fångst. Det är allmänt en dålig idé eftersom I/O pins inte kan källa/handfat så mycket ström. I det här fallet kan vi tillåta det eftersom DS1302 använder väldigt lite ström. Vi måste bara vara säker att konfigurera de I/O pins som utgångar och sedan köra den som associeras med RTC: s VCC till hög (5V) och en assoicated med RTC: s GND till låga (0V). Det finns ordentlig VCC och GND stift finns på Pro Mini, men vi kommer att använda dem för något annat i nästa steg.
Hämta och installera i DS1302 bibliotek.
Exempelkod för det här biblioteket använder också det strömmande biblioteket, så installera som också.
Ta upp exemplet kallas SetSerial som kommer med det DS1302RTC biblioteket. Innan kompilera det, måste vi ange fem pin-koder i koden till vad vi har dem trådbunden upp till. I vårt exempel har vi I/Os wired på RTC moduler så stift 5-9:
Ställa in stift: CE, IO, CLK
DS1302RTC RTC (9, 8, 7);
Frivillig anslutning för RTC modul
#define DS1302_GND_PIN 6
#define DS1302_VCC_PIN 5
Dessa 5 stift siffror är det enda som behöver ändras i exempelkoden.
Innan du fyller denna kod, öppna upp seriella bildskärmen och ange överföringshastigheten till 115,200.
Läs in koden (kom ihåg återställningsknappen) och låt koden körs.
RTC kan ställas in från seriella bildskärmen genom att ange tiden i detta format: år, månad, dag, timme, minut, sekund. Till exempel:
"2016,6,15,8,30,0" för 15 juni 2016 till 8:30.
Detta gränssnitt kan du enkelt ställa in RTC tiden till din faktiska nuvarande tid.
Exempelprogrammet sedan också läsa tid från RTC och Visa det på serial monitorn.
Du kan klippa strömmen (koppla ur USB-porten) och sedan märka att när du startar Pro Mini tillbaka upp (du kan behöva starta om seriell övervaka) det är att läsa rätt tid från RTC. Framgång!