Wakuu Habari za huku? ni wazi kuwa upatikanaji wa microcontroller Ni changamoto hasa kwa wanafunzi na hobysist wanaotaka kuautomate vitu/shughuli mbalimbali! Lakini sasa ondoa shaka kwani Sasa ni kuprogram avr NINAIMPORT AVR MICRONTROLLERS, programmers na other electronics chips and components kwa bei nafuu sana. Pia nitajitahidi kutoa tutorials hapa kila ntakapopata muda. Sasa kudevelop na mcu ni rahisi Kwako, ushindwe wewe tuu. Karibuni On for more infos
Updates:
Utangulizi kuhusu microcontroller.
MicroController Ni ic (intergrated circuit) ambayo ni sawa na kompyuta yenye vifaa vyote (ram, program storage/flash, usart, etc) ndani yake. Tofauti yake na kompyuta kamili Ni kuwa microntroller (mcu) huwa na uwezo mdogo wa kuprosesi mambo, pia RAM yake ni ndogo na pia inarun program moja ambayo iliwekwa wakati wa kuiprogram tuu.
AVR architecture (Muundo? wa AVR)
Katika Masomo haya nitaelezea Kwa kutumia mcu ambayo Ni AVR inayotengenezwa Na Atmel Corp.
Ili kuweza kutengeneza /kudevelop na mcu yoyote ni lazima ujue architecture yake! AVR mcu inatumia architecture ambayo ni simplified Harvard architecture. Harvard architecture inataka program memory na data memory ziwe zimetenanishwa/separate. Hii inamaanisha kuwa Data memory (RAM) itakuwa accessed na addressed kivyake Kama ilivyo program memory (flash memory).
CPU ya avr mcu ni 8 bit, maana yake ni kuwa Ina bus width (Upana WA njia) ambayo inauwezo wa kufetch data zenye ukubwa usiozidi bit 8 (hapa nashauri mtu jifunze Binary numbers na Hexadecimal number systems) . Hii inamaanisha kuwa hata registers za hii mcu zina ukubwa WA 8 bit. Yaani zinaweza kuhifadhi number kuanzia 0-255 maximum. AVR mcu pia ina registers za Aina mbili ambazo Ni Special functions registers (SFR) na General purpose registers (GPR) . Hizi registers zimeungwa moja kwa moja na CPU hivyo Kuzisoma (Read) and Kuziandika (Write) huchukua muda Mfupi sana.
SFR (I/O) ni nini?
Hizi ni registers maalum kwa ajili ya kukonfigure internal periperals na kazi mbalimbali za CPU ya AVR microcontroller. Hizi ni muhumu kuzielewa, narudia tena kuwa hizi ni muhimu kuzielewa maana ndiyo zitakusaidia kuweza kufanya task/kazi yeyote na mcu yako. Programmer (Mwandishi wa program) anaweza kuziaccess hizi SFR na kuziandika au kuzisoma!! Kumbuka kuwa zipo SFR ambazo huwezi kuziandika (modify) mfano ni STATUS REGISTERS (Ambazo huwa na flag zinazoonyesha ni kitu gani kilitokea wakati kazi fulani ikifanyika). AVR mcu ina jumla ya 64 SFR. Nitakuelezea zaidi kuhusiana na hizi SFR registers kadiri tutakavyoendelea kusonga mbele na mafunzo haya.
mfano: Program ya kuzima na kuwasha LEDs zilizoungwa kwenye PORTD kila baada ya dakiaka moja. (Usiogope...., Utaelewa ni nini maana ya PORTA, PORTB, PORTC etc kadiri tutakavoendelea Lengo langu ni kukuonyesha matumizi ya SFR kwa sasa, Hope tupo pamoja).
[HASHTAG]#include[/HASHTAG]<avr/io.h> //hii ni library inayodefine registers na functions za AVR mcu
[HASHTAG]#include[/HASHTAG]<util/delay.h> //Hii library ina function ya kudeley (kuchelewesha) program cpu kurun maelekezo (CPU instructions delays).
void main()
{
DDRD=0xFF; //hii ni register inayodefine uelekeo( Direction ) kwenye PORT D . Kuiset to 0xFF nimefanya kuwa Output Port Kwa *muda huu.
PORTD=0x00; //Nimeizima kwa sasa, (no output)
while(1) // Forever loop (Kwa kiswahili labda ni mzunguko wa milele... sina uhakika)
{
PORTD=0xFF; //Washa pini zote za PORT D
_delay_ms(1000) ; //Chelewa kwa milisecond 1000 sawa na sekunde 1;
PORTD=0x00; // Zima pini zote za PORT D
}
}
GPR ni nini?
Hizi kama jina lake linavyosema ni za matumizi ya ujumla kwenye kuhifadhi data kwa muda. Ikumbukwe kuwa CPU imeunganishwa moja kwa moja na reisters, Hivyo ni lazima kutumia registers kufetch/kuchota data kutoka kwenye RAM (Huwezi kuchota data moja kwa moja kutoka kwenye RAM, pia huwezi kuandika moja kwa moja kwenye RAM bila kutumia registers). AVR ina jumla ya 0-31 GPR registers. (Hutajali sana kuhusiana na GPR kwa sababu nitatumia
C programmining kwenye mafunzo haya, hivo utakuwa masked kuzitumia hizi ragisters.
Hizi registesters zote (SFR na GPR) ziko kwenye memory space moja na RAM. GPR zinacover kuanzia 0x00 mpaka 0x1F, SFR zinacover kuanzia 0x20 mpaka 0x60 na kuanzia 0x60 mpaka *RAMEND zinacover General Ram Locations na inategemea una deal na AVR mcu ipi. mfano AtMega16 ina 1Kbyte Ram, AtMega32 ina 2Kbyte Ram etc.
Pia AVR mcu ina memory aina ya EEPROM (electronically Erasable Programmable Read Only Memory) ambayo hutumika kuhifadhi data ambazo huhitaji zifutike pindi uzimapo mcu yako!! . Pia zina Timer modules, Universal Synchronious /Asynchronous Transmitter Receiver (Usart) kwa Ajili ya serial communication, Serial Peripheral Interface (SPI), na Integrated Interchip Communication (I2C).
Namna Program inavyorun kwenye AVR mcu.
Program inatunzwa kwenye flash memory ya mcu. Kuna register maalum inayo point kwenye instruction inayoufuata kuchakatwa. Hii register inaitwa Instruction Pointer register/Program Counter (PC). Hii inakuwa incremented automatically. Mara MCU inapowaka PC inapoint kwenye location 0x0000. Kuanzia hapa CPU itadecode elekezo (instruction) lolote lililopo hapa na kuliingiza katika Arithmetic Logic Unit (ALU) kwa ajili ya kuchakatwa (executing). Mzunguko huu utaendelea kulingangana na progam flow.
Kwa leo naomba kuishia hapa. muda mwingine tutaangalia namna ya kuset_up mazingira ya kuandika program zetu ikijumuisha kucompile na kuupload kwenye mcu. Maoni na ushauri yanakaribishwa, asanteni sana!