Pata microntroller yako ufanye ubunifu wa kisasa

Pata microntroller yako ufanye ubunifu wa kisasa

mwaride

JF-Expert Member
Joined
Oct 21, 2012
Posts
421
Reaction score
106
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
 
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
Good
 
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
Namba yako??
 
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.
AVRMemMap.png




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.
decoding and executing.png




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!
 
Naomba nigusie kidogo kuhusiana na aina za data pindi unapoandika program za mcu. Pia nitagusia operators na alama zinavotumika wakati wa programming.

AINA za data (DATA TYPES).
Kumbuka AVR mcu ni 8 bit, na pia ina flash na RAM kidogo sana, lakini ukiioptimize aina za data unaweza kuandika program ambazo ni faster zaidi. hapa chini ni aina za data na maelekezo yake.

uint16_t (unsigned integer) -Hii ni unsigned (chanya peke yake) ingeger. Aina ina bit 16 hii inamaanisha inaweza kuhifadhi kuanzia 0 mpaka 65535 (0 mpaka (2^16)-1).
mfano:
uint16_t idadi_ya_nyumba; //hapa umeandaaa nafasi ya bit 16 inayoitwa idadi_ya_nyumba
idadi_ya_nyumba=2356; //Hapa nimehifadhi 2356 kwenye variable idadi_ya_nyumba.


int (integer) -Nafasi (Aina hii ya data) inaweza kuwa chanya au hasi. Hii pia ni bit 16 lakini inaanzia -32768 mpaka 32767. (-2^15 mpaka (2^15)-1).
mfano:
int jotoridi; //hapa unaanda nafasi inayoweza kuifadhi -ve au +ve
jotoridi=-86;


uint8_t (unsigned 8 bit integer)-
ukideclare (ukiandaa) Data ya aina mwisho maana yake ni unaandaa nafai kwenye RAM ya kuhifadhi data kuanzia 0 mpaka 255. (0 mpaka (2^8)-1).

char (character) - Hiib aina ina uwezo wa kuhifadhi kuanzia 0 mpaka 255. tofauti yake na uint8_t ni kuwa hii inauweo wa kufadhi herufi na alama mbalimbali za *ASCII (Kasome kuhusu ASCII Characters).
mfano:
char c;
c='a';


Operators (Kwa Kiswahili???)
Hizi na alama ambazo hutmika kwenye program kufanya kazi mbalimbali za kuprocess data (kuchakata data?). mfano alama ya "+" humika kujumlisha namba mbili nk. Katika kuandika c program itakayorun kwenye AVR mcu kuna alama mbalimbali unazotakiwa kuzijua maana yake na matumizi yake. Mimi nitazigroup hizi alama katika makundi makuu mawili. La kwanza ni zile zinazomanipulate bit moja moja (Bitwise operators) na za Pili ni zile zinazochakata aina za data (Data type manipultion).


BITWISE OPERATORS:
&(Bitwise and operator).-Hii ni alama ambayo hutumika kulinganisha value mbili na matokeo yake ni 1 endapo bit zote zina 1 tofauti ya hapo ni 0.
mfano

uint8_t value1=0x14;
uint8_t value2=0xf3;
uint8_t matokeo;
matokeo=value1&value2; //matokeo kunahifadhiwa 0x10;



Kinachofanyika ni kama ifuatavyo:

0x14=0b00010100
&0xf3 =0b11110011
0b00010000 =0x10




**Itaendelea...............


NB ili kuweza kwenda pamoja kwenye haya masomo nakushauri usome kuhusiana na Hexadecimal number sytem na binary number system.
 
Back
Top Bottom