সুচিপত্র:

Bascom AVR দিয়ে স্টার্টেট পাওয়া: 5 টি ধাপ
Bascom AVR দিয়ে স্টার্টেট পাওয়া: 5 টি ধাপ

ভিডিও: Bascom AVR দিয়ে স্টার্টেট পাওয়া: 5 টি ধাপ

ভিডিও: Bascom AVR দিয়ে স্টার্টেট পাওয়া: 5 টি ধাপ
ভিডিও: Negative and positive temperature measuring with ATMEGA32, LM35 and LCD. [Full Code+Circuit Design] 2024, জুলাই
Anonim
Bascom AVR দিয়ে স্টার্টেট পাওয়া
Bascom AVR দিয়ে স্টার্টেট পাওয়া

Bascom AVR দিয়ে আপনার AVR মাইক্রোকন্ট্রোলার প্রোগ্রাম শেখানোর জন্য এটি একটি সিরিজের শুরু।

কেন আমি এটা করছি।

এই সিরিজের বেশিরভাগ প্রোগ্রাম নমুনা আপনি আরডুইনো দিয়ে তৈরি করতে পারেন।

কিছু সহজ এবং কিছু আরো কঠিন, কিন্তু শেষে উভয় একই নিয়ামক চালানো হবে।

কিন্তু প্রতিটি উন্নয়ন পরিবেশে প্রোগ্রামিং এর পদ্ধতি ভিন্ন। Arduino মৌলিক ফাংশন ছাড়া সবকিছু জন্য একটি লাইব্রেরি প্রয়োজন। Bascom লাইব্রেরিগুলির সাথেও কাজ করে, কিন্তু আমাকে খুব কমই একটি অন্তর্ভুক্ত করতে হবে। Arduino এর সাথে, সমস্ত হার্ডওয়্যার-নির্দিষ্ট সেটিংস লাইব্রেরির মাধ্যমে তৈরি করা হয়। মাইক্রোকন্ট্রোলারের প্রকৃত ক্ষমতার উপর আপনার খুব কম প্রভাব আছে। কন্ট্রোলারের আছে এমন টাইমার দিয়ে শুরু। Arduino এর সাথে আপনার আবার একটি লাইব্রেরি দরকার। যদি আপনার টাইমার থাকে যতক্ষণ না এটি কাজ করে, এটি হতে পারে অন্য লাইব্রেরি আপনার সেটিংসের সাথে ধাক্কা খায়। বেসকম এ আপনি সম্পূর্ণ হার্ডওয়্যার অ্যাক্সেস করতে পারেন বুট সেক্টর সহ যা আরডুইনো দ্বারা দখল করা আছে। উদাহরণস্বরূপ, বেসকমের কিছু লাইব্রেরি আপনাকে জিজ্ঞাসা করে আপনি কোন টাইমার ব্যবহার করতে চান। অন্যদিকে, যেহেতু আরডুইনো নিজে একটি লাইব্রেরি তৈরি করা খুব সহজ করে, এটি স্বাভাবিকভাবেই এটি একটি প্ল্যাটফর্ম তৈরি করে যেখানে নতুন হার্ডওয়্যার এবং সেন্সরগুলি সাধারণত একটি লাইব্রেরি থাকে। বেসকমের অনেক গবেষণার সাথে যা প্রায়ই যুক্ত থাকে এবং একটি লাইব্রেরি সাধারণত যে ফাংশনগুলি গ্রহণ করবে তা অবশ্যই কঠোর পরিশ্রমের সাথে প্রোগ্রাম কোডে অন্তর্ভুক্ত করা উচিত। কিন্তু ভাল খবর বেসকম সম্প্রদায়টিও অনেক বড় তাই প্রতিটি ধারণার সমাধান আছে।

সুতরাং এটি আংশিকভাবে প্রকল্পের উপর নির্ভর করে যা উন্নয়ন পরিবেশের জন্য ব্যবহৃত হয় এবং আংশিকভাবে প্রোগ্রামিং ব্যক্তির জ্ঞানের উপর নির্ভর করে।

