- Potrebné materiály:
- Čo je RTC ??
- Pripojenie DS3231 RTC k MSP430:
- Programovanie MSP430 pre modul RTC:
V tomto výučbe vytvoríme digitálne hodiny prepojením RTC modulu DS3231 s MSP430 a zobrazením času a dátumu na 16x2 LCD. MSP-EXP430G2 je vývojový nástroj aka LaunchPad poskytovaný spoločnosťou Texas Instruments na výučbu a precvičovanie spôsobu používania ich mikrokontrolérov. Táto doska spadá do kategórie hodnotových riadkov MSP430, kde môžeme programovať všetky mikroprocesory rady MSP430. Ak ste v službe MSP nováčikom, prečítajte si náš návod Začíname s programom MSP430.
Potrebné materiály:
- MSP430
- Modul RTC DS3231
- POT -10k
- Modul LCD 16 * 2
- Pripojovacie vodiče
- Nepál
Čo je RTC ??
DS3231 je modul RTC (hodiny v reálnom čase). Používa sa na zachovanie dátumu a času pre väčšinu projektov elektroniky. Tento modul má vlastné napájanie z gombíkových článkov, pomocou ktorého udržiava dátum a čas, aj keď je odpojené hlavné napájanie alebo MCU prešiel tvrdým resetom. Akonáhle teda nastavíme dátum a čas v tomto module, bude ho vždy sledovať. Existuje niekoľko typov integrovaných obvodov RTC, ako napríklad DS1307, DS3231 atď.
Predtým sme RTC používali s inými mikrokontrolérmi v nasledujúcich projektoch:
Poznámka: Pri prvom použití tohto modulu musíte nastaviť dátum a čas. Môžete tiež použiť RTC IC DS1307, predtým sme používali DS1307 s Arduino.
Pripojenie DS3231 RTC k MSP430:
Schéma zapojenia digitálnych hodín na báze mikrokontroléra MSP430 je uvedená nižšie. Ako už bolo povedané, DS3231 pracuje pomocou komunikácie I2C, takže bude mať kolík Serial Clock (SCL) a Serial Data (SDA), ktorý musí byť pripojený k pinom I2C na našom MSP430, čo je pin 9 (PIN 2.1), SCL) a kolík 10 (PIN 2.2, SDA).
MSP430 dáva 3,3 V Vcc, ale na jeho pripojenie k LCD a RTC modulu potrebujeme 5V. Použijeme teda hack, v blízkosti konektora kábla USB je k dispozícii prepojka s názvom TP1. Odtiaľ si môžete vziať 5V.
Schéma zapojenia:
Programovanie MSP430 pre modul RTC:
Tu používame programovanie Energia IDE. Je rovnaký ako Arduino IDE a ľahko sa používa. Ak ste v oblasti MSP a energií nováčikom, prečítajte si úvodné informácie o tom, ako začať s MSP pomocou nástroja Energia IDE. Na prepojenie RTC modulu potrebujeme knižnicu pre túto dosku. Stiahnite si knižnicu RTC z tohto odkazu a nainštalujte ju.
Ďalej potrebujeme knižnice Wire (používané na komunikáciu I2C) a knižnice liquidcrystal, ktoré sú predinštalované v aplikácii Energia IDE.
Kompletný kód pre tieto digitálne hodiny MSP430 je uvedený na konci tohto článku. Kód je jednoduchý a ľahko zrozumiteľný. Tu vysvetľujeme niekoľko jeho častí.
Najskôr musíme zahrnúť potrebné knižnice.
Nižšie uvedená knižnica slúži na komunikáciu I2C medzi modulom RTC a MSP430. V tejto knižnici sú už definované piny SDA a SCK, takže tieto piny nemusíme deklarovať osobitne.
#include
Potom sme zahrnuli knižnicu RTClib.h pre hodiny RTC a LiquidCrystal.h pre funkcie LCD.
#include "RTClib.h" #include
Potom musíme vytvoriť inštanciu na inicializáciu nášho modulu RTC.
RTC_DS3231 rtc;
Potom vytvorte pole o veľkosti 7 a uložte doň všetkých sedem dní s menom.
char daysOfTheWeek = {"nedeľa", "pondelok", "utorok", "streda", "štvrtok", "piatok", "sobota"};
Tu je vyhlásenie o pinoch MSP430, ktoré sa majú použiť na LCD displeji: (RS (P2.0), EN (P1.4), D4 (P1.5), D5 (P2.3), D6 (P2.4), D7 (P2.5))
LiquidCrystal lcd (8, 6, 7,11,12,13);
V void setup () , sme inicializáciu rozhrania na použitie LCD displeja a RTC a špecifikované rozmery (šírka a výška) displeja, begin ()
musí byť volaná pred akýmikoľvek inými príkazy knižnice.
void setup () { lcd.begin (16, 2); lcd.setCursor (3,0); lcd.print ("hodiny RTC"); oneskorenie (3 000); lcd.clear (); rtc.begin (); // rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); }
Teraz je čas zobrazený na displeji správny, ale vyskytol sa problém. Zakaždým, keď reštartujete / resetujete mikrokontrolér, sa na displeji LCD zobrazí čas, v ktorom ste vložili kód. Je to preto, že funkcia rtc.adjust () uložila čas vášho počítača, takže keď ho resetujete, začne sa týmto časom.
Ak chcete tento problém vyriešiť, najskôr nahrajte program s nekomentovanou funkciou rtc.adjust () . Potom ihneď okomentujte ten istý riadok a program nahrajte znova. Teraz je nastavený váš dátum a čas a resetovanie mikrokontroléra ho neovplyvní.
Vo funkcii loop vezmeme dátum a čas z RTC modulu a uložíme do preddefinovanej premennej nazývanej now a zobrazíme ju na LCD pomocou funkcie lcd.print () .
void loop () { DateTime now = rtc.now (); lcd.clear (); lcd.setCursor (3,0); lcd.print (now.day (), DEC); lcd.print ("/");…. …….
Kompletný kód a video sú uvedené nižšie.