Мазмұны:

Bascom AVR -мен жұмысқа кірісу: 5 қадам
Bascom AVR -мен жұмысқа кірісу: 5 қадам

Бейне: Bascom AVR -мен жұмысқа кірісу: 5 қадам

Бейне: Bascom AVR -мен жұмысқа кірісу: 5 қадам
Бейне: Bascom Avr | How to Set Up & Program an LCD 16x2 Using Bascom Avr and Arduino Uno Board 2024, Шілде
Anonim
Bascom AVR көмегімен жұмысқа кірісу
Bascom AVR көмегімен жұмысқа кірісу

Бұл AVR микроконтроллерін Bascom AVR көмегімен бағдарламалауды үйрететін серияның басы.

Мен мұны не үшін істеп жатырмын.

Осы сериядағы бағдарлама үлгілерінің көпшілігін Arduino көмегімен жасауға болады.

Кейбіреулер оңайырақ, ал кейбіреулері қиын, бірақ соңында екеуі де бір контроллерде жұмыс істейді.

Бірақ әр даму ортасында бағдарламалау әдісі әр түрлі. Ардуиноға негізгі функциялардан басқа барлық нәрсе үшін кітапхана қажет. Баском кітапханалармен де жұмыс істейді, бірақ мен сирек біреуін қосуға тура келеді. Arduino көмегімен аппараттық құралдардың барлық параметрлері кітапханалар арқылы жасалады. Сіз микроконтроллердің нақты қуатына өте аз әсер етесіз. Контроллерде бар таймерден бастаңыз. arduino көмегімен сізге қайтадан кітапхана қажет. Егер сізде таймер жұмыс істемейінше болса, бұл басқа кітапхана сіздің параметрлермен соқтығысуы мүмкін. Баскомда сіз arduino жұмыс істейтін жүктеу секторын қоса алғанда, толық жабдыққа ақысыз қол жеткізе аласыз. мысалы, bascom -дағы кейбір кітапханалар сізден қай таймерді қолданғыңыз келетінін сұрайды. Екінші жағынан, arduino кітапхананы өзіңіз құруды жеңілдететіндіктен, бұл оны жаңа аппараттық құралдар мен сенсорларда әдетте тікелей кітапхана болатын платформаға айналдырады. Баскомдағы көп зерттеулермен байланысты және әдетте кітапхана алатын функцияларды бағдарлама кодына мұқият енгізу қажет. жақсы жаңалық - баскомдар қауымы да өте үлкен, сондықтан әр идеяның шешімі бар.

Бұл ішінара жобаның даму ортасы үшін қолданылатынына және бағдарламалаушының біліктілігіне байланысты.

бірақ мен бұл серияны не үшін жасап жатырмын. бір жағынан көп ақша үнемдейді. Маған әр жоба үшін arduino тақтасын сатып алудың қажеті жоқ. Мысалы: Noname Arduino uno шамамен 12 евро тұрады, оның контроллерінің бағасы - 2,5 евро, тұрақты функция үшін минималды схема - 4 евро. Екінші жағынан, сізде қол жетімді AVR чиптерінің толық таңдауы бар. atmegas 8 -ден 256 -ға дейін және attiny 8 -ден 2313 -ке дейін және менде тәжірибесі жоқ көптеген xmega түрлері. Егер сіз жай ғана қолды танитын серво мен ультрадыбыстық сенсорды қолданғыңыз келсе, содан кейін қоқыс жәшігінің қақпағын ашқыңыз келсе, мүмкін болатын ең кішкентай чипті қолдануға болады. Екінші тілді үйренудің көптеген себептері бар.

Ендеше бастайық

Жабдықтар

Бұл чиптің тұрақты жұмыс істеуі мен бағдарламалануы үшін қажетті ең аз бөліктердің тізімі.

Тестке арналған тақта

Atmega 8-16PU (егер сіз оларды қателесіп өлтірсеңіз, 2 немесе 3 сатып алған дұрыс)

7805 5В кернеу реттегіші

10Км резистор

100nF пленкалы конденсатор

10 мкФ электролиттік конденсатор

100 мкФ электролиттік конденсатор

нанға арналған бірнеше сымдар

Windows ДК 7/8/8.1/10

ISP бағдарламашысы (мен мұнда USBasp -ты қолданамын, сіз оны Amazon -да аз ақшаға сатып ала аласыз)

Bascom AVR (мұнда DEMO жүктеуге болады. Барлық функциялар құлыптан босатылған, бірақ сіз кодты 4Кб көлеміне дейін жаза аласыз, бұл көптеген кодтар үшін жеткілікті).

Қосымша бөлшектер:

Резисторлары бар жарықдиодты шамдар

басқыштар

жобаның арнайы бөліктері

1 -қадам: Bascom орнату және орнату

Баскомды орнату және орнату
Баскомды орнату және орнату
Баскомды орнату және орнату
Баскомды орнату және орнату
Баскомды орнату және орнату
Баскомды орнату және орнату

Файлды жүктеп, Bascom AVR орнатыңыз. Оның барлық бөліктерін орнатқаннан кейін соңғы құсбелгіні қойыңыз.