কিন্তু কেন আমি এই সিরিজটি করছি? একদিকে এটি প্রচুর অর্থ সাশ্রয় করে। প্রতিটি প্রকল্পের জন্য আমাকে আরডুইনো বোর্ড কিনতে হবে না। উদাহরণস্বরূপ: একটি ননামেড Arduino uno এর দাম প্রায় 12 € যে নিয়ামকটি তার উপর স্থির ফাংশনের জন্য প্রয়োজনীয় ন্যূনতম সার্কিটারের সাথে মাত্র 2.5 costs খরচ করে, এটি প্রায় 4 খরচ করে। অন্যদিকে আপনার কাছে এভিআর চিপগুলির সম্পূর্ণ নির্বাচন রয়েছে যা সমর্থিত উপলব্ধ। atmegas 8 থেকে 256 এবং attiny 8 থেকে 2313 এবং অনেক xmega ধরনের যা সম্পর্কে আমার কোন অভিজ্ঞতা নেই। যদি আপনি কেবল একটি সার্ভো এবং একটি অতিস্বনক সেন্সর ব্যবহার করতে চান যা একটি হাত চিনতে পারে, উদাহরণস্বরূপ, এবং তারপর একটি আবর্জনার ক্যানের lাকনা খুলুন, আপনি সবচেয়ে ছোট চিপ ব্যবহার করতে পারেন। তাই দ্বিতীয় ভাষা শেখার অনেক কারণ রয়েছে।

চল শুরু করা যাক

সরবরাহ

এটি চিপ এবং প্রোগ্রামিং এর স্থিতিশীল ক্রিয়াকলাপের জন্য ন্যূনতম প্রয়োজনীয় অংশগুলির একটি তালিকা।

পরীক্ষার জন্য ব্রেডবোর্ড

Atmega 8-16PU (যদি আপনি তাদের ভুল করে হত্যা করেন তবে 2 বা 3 কিনলে ভাল)

7805 5V ভোল্টেজ নিয়ন্ত্রক

10Kohm প্রতিরোধক

100nF ফিল্ম ক্যাপাসিটর

10µF ইলেক্ট্রোলাইটিক ক্যাপাসিটর

100µF ইলেক্ট্রোলাইটিক ক্যাপাসিটর

রুটিবোর্ডের জন্য কিছু তার

উইন্ডোজ পিসি 7/8/8.1/10

আইএসপি প্রোগ্রামার (আমি এখানে ইউএসবিএসপি ব্যবহার করব আপনি অ্যামাজনে অল্প টাকায় কিনতে পারবেন)

Bascom AVR (আপনি এখানে একটি ডেমো ডাউনলোড করতে পারেন। সমস্ত ফাংশনগুলি আনলক করা আছে, কিন্তু আপনি কেবল 4Kb সাইজের কোড লিখতে পারেন যা প্রচুর কোডের জন্য যথেষ্ট)।

চ্ছিক অংশ:

প্রতিরোধক সঙ্গে LED´s

পুশ সুইচ

প্রকল্প নির্দিষ্ট অংশ

ধাপ 1: Bascom এবং সেটআপ ইনস্টলেশন

Bascom এবং সেটআপ ইনস্টলেশন
Bascom এবং সেটআপ ইনস্টলেশন
Bascom এবং সেটআপ ইনস্টলেশন
Bascom এবং সেটআপ ইনস্টলেশন
Bascom এবং সেটআপ ইনস্টলেশন
Bascom এবং সেটআপ ইনস্টলেশন

ফাইলটি ডাউনলোড করুন এবং Bascom AVR ইনস্টল করুন। ইন্সটল করার পর শেষ চেকবক্স সহ এর সব অংশ ইন্সটল করুন।

তারপরে আপনার পিসি রিবুট করুন অন্যথায় বেসকম শুরু হবে না।

রিবুট করার পরে বেসকম শুরু করুন।

Options -> Programmer এ যান এবং তালিকা থেকে USBasp নির্বাচন করুন, সেটিংস সংরক্ষণ করুন এবং Bascom বন্ধ করুন।

Usbasp ইনস্টল করতে এই প্রোগ্রামটি ব্যবহার করুন। এর পরে, আপনার পিসি পুনরায় বুট করুন। এখন আপনার পিসির সাথে USBasp সংযুক্ত করুন এবং ডিভাইস ম্যানেজার শুরু করুন। USBasp libusb ডিভাইসে উপস্থিত হওয়া উচিত।

