Fórum témák
» Több friss téma |
Cikkek » Elektromos kulcs iButton-nal (DS1990 és ATTiny13 AVR) Elektromos kulcs iButton-nal (DS1990 és ATTiny13 AVR)
Szerző: gtk, idő: Júl 6, 2009, Olvasva: 28330, Oldal olvasási idő: kb. 3 perc
Ebben a cikkben röviden megpróbálom bemutatni azt, hogy hogyan illeszthetünk iButton-t ATTiny13 AVR-hez.
Röviden az iButton-ról Az iButton a Dallas/Maxim fejlesztése, One Wire, vagyis egyvezetékes protokollra épül. Ebben a családban sokféle termék található. Néhányat említsünk meg: NVRAM, EEPROM, Real-Time Clock, Password Protected Memory, Temperature Sensor, ID Only. Ezt az utobbit fogjuk ATTiny13-hoz illeszteni, pontosabban a DS1990A típust.
Illesztés mikrovezérlőhöz A képen látható, hogy milyen követelmények vannak az illesztéssel kapcsolatosan.
Illesztés ATTiny13 AVR -hez
Az ATTiny13 nem rendelkezik nyitott drain-es porttal, ezért standard I/O -ra fogjuk kapcsolni az iButton-t. Megtehetjük, ugyanis csak beolvasásnál fontos, hogy a BUS-on levő H szintet le tudja húzni az iButton. Amikor bemenetre váltunk az AVR PORT-ján, az AVR belső felhúzó-ellenállása adja a H szintet - ha be van kapcsolva. Tehát az AVR rendelkezik belső felhúzó-ellenállással, de ennek értéke legalább egy nagyságrenddel nagyobb, mint a BUS-ra ajánlott felhúzó-ellenállás értéke, ezért alkalmazunk külsőt, a belsőt meg kikapcsoljuk. (Ez utóbbi nem annyira lényeges, csak a teljesség kedvéért ) Az MCUCR regiszterben a PUD bit 1-be vagy 0-ba való állításával ki- és bekapcsolható a port belső felhúzó-ellenállása. Írtam két makrót rá:
Amint a forráskódban is látszik, iButton olvasás előtt kikapcsolom a belső felhúzó ellenállásokat, olvasás után meg visszakapcsolom, még szükség lehet rá. Main:
Olvassuk be a kulcsot A fent említett módon leolvassuk a kulcsról a 6 byteos azonosító számot, és AVRDUDE-dal terminál módban az AVR EEPROM-jába beírjuk. Az EEPROM-ba való bejegyzést szoftverből is lehetne, de akkor mindig újra kellene fordítani a kódot. Én a FUSE biteket nem módosítottam, ezért programozáskor törlődik az EEPROM tartalma is. Ezért először felprogramoztam az AVR-t, utána írtam be az ID-t az EEPROM-ba.
AVRDUDE terminál mód
Ezután: avrdude> write eeprom cím adat_C_Hexában, vagyis pl:
Miután elküldtük neki az adatot, vissza is ellenőrizhetjük:
A kimeneten valami hasonló fog megjelenni: >>> read eeprom 0 6 0000 78 8b 4b 12 00 00 |x.K... | Ha ez is megvan, beolvastathatjuk a kulcsunkat. Ha minden jó, a program beolvassa az iButtont, elvégez a kódon egy CRC ellenőrzést, majd összehasonlítja az EEPROM-ban levő kóddal, és LED-en jelzi, hogy OK, ez az Egy kis áramköri (FET, relé) és program kiegészítéssel akár beléptető rendszert is építhetünk, vagy akár elektromos kulcsot valamilyen eszközhöz, járműhöz. A driver tartalmazza a CRC algoritmust is. Gtk, 2009.07.06 Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |