ATMega32A වලින් ලයින් ෆලෝවින් රොබෝ කෙනෙක් හදන්න PCB එකක්

3

Posted by chanakalin | Posted in AVR micocontrollers, AVR on Linux, Linux, Robotics, අත්හදා බැලීම්, නිර්මාණ | Posted on 01-02-2013

Tags: ,

කාලෙකින් පෝස්ට් එකක් දාන්නෙ. ආයෙ කවද දාන්න වෙයිද දන්නෙ නෑ උසස් පෙළ 1/3 වගේ දරුණු රිසල්ට් එකක් ගත්ත නිසා. ලඟදි තිබුණ රොබෝ නිර්මාණ තරඟෙකට හදාගත්ත PCB එක තමයි මේ දෙන්න යන්නෙ. ATmega32A එකකුයි, L293 motor driver එකකුයි, HC-SR04 Ultrasonic sensor එකකුයි දාල හැදුවෙ. ආයෙ Analog හරි Digital හරි input 8ක් ගන්න පුළුවන්.  හැබැයි ලස්සනට පිළිවෙලට design කරපු එකක් නෙවෙයි :P .  Eagle Cad file ටිකත් මේ එක්කම දීල තියෙනව. ආයෙ මගේ sample කෝඩ් එකකුයි, USART + ADC + Motors වලට function ටිකයිත් මේ එක්කම තියනව. පින් තියන තැන් එහෙම හොයාගෙන තමයි කරන්න වෙන්නෙ.

මුලින් design කරේ නම් ultrasonic sensor දෙකක් දාන්න පිටින් වෙනම. පස්සෙ ඒකෙන් interrupts generate කරගන්න. ඒත් ඒ අදහස වෙනස් වුණා. දැන් තියන විදියට එක ultrasonic sensor එකයි පාවිච්චි කරන්න වෙන්නෙ. LED දෙකක් power වලට දාල තියෙන්නෙ polarity වැරදියට දීලද කියල බලාගන්න. ඒ ගැන නම් පරිස්සම් වෙන්න මේකෙ අඩුම diode එකක් වත් දාල නෑ polarity වැරදියට දුන්නොත් බේරෙන්න.  මොකක් හරි අපැහැදිලි තැනක් තියනවනම් comment එකක් දාන්න.

Download

AVR on Linux – 3 FUSE bits සහ ප්‍රෝග්‍රෑමරයට සම්බන්ධ කිරීම

0

Posted by chanakalin | Posted in AVR micocontrollers, AVR on Linux, Linux | Posted on 23-11-2012

Tags: , , ,

කලින් පෝස්ට් එකෙන් කීවනෙ මේ පාර FUSE bits ගැන කියනව කියල. PIC පාවිච්චි කරන අය දන්නව නේද configuration bits ගැන. AVR වලදි FUSE bits කියන්නෙත් ඒ වගේ දේකට තමයි. High fuse, Low fuse කියල දෙකක් තියනව. AVR එකේ oscillator එක, Bootloader එකක් වගේ පාවිච්චි කරනවනම් boot වලට අදාල සැකසුම්, කොයි කොයි programming interfaces වලටද සහය දක්වන්නෙ (ISPද, JTAGද නැත්නම් දෙකටමද), RESET pin එකත් I/O පින් එකක් කරගන්නවද වගේ සැකසුම් සකස්කරන්නෙ FUSE bits වලින්. මේ ගැන වැඩිදුර තොරතුරු මේ ලින්ක් එකෙන් ගිහින් බලන්න. FUSE වැරදුනා කියන්නෙ නම් ඉතින් කරදර ගොඩක්. ආයෙ ගොඩදාගන්න විදි නම් තියනව. ඒත් මම අතෙත් FUSE නිසා වැඩකට ගන්න බැරි වෙලා තියන Atmega8 ඒව තියනව. මේ වගේ වැඩ නිසා AVR වල FUSE bits සැකසුම් වෙනස් කරගන්න ලේසි වෙන්න AVR Fuse calculators තියනව. මම පාවිච්චි කරන්නෙනම් ගොඩක් වෙලාවට www.engbedded.com/fusecalc. තව Android app එකක් පාවිච්චි කරල තියනව. අපි කරන්න යන වැඩ වලට නම් පොඩි වෙනස් කමක් විතරයි default settings වලින් වෙනස් කරගන්න ඕනෙ. Oscillator එකට crystal එකක් සම්බන්ධ කරල පාවිච්චි කරන නිසා External Crystal,Resonator High frequency වලට වෙනස් කරගන්න ඕනෙ. එතනදිත් startup time වලට වෙනස් වෙනස් අගයන් කීපයක් තියනව. ඒ ගැන නම් මම වැඩිපුර කියන්න යන්නෙ නෑ. මට ආව අගය HFUSE = 0xD9 සහ LFUSE = 0xCE.

AVR වලදි programming interfaces ගත්තොත් දෙකක් තියනව ISP (පින් 6 සහ පින් 10 විදියට සම්මත කනෙක්ටර් දෙකක්) සහ JTAG (පින් 10) කියල. හැම AVR එකම මේ දෙවිදියටම ප්‍රොග්‍රෑම් කරන්න බැරි අවස්ථා තියනව. ආයෙ මේ interfaces අපිට ඕනෙනම් FUSE bits සැකසුම් වෙනස් කරල අයින් කරල ආන්න පුළුවන්. ඒ කියන්නෙ FUSE calculator එකේ ISP වලට කියන check boc එක uncheck කලොත් ISP interface එකෙන් program කරන්න බෑ ඒ වගේ. මේ ඉන්ටෆේසස් ගැන හල තියන පින්තූර වලින් බලාගන්න.

AVR-ISP-connectors

JTAG layout

සමහර ISP ප්‍රොග්‍රෑමර්ස් වල තියෙන්නෙ 10 pin connector එකක්. ඒත් අපිට ඕනෙ 6pin connector එකක් පාවිච්චි කරල program කරන්න. ඒ වගේ වෙලාවට 10 pin to 6 pin converter එකක් පාවිච්චි කරන්න පුළුවන්. ඔය පහල තියෙන්නෙ ඒ වගේ එකක්.

10 pin to 6 pin converter

පහල රූපයෙ 6 pin ISP connector එකකට Atmega8 කොහොමද සම්බන්ධ කරගන්නෙ කියල තියනව. මෙතනදිනම් මම ISP වල VCC මයික්‍රොකන්ට්‍රෝලරයට සම්බන්ධ කරල නෑ. ඒ වෙනුවට පිටින් වෙනම power දීල තියෙන්නෙ. එතකොට මොකක් හරි ප්‍රශ්නයක් තිබුනොත් USB port එක, ප්‍රෝ‍රග්‍රැමර් එක ආරක්ෂා වෙනව. මතක තියාගන්නම ඕනෙ කාරණයක් තමයි අපි Crystal එකක් හරි external oscillator එකක් හරි පාවිච්චි කරනව කියල FUSE වෙනස් කරල crystal එක හරි extrernal oscillator එක හරි AVR එකකට සම්බන්ධ කරන්නෙ නැතුව programmer එක කනෙක්ට් කලොත් AVR එක අඳුනගන්නෙ නෑ. රූපය අපැහැදිලි වගේ නම් රූපය උඩ ක්ලික් කරල බලන්න.

ඊලඟ පෝස්ට් එකෙන් පලවෙනි ප්‍රොග්‍රෑම් එක ලියමු. ජයෙන් ජය!!!

AVR on Linux – 2 Atmega8 හඳුනාගැනීම

1

Posted by chanakalin | Posted in AVR micocontrollers, AVR on Linux, Linux | Posted on 21-11-2012

Tags: , ,

මුලින්ම Atmega8 හඳුනගන්න Datasheet එක ඩවුන්ලෝඩ් කරගන්න. සාමාන්‍යයෙන් ඕනෙම මයික්‍රොකන්ට්‍රෝලරයකට වගේ power දෙන්න පින් දෙකයි, reset පින් එකයි තියනව. ආයෙ oscillator එකට external oscillator එකක් හරි crystal එකක් හරි කනෙක්ට් කරනවනම් ඒකට පින් දෙකයි කියනව. Atmega8 වල 1Mhz internal oscillator එකකුත් තියනව. ඕනෙනම් ඒක පාවිච්චි කරන්නත් පුළුවන්. Reset පින් එක pull up resistor(10K වගේ) එකක් දාල 5V supply එකට සම්බන්ධ කරන්න ඕනෙ. Reset කරන්න ඕනෙ උනාම ඒක ground කරන්න ඕනෙ. පහල තියන රූපයෙ මූලිකව කරන්න ඕනෙ සම්බන්ධ කිරීම් ගැන තියනව. මමනම් මෙතන 8Mhz crystal එකක් සම්බන්ධ කරලයි තියෙන්නෙ.

Atmega8 වල I/O port තුනක් තියනව PORTB,PORTC,PORTD කියල. PORTB වලට PB0 – PB7 චක්වා පින් අටකුත් (PB6,PB7 I/O පින් විදියට පාවිච්චි කරන්න ඕනෙනම් Internal oscillator එක පාවිච්චි කරන්න වෙනව. External oscillator එකක් හරි crystal එකක් හරි සම්බන්ධ කරන්න වෙන්නෙ ඒවට), PORTC වලට PC0 – PC6 දක්වා පින් 7කුත් (PB6 Reset පින් එක විදියට වැඩ කරන්නෙ ඒක I/O පින් එකක් කරන්න පුළුවන් ඕනෙනනම්), PORTD වලට PD0-PD7 චක්වා පින් 8කුත් තියනව.  මේකෙ තියන මූලික පහසුකම් ගත්තොත් 10 bit ADC, PWM, I2C, SPI, USART, 8K flash,512bytes EEPROM, 1K SRAM, Enternal/Internal interrupts තියනව. තව 16MHz දක්වා වේගයකින් වැඩ කරන්න පුළුවන්.

AVR එක්ක වැඩ කරද්දි වැදගත්ම දෙයක් තමයි FUSE bits කියන්නෙ. කොටින්ම වැඩ කරනවනද නැද්ද කියල තියෙන ප්‍රධානම සාධකයක්. ඊලඟ ලිපියෙන් FUSE bits ගැනයි ප්‍රොග්‍රෑමර් එකට සම්බන්ධ කරන්නෙ කොහොමදයි කියල කියන්නම්.