Stat Bascom আবার এবং একটি নতুন ফাইল তৈরি করুন। এটি আপনার পিসিতে সংরক্ষণ করুন এবং আপনার কীবোর্ডের F7 বোতামটি টিপুন।

কম্পাইলার শুরু করে এবং খালি প্রোগ্রাম কম্পাইল করে। এখন আপনি প্রোগ্রামারের কার্যকারিতা পরীক্ষা করতে পারেন।

প্রোগ্রামার উইন্ডো শুরু করতে আপনার কীবোর্ডের F4 বোতাম টিপুন। এখন চিপে যান -> একটি মিথস্ক্রিয়া শুরু করতে শনাক্ত করুন। ইউএসবি এসএসপি থেকে এলইডি এখন ছোট করে জ্বলতে হবে। আপনি চিপ আইডি FFFFFF ডিভাইস পড়তে পারেনি এমন একটি বার্তা পেতে হবে। এটি একটি ভাল লক্ষণ যে প্রোগ্রামার কাজ করছে কিন্তু এটি কোন চিপ খুঁজে পায়নি।

এখন আমরা প্রথম সার্কিট নির্মাণ শুরু করতে পারি।

ধাপ 2: আসুন চিপটি আরও কাছ থেকে দেখি

আসুন চিপের দিকে একটু নজর দেই
আসুন চিপের দিকে একটু নজর দেই

আপনি যদি চিপের পিনআউট দেখেন তবে মনে হয় চিপটির আরডুইনো বোর্ডের সাথে কোন মিল নেই। অবশ্যই, আমরা একটি Atmega8 ব্যবহার করি এবং Arduino uno এ একটি Atmega328। কিন্তু পিনআউট প্রায় একই কিন্তু তিনি Arduino Uno বোর্ডের চিপের আরও কাজ আছে। এখানে পিনের নাম। VCC এবং GND হল বিদ্যুৎ সরবরাহের পিন।

AREF এবং AVCC হল রেফারেন্স ভোল্টেজ এবং এনালগ থেকে ডিজিটাল কনভার্টারের পাওয়ার সাপ্লাইয়ের পিন।

PB 0-7 PC 0-6 PD 0-7 হল একাধিক পেশা সহ সাধারণ উদ্দেশ্য ইনপুট আউটপুট পিন।

রিসেট পিন নাম কি বলে। চিপটি পুনরায় চালু করার জন্য। রিসেট নামের উপরের লাইন মানে নেতিবাচকতা। এর মানে হল, চিপটি পুনরায় সেট করতে আপনাকে এটিকে 0V এ টানতে হবে।

নিম্নলিখিত পিনের জন্য পৃথক নির্দেশাবলী শীঘ্রই আসছে।

RXD TXD সিরিয়াল যোগাযোগ UART এর জন্য হার্ডওয়্যার পিন।

INT0 INT1 হল হার্ডওয়্যার ইন্টারাপ্ট পিন

XCK /T0 UART ক্লক সোর্স /টাইমার /কাউন্টার 0 ক্লক সোর্স

XTAL /TOSC পিন 16MHz পর্যন্ত একটি বহিরাগত স্ফটিক (20MHz পর্যন্ত বিভিন্ন মডেল) /একটি অভ্যন্তরীণ RTC এর জন্য ক্রিস্টাল পিনের জন্য

T1 টি T0 এর অনুরূপ

AIN পিনগুলি এনালগ তুলনাকারীর জন্য

ICP1 টি T0/T1 এর অনুরূপ

OC1A হল pwm timer1 চ্যানেল A এর জন্য হার্ডওয়্যার আউটপুট পিন

এসএসআই / ওসি 2 চিপ এসপিআই এর জন্য পিন নির্বাচন করুন / যেমন ওসি 1 বি কিন্তু চ্যানেল বি

MOSI MISO SCK / OC2 হল হার্ডওয়্যার SPI পিন এবং প্রোগ্রামিং / PWM আউটপুট টাইমার 2 এর জন্য পিন

ADC0 থেকে ADC5 হল এনালগ ইনপুট

এসডিএ এসসিএল হল হার্ডওয়্যার I2C এর পিন