Осыдан кейін компьютерді қайта жүктеңіз, әйтпесе bascom іске қосылмайды.

Қайта жүктеуден кейін bascom бастаңыз.

Опциялар -> Бағдарламалаушыға өтіп, тізімнен USBasp таңдаңыз, параметрлерді сақтап, Bascom жабыңыз.

Бұл бағдарламаны usbasp орнату үшін қолданыңыз. Осыдан кейін компьютерді қайта жүктеңіз. Енді USBasp -ты компьютерге қосыңыз және құрылғы менеджерін іске қосыңыз. USBasp libusb құрылғыларында пайда болуы керек.

Стат Баскомды қайтадан жіберіп, жаңа файл жасаңыз. Оны компьютерге сақтап, пернетақтадағы F7 түймесін басыңыз.

Компилятор бос бағдарламаны бастайды және құрастырады. Енді сіз бағдарламашының жұмысын тексере аласыз.

Программист терезесін бастау үшін пернетақтадағы F4 түймесін басыңыз. Енді өзара әрекеттестікті бастау үшін чип -> анықтауға өтіңіз. USBasp -дан жарық диодтары қысқа жыпылықтауы керек. Id FFFFFF чипі құрылғыны оқи алмайтын сияқты хабарлама алуыңыз керек. Бұл бағдарламашы жұмыс істейтінінің жақсы белгісі, бірақ ол ешқандай чип таппады.

Енді біз бірінші схеманы құруға кірісе аламыз.

2 -қадам: Чипке жақынырақ қарайық

Чипке жақынырақ қарайық
Чипке жақынырақ қарайық

Егер сіз чиптің шыңына қарасаңыз, онда чиптің arduino тақтасына ұқсастығы жоқ сияқты. Әрине, біз Atmega8 қолданамыз, ал Arduino uno - Atmega328. Бірақ Pinout шамамен бірдей, бірақ оның Arduino Uno тақтасының чипі көп функцияға ие. Бұл жерде түйреуіштердің атаулары. VCC және GND - электрмен жабдықтауға арналған түйреуіштер.

AREF және AVCC - аналогты -цифрлық түрлендіргішке арналған кернеу мен қуат көзіне арналған түйреуіштер.

PB 0-7 PC 0-6 PD 0-7-бірнеше адамнан тұратын жалпы мақсаттағы кіріс шығыс түйреуіштері.

бастапқы қалпына келтіру - бұл атау. Чипті қайта іске қосу үшін. Қалпына келтіру атауының үстіндегі жол терістеуді білдіреді. Бұл чипті қалпына келтіру үшін оны 0В -қа дейін төмендету керек.

Келесі түйреуіштер үшін бөлек нұсқаулар жақын арада шығады.

RXD TXD - бұл UART сериялық байланысқа арналған аппараттық түйреуіштер.

INT0 INT1 - бұл жабдықты үзуге арналған түйреуіштер

XCK /T0 UART Сағат көзі /Таймер /Counter0 Сағат көзі

XTAL /TOSC түйреуіштері 16 МГц дейінгі сыртқы кристаллға арналған (20 МГц -ке дейінгі әр түрлі модельдер) /Ішкі RTC үшін кристалды түйреуіштер.

T1 T0 -ге ұқсас

AIN түйреуіштері аналогты салыстыруға арналған

ICP1 T0/T1 -ге ұқсас

OC1A - pwm таймері 1 арнасы үшін аппараттық шығыс түйреуіші

SS / OC2 чипі SPI / OC1B сияқты, бірақ B арнасы үшін түйреуішті таңдайды

MOSI MISO SCK / OC2 - бұл SPI аппараттық түйреуіштері және бағдарламалауға арналған түйреуіштер / PWM шығыс таймері2

ADC0 - ADC5 - аналогты кірістер

SDA SCL - бұл I2C аппараттық құралының түйреуіштері

Қалыпты чип 4, 5 В -тан 5, 5 В -қа дейін жұмыс істей алады Atmega 8L әлдеқайда төмен кернеумен жұмыс істей алады.

Сіз бұл чиптің Arduino Uno жасай алмайтын нәрседен де көп нәрсені жасай алатынын көресіз. Бірақ Arduino мұны да жасай алады, тек оны бағдарламалау керек.

3 -қадам: Бірінші тізбек

Бірінші тізбек
Бірінші тізбек
Бірінші тізбек
Бірінші тізбек

Енді сіздің бірінші тізбекті құруға уақыт келді.

Әдетте бірінші тізбек қандай? Дұрыс! Светодиодты жыпылықтайық.

Жарық диоды PB0 қосылған. Чиптің жанындағы резисторда 10 к Ом бар.

Жарық диодының жанындағы резистор 470 Ом.

Енді сіз USBasp -ты суретте көрсетілгендей Atmega -ге қоса аласыз.

Бірақ қуатты қоспас бұрын бағдарламаны жазуға рұқсат етіңіз.

4 -қадам: Бірінші бағдарламаны жазыңыз

Бірінші бағдарламаны жазыңыз
Бірінші бағдарламаны жазыңыз

Баскомда жаңа файл жасаңыз және келесі мәтінді теріңіз.

$ regfile «m8def.dat»

$ crystal = 1000000 конфигурация portb.0 = шығару portb.0 = 1 күту 1 портб.0 = 0 күту 1 цикл

содан кейін пернетақтадағы F7 пернесін басу арқылы оны құрастырыңыз.

Енді біз чипті F4 пернесін басу арқылы бағдарламалай аламыз. Бағдарламашы терезесі пайда болады. Енді тақтаның қуатын қосатын уақыт келді. Сіз 6 мен 12 вольт арасындағы нәрсені қолдануыңыз керек.

Енді chip -> автопрограммасына өтіңіз. Егер бағдарламашы терезесі автоматты түрде жабылса, бағдарламалау сәтті аяқталды.

Жарық диоды бір секунд жиілікте жыпылықтауы керек.

Енді синтаксисті түсінбеу үшін бағдарламаны мұқият қарастырыңыз.

$ regfile «m8def.dat»

$ кристалл = 1000000

$ regfile көмегімен біз компиляторға Arduino чипінің атауын «m328pdef.dat» болатын қолданылған чиптің түріне айтамыз.

$ crystal көмегімен біз оған процессордың жылдамдығы 1 МГц туралы айтамыз.

config portb.0 = Шығу

бұл PB0 шығыс ретінде әрекет етуі керек дегенді білдіреді.

Айтпақшы, PB0 аббревиатурасы В порт 0 битін білдіреді. Чип бірнеше портқа бөлінеді. Әр портқа анық сәйкестендіру үшін хат беріледі. және әр портфин 0 -ден 7 -ге дейін. Мысалы, мен порттың жеке регистрлері арқылы шығарылатын порт шығыс регистріне толық байтты жаза аламын.

істеу

цикл

Бұл Arduino -да void loop туралы мәлімдеме білдіреді. Осы екі команданың бәрі мәңгі қайталанады. (кейбір ерекшеліктерді қоспағанда, бірақ бұл туралы кейінірек)

Портб.0 = 1

1 портб.0 = 0 күту 1

Мұнда біз жарықдиодты жыпылықтаймыз.

Portb.0 = 1 чипке PB0 шығысын 5В -қа ауыстыруды айтады

күту 1 командасы чипке бір секунд күтуге мүмкіндік береді. Егер сіз светодиодты тез ауыстырғыңыз келсе, күту пәрменін күту уақытына ауыстыруыңыз керек, енді біраз уақытты миллисекундпен енгізуге болады, мысалы. waitms 500. (waitus - наносекундтарда күтуді білдіреді)

Portb.0 = 0 микросхемаға PB0 шығысын 0В -қа ауыстыруды айтады.

5 -қадам: Кірістерді пайдалану батырмасын қосыңыз

Кірістерді пайдалану үшін түймені қосыңыз
Кірістерді пайдалану үшін түймені қосыңыз

Енді біз егер түйме басылса, жарықдиодты жарықтандыру үшін түйме қосамыз.

Түймені суретте көрсетілгендей енгізіңіз.

енді келесі бағдарламаны енгізіңіз.

$ regfile «m8def.dat»

$ crystal = 1000000 конфигурация portb.0 = шығыс конфигурациясы portd.7 = кіру Portd.7 = 1 егер pind.7 = 0 болса portb.0 = 1 басқа portb.0 = 0 цикл

Егер сіз бұл бағдарламаны микросхемаға жүктесеңіз, түйме басылғанда ғана светодиод жанып тұрады. Бірақ неге?

бағдарлама соңғысымен бірдей басталады

config portd.7 = кіріс. Яғни, түймені қосқан PD7 түйреуіші кіріс қызметін атқарады.

Portd.7 = 1 түйреуішті жоғарыға ауыстырмайды, бірақ ол Atmega ішкі тартқыш резисторын іске қосады.

Егер arduino -ға үйренсеңіз, if statemend сәл қатал көрінеді.

егер if операторын қолдансаңыз, онда «содан кейін» операторын қолдануыңыз керек. Бұл үлгіде if операторы бір командалық операциялар үшін қолданылады. Егер сіз басқа командаларды қолданғыңыз келсе, оны осылай жазуыңыз керек.

егер pind.7 = 0 болса

portb.0 = 1 кейбір код кейбір код кейбір код басқа portb.0 = 0 if if

if операторын қолдану үшін сіз соңында «if if» операторын пайдалануыңыз керек.

әлі не маңызды. Мүмкін сіз оны көрген шығарсыз. кірістер portx.x арқылы емес, pinx.x көмегімен сұралады, мұны оңай есте сақтауға болады. Шығу сөзде «o» (порт), ал кірістерде «i» (түйреуіш) болады.

Енді сізде кішкене ойнауға кезек келді.

Менің келесі нұсқаулығым жақында болады (стандартты мәлімдемелер, while, case, for және айнымалылар сияқты.)

Егер сіз менің нұсқаулықты ұнатсаңыз және көбірек білгіңіз келсе, түсініктемелерде айтыңыз.

Ұсынылған: