Mikrokontrollernek az Atmel ATmega8L típusú 28 lábú, DIL tokozású eszközét használtam. Tucatnyi beépített perifériája közül ehhez a feladathoz hármat használtam fel: a digitális portbiteket, az A/D konvertert és az USART-ot. A mikrokontroller működését meghatározó FUSE biteket a gyári értéken hagytam. Itt meghatározható paraméterek például az órajel forrása, és annak az értéke. Ez most 1 MHz, amit a belső RC oszcillátora szolgáltat. Ennél a típusnál 8 Mhz lehetne a maximum, de még az 1 MHz is bőven elég a feladathoz.
A forráskódot nem fogom sorról-sorra ismertetni, inkább a felépítéséről és a megvalósítás elvi megfontolásairól írok. A programnak két üzemmódja van, az egyik a normál mód, ekkor az akkuőr feladatot látja el. A másik a diagnosztikai mód, ekkor RS232-es soros porton keresztül kommunikálva számítógépről, terminál emulátoron keresztül lehet a fúrót vezérelni és az A/D konverterrel méréseket végeztetni.
Vázlatosan a program a következő módon működik:
Indulás:
- Beállítja a veremmutatót.
- Feltölti az sram-ot felváltva 0xaa és 0x55 értékekkel, hogy debuggoláskor jobban látszódjon a memória használata, vagy annak hiánya.
- Globálisan engedélyezi a felhúzó ellenállásokat.
- Beállítja B és D Portok adatirányát és alapértelmezett értékeiket.
- Bekapcsolja a tápellátást. (Eddig azért kapott tápot, mert a felhasználó nyomva tartotta a fúró S102 kapcsolóját, és a FET-ek még ki voltak kapcsolva. Ettől kezdve függetlenedik ezektől a tápellátása.)
- Beállítja az ADC-t (ADC = A/D konverter; CLK/16, IRQ OFF, Vref=AVcc, Single mode)
- Beállítja az USART-ot. (2400, 8N2; Rx, Tx enabled)
- Ellenőrzi az üzemmódot. Ha a mikrokontroller PD6 (12) és PD7 (13) lába össze van kötve, akkor diagnosztikai módba lép, és ott is marad, amíg az összeköttetés fennáll. Ha nincsenek összekötve, akkor normál módba lépve folytatja a működését a program.
A cikk még nem ért véget, lapozz!
Értékeléshez bejelentkezés szükséges!