স্বাভাবিক চিপ 4, 5V থেকে 5, 5V এটমেগা 8L অনেক কম ভোল্টেজ দিয়ে কাজ করতে পারে।

আপনি দেখতে পাচ্ছেন যে এই চিপটি একটি Arduino Uno এর চেয়ে বেশি কিছু করতে পারে বলে মনে হয় না। কিন্তু Arduino এটি করতে পারে, আপনাকে কেবল এটি প্রোগ্রাম করতে হবে।

ধাপ 3: প্রথম সার্কিট

প্রথম সার্কিট
প্রথম সার্কিট
প্রথম সার্কিট
প্রথম সার্কিট

এখন আপনার প্রথম সার্কিট তৈরির সময়।

সাধারণত প্রথম সার্কিট কি? ঠিক! আসুন একটি LED জ্বলব।

LED PB0 এর সাথে সংযুক্ত। চিপের পাশের প্রতিরোধকের 10k Ohms আছে।

LED এর পাশের রেজিস্টারে 470 Ohms আছে।

এখন আপনি ছবিতে দেখানো হিসাবে USBasp কে Atmega এর সাথে সংযুক্ত করতে পারেন।

কিন্তু আপনি পাওয়ার চালু করার আগে আমাদের প্রোগ্রামটি লিখতে দিন।

ধাপ 4: প্রথম প্রোগ্রাম লিখুন

প্রথম প্রোগ্রাম লিখুন
প্রথম প্রোগ্রাম লিখুন

Bascom এ একটি নতুন ফাইল তৈরি করুন এবং ফলো টেক্সট টাইপ করুন।

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = output do portb.0 = 1 wait 1 portb.0 = 0 wait 1 loop

তারপরে আপনার কীবোর্ডে F7 চাপিয়ে এটি কম্পাইল করুন।

এখন আমরা F4 টিপে চিপ প্রোগ্রাম করতে পারি। প্রোগ্রামার উইন্ডো প্রদর্শিত হবে। এখন সময় এসেছে ব্রেডবোর্ড থেকে পাওয়ার চালু করার। আপনার 6 থেকে 12 ভোল্টের মধ্যে কিছু প্রয়োগ করা উচিত।

এখন চিপ -> অটোপ্রোগ্রামে যান। প্রোগ্রামার উইন্ডো স্বয়ংক্রিয়ভাবে বন্ধ হয়ে গেলে প্রোগ্রামিং সফল হয়েছে।

LED এক সেকেন্ডের ফ্রিকোয়েন্সি তে ঝলকানো উচিত।

এখন বাক্যটি অনুধাবন করতে প্রোগ্রামটি ঘনিষ্ঠভাবে দেখুন।

$ regfile "m8def.dat"

$ স্ফটিক = 1000000

$ regfile দিয়ে আমরা কম্পাইলারকে বলি ব্যবহৃত চিপের ধরন Arduino চিপের নাম হবে "m328pdef.dat"

$ crystal দিয়ে আমরা তাকে বলি CPU স্পীড প্রায় 1MHz।

config portb.0 = আউটপুট

এর মানে হল PB0 আউটপুট হিসাবে কাজ করা উচিত।

যাইহোক, সংক্ষিপ্ত বিবরণ PB0 মানে পোর্ট বি বিট 0. চিপটি বেশ কয়েকটি বন্দরে বিভক্ত। প্রতিটি বন্দরে স্পষ্ট শনাক্তকরণের জন্য একটি চিঠি দেওয়া হয়। এবং প্রতিটি পোর্টপিন 0 থেকে 7 পর্যন্ত। উদাহরণস্বরূপ, আমি পোর্ট আউটপুট রেজিস্টারে একটি সম্পূর্ণ বাইট লিখতে পারি, যা পৃথক পোর্ট পিনের মাধ্যমে আউটপুট হবে।

কর

লুপ

আরডুইনোতে অকার্যকর লুপ স্টেটমেন্টের অর্থ এই। এই দুটি কমান্ডের মধ্যে সব চিরতরে পুনরাবৃত্তি হবে। (কিছু ব্যতিক্রম ছাড়া কিন্তু পরে যে সম্পর্কে আরো)

পোর্টবি.0 = 1

অপেক্ষা করুন 1 portb.0 = 0 অপেক্ষা করুন 1

এখানে আমরা নেতৃত্বে ঝলকানি gernerate।

Portb.0 = 1 চিপকে আউটপুট PB0 থেকে 5V এ স্যুইচ করতে বলে

অপেক্ষা 1 কমান্ডটি চিপকে এক সেকেন্ডের জন্য অপেক্ষা করতে দিন। আপনি যদি দ্রুত নেতৃত্বে স্যুইচ করতে চান তবে আপনাকে অপেক্ষা কমান্ডটি এখন ওয়েটমস দিয়ে প্রতিস্থাপন করতে হবে আপনি এখন কিছু সময় মিলিসেকেন্ডে প্রবেশ করতে পারেন যেমন ওয়েটমস 500 (ওয়েটাস মানে ন্যানোসেকেন্ডে অপেক্ষা করুন)

Portb.0 = 0 চিপকে বলে আউটপুট PB0 কে 0V এ স্যুইচ করতে।

ধাপ 5: ইনপুট ব্যবহার করতে একটি বোতাম যুক্ত করুন

ইনপুট ব্যবহার করতে একটি বোতাম যুক্ত করুন
ইনপুট ব্যবহার করতে একটি বোতাম যুক্ত করুন

এখন আমরা বাটন চাপলে লেড জ্বালানোর জন্য একটি বোতাম যুক্ত করি।

ছবিতে দেখানো হিসাবে বোতাম োকান।

এখন অনুসরণ প্রোগ্রাম টাইপ করুন।

$ regfile "m8def.dat"

$ ক্রিস্টাল = 1000000 কনফিগ portb.0 = আউটপুট কনফিগ portd.7 = ইনপুট Portd.7 = 1 do যদি pind.7 = 0 তাহলে portb.0 = 1 else portb.0 = 0 loop

আপনি যদি সেই প্রোগ্রামটি চিপে আপলোড করেন, বাটন টিপলেই কেবল লিড জ্বলে ওঠে। কিন্তু কেন?

প্রোগ্রামটি শেষের মতো একইভাবে শুরু হয়

config portd.7 = ইনপুট। এর মানে হল, পিন PD7 যারা বোতামের সাথে সংযুক্ত ছিল একটি ইনপুট হিসাবে কাজ করে।

Portd.7 = 1 পিনকে হাইতে স্যুইচ করে না, কিন্তু এটি Atmega এর অভ্যন্তরীণ টান আপ প্রতিরোধককে সক্রিয় করে।

যদি আপনি arduino ব্যবহার করেন

যদি আপনি if স্টেটমেন্ট ব্যবহার করেন তাহলে আপনাকে "তারপর" স্টেটমেন্ট ব্যবহার করতে হবে। এই নমুনায় if স্টেটমেন্ট একক কমান্ড অপারেশনের জন্য ব্যবহৃত হয়। আপনি যদি আরো কমান্ড ব্যবহার করতে চান তাহলে আপনাকে এটি এভাবে লিখতে হবে।

যদি pind.7 = 0 তাহলে

portb.0 = 1 কিছু কোড কিছু কোড অন্য কোড portb.0 = 0 শেষ হলে

if স্টেটমেন্টের এই ব্যবহারের জন্য আপনাকে শেষে "end if" স্টেটমেন্ট ব্যবহার করতে হবে।

যা এখনও গুরুত্বপূর্ণ। হয়তো আপনি ইতিমধ্যে এটি দেখেছেন। ইনপুটগুলি portx.x দিয়ে জিজ্ঞাসা করা হয় না, কিন্তু pinx.x দিয়ে আপনি সহজেই মনে রাখতে পারেন। আউটপুটে শব্দটিতে "ও" (পোর্ট) থাকে এবং ইনপুটগুলিতে "আই" (পিন) থাকে।

এবার একটু ঘুরে দেখার পালা।

আমার পরবর্তী নির্দেশনা শীঘ্রই আসবে (যখন স্ট্যান্ডার্ড স্টেটমেন্ট যেমন

আপনি যদি আমার নির্দেশযোগ্য পছন্দ করেন এবং আরো চান তবে আমাকে মন্তব্যগুলিতে বলুন।

প্রস্তাবিত: