
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 12:57

Това е началото на поредица, която ще ви научи да програмирате вашия AVR микроконтролер с Bascom AVR.
Защо правя това.
Повечето примерни програми от тази серия можете да направите с Arduino.
Някои по -лесни и други по -трудни, но в края и двете ще работят на един и същ контролер.
Но начинът на програмиране е различен във всяка среда за разработка. Arduino се нуждае от библиотека за всичко, с изключение на основните функции. Bascom също работи с библиотеки, но рядко ми се налага да включвам такава. С Arduino всички хардуерно специфични настройки се извършват чрез библиотеките. имате много малко влияние върху действителната мощност на микроконтролера. Започвайки с таймерите, които контролерът има. с arduino отново имате нужда от библиотека. ако имате таймера, докато работи, може да се окаже, че друга библиотека се сблъсква с вашите настройки. В bascom имате свободен достъп до пълния хардуер, включително зареждащия сектор, който е зает от arduino. например някои библиотеки в bascom ви питат кой таймер искате да използвате. от друга страна, тъй като arduino улеснява много лесно създаването на библиотека, естествено го прави платформа, където новият хардуер и сензорите обикновено имат директно библиотека. това, което често се свързва с много изследвания в bascom и функциите, които библиотеката обикновено би поела, трябва след това да бъдат старателно включени в програмния код. но добра новина, общността на bascom също е много голяма, поради което има решение за всяка идея.
Така че отчасти зависи от проекта какво се използва за среда за разработка и отчасти от ноу-хауто на програмиста.
но защо правя тази поредица. от една страна спестява много пари. Не е нужно да купувам дъска arduino за всеки проект. Например: A noname Arduino uno струва около 12 €, контролерът, който е на него, струва само 2,5 € с минималните схеми, необходими за стабилна функция, струва около 4 €. от друга страна имате пълния избор на поддържани AVR чипове. atmegas 8 до 256 и attiny 8 до 2313 и много xmega типове, за които нямам опит. Ако просто искате да използвате серво и ултразвуков сензор, който може да разпознае ръка например и след това да отворите капак на кофата за боклук, можете да използвате възможно най -малкия чип. Така че има много причини да научите втори език.
Така че нека започнем
Консумативи
Това е списък на минимално необходимите части за стабилна работа на чипа и програмиране.
Платформа за тестване
Atmega 8-16PU (по-добре купувайте 2 или 3, ако ги убиете по погрешка)
7805 5V регулатор на напрежението
10Kohm резистор
100nF филмов кондензатор
10 μF електролитен кондензатор
100 μF електролитен кондензатор
някои проводници за макет
Windows PC 7/8/8.1/10
ISP програмист (тук ще използвам USBasp, който можете да го купите в Amazon за малко пари)
Bascom AVR (можете да изтеглите тук DEMO. Всички функции са отключени, но можете да пишете код само до 4Kb размер, който е достатъчен за много код).
Допълнителни части:
Светодиоди с резистори
бутони за натискане
части, специфични за проекта
Стъпка 1: Инсталиране на Bascom и настройка



Изтеглете файла и инсталирайте Bascom AVR. Инсталирайте всички части от него, включително последното квадратче за отметка след инсталирането.
След това рестартирайте компютъра си, в противен случай bascom няма да стартира.
След рестартирането стартирайте bascom.
Отидете на Опции -> Програмист и изберете USBasp от списъка, запазете настройките и затворете Bascom.
Използвайте тази програма, за да инсталирате usbasp. След това рестартирайте компютъра отново. Сега свържете USBasp с вашия компютър и стартирайте диспечера на устройства. USBasp трябва да се появи на устройствата libusb.
Stat Bascom отново и създайте нов файл. Запишете го на вашия компютър и натиснете бутона F7 на клавиатурата.
Компилаторът стартира и компилира празната програма. Сега можете да тествате функционалността на програмиста.
Натиснете бутона F4 на клавиатурата, за да стартирате прозореца на програмиста. Сега отидете на чип -> идентифицирайте, за да започнете взаимодействие. Светодиодите от USBasp сега трябва да мигат кратко. Трябва да получите съобщение като идентификатор на чип FFFFFF не може да прочете устройството. Това е добър знак, че програмистът работи, но не намери чип.
Сега можем да започнем да изграждаме първата верига.
Стъпка 2: Нека разгледаме по -отблизо чипа

Ако погледнете разклонението на чипа, изглежда, че чипът няма сходство с платката arduino. Разбира се, ние използваме Atmega8, а на Arduino uno е Atmega328. Но Pinout е почти същият, но чипът на платката Arduino Uno има повече функции. Ето имената на щифтовете. VCC и GND са щифтовете за захранване.
AREF и AVCC са изводи за референтно напрежение и захранване за аналогово -цифров преобразувател.
PB 0-7 PC 0-6 PD 0-7 са изходни изводи с общо предназначение с многократно заемане.
reset pin е това, което името казва. За да рестартирате чипа. Редът над името за нулиране означава отрицание. Това означава, че за да нулирате чипа, трябва да го издърпате до 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
SS / OC2 чип за избор на чип за SPI / като OC1B, но канал B
MOSI MISO SCK / OC2 са хардуерните SPI щифтове и щифтовете за програмиране / ШИМ изходен таймер2
ADC0 до ADC5 са аналоговите входове
SDA SCL са щифтовете за хардуерен I2C
Нормалният чип може да работи от 4, 5V до 5, 5V, Atmega 8L може да работи с много по -ниско напрежение.
Виждате, че дори този чип може да направи повече, отколкото Arduino Uno изглежда не може. Но Arduino също може да го направи, трябва само да го програмирате.
Стъпка 3: Първата верига


Сега е време да изградите първата си верига.
Каква е обикновено първата верига? Точно така! Нека премигнем светодиода.
Светодиодът е свързан с PB0. Резисторът до чипа има 10k Ohms.
Резисторът до светодиода има 470 ома.
Сега можете да свържете USBasp с Atmega, както е показано на снимката.
Но преди да включите захранването, нека напишем програмата.
Стъпка 4: Напишете първата програма

Създайте нов файл в Bascom и въведете следния текст.
$ regfile "m8def.dat"
$ кристал = 1000000 конфигурационен портb.0 = изход до портb.0 = 1 изчакване 1 портb.0 = 0 изчакване 1 цикъл
след това го компилирайте, като натиснете F7 на клавиатурата си.
Сега можем да програмираме чипа чрез натискане на F4. Появява се прозорецът на програмиста. Сега е време да включите захранването от дъската. Трябва да приложите нещо между 6 и 12 волта.
Сега отидете на чип -> автопрограма. Ако прозорецът на програмиста се затвори автоматично, програмирането е било успешно.
Светодиодът трябва да мига с една секунда честота.
Сега разгледайте по -отблизо програмата, за да разберете синтаксиса.
$ regfile "m8def.dat"
$ кристал = 1000000
с $ regfile казваме на компилатора вида на използвания чип името на чипа Arduino ще бъде "m328pdef.dat"
с $ crystal му казваме скоростта на процесора около 1MHz.
config portb.0 = Изход
това означава, че PB0 трябва да действа като изход.
Между другото, съкращението PB0 означава порт B бит 0. Чипът е разделен на няколко порта. На всяко пристанище се дава писмо за ясна идентификация. и всеки пристанищен порт малко от 0 до 7. Например, мога да напиша пълен байт в изходния регистър на порта, който ще бъде изведен чрез отделните пинове на порта.
направете
цикъл
Ето какво означава в Arduino изявлението void loop. Всичко между тези две команди ще се повтаря завинаги. (с някои изключения, но по -късно повече за това)
Portb.0 = 1
изчакайте 1 портb.0 = 0 изчакайте 1
Тук генерираме мигането на светодиода.
Portb.0 = 1 казва на чипа да превключи изхода PB0 на 5V
командата wait 1 оставя чипа да изчака една секунда. Ако искате да превключите светодиода по -бързо, трябва да замените командата чакане с чакания, сега можете да въведете известно време в милисекунди, напр. waitms 500. (waitus означава изчакване в наносекунди)
Portb.0 = 0 казва на чипа да превключи изхода PB0 на 0V.
Стъпка 5: Добавете бутон, за да използвате входове

Сега добавяме бутон, за да светне светодиода, ако бутонът е натиснат.
Поставете бутона, както е показано на снимката.
сега въведете следната програма.
$ regfile "m8def.dat"
$ кристал = 1000000 конфигурация portb.0 = изход конфигурация portd.7 = вход Portd.7 = 1 направете ако pind.7 = 0 тогава portb.0 = 1 else портb.0 = 0 цикъл
Ако качите тази програма на чипа, светодиодът светва само при натискане на бутона. Но защо?
програмата стартира идентично като последната до
config portd.7 = вход. Това означава, че пин PD7, който е свързан с бутон, действа като вход.
Portd.7 = 1 не превключва щифта към висок, но активира вътрешния резистор за изтегляне на Atmega.
Ако Statemend изглежда малко странно, ако сте свикнали с arduino.
ако използвате оператора if, трябва да използвате израза "then". В тази извадка операторът if се използва за операции с единична команда. Ако искате да използвате повече команди, трябва да го напишете така.
ако pind.7 = 0 тогава
портb.0 = 1 някакъв код някакъв код друг код друг портb.0 = 0 край ако
за това използване на оператора if трябва да използвате израза "end if" в края.
това, което все още е важно. Може би вече сте го виждали. входовете не се запитват с portx.x, а с pinx.x. Можете лесно да запомните това. Изходите имат "o" (порт) в думата, а входовете имат "i" (щифт).
Сега е ваш ред да поиграете малко.
Следващата ми инструкция ще дойде скоро (стандартни изявления като while, изберете регистър, за и променливи.)
Ако ви харесва моята инструкция и искате повече, кажете ми в коментарите.
Препоръчано:
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: 7 стъпки

Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: Понякога вибрациите са причина за сериозни проблеми в много приложения. От валове и лагери на машината до работа на твърдия диск, вибрациите причиняват повреда на машината, ранна подмяна, ниска производителност и нанасят сериозен удар върху точността. Мониторинг
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: 3 стъпки

Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: КУПЕТЕ (щракнете върху теста, за да закупите/посетете уеб страницата) STM32F767ZISUPPORTED SOFTWARE · STM32CUBE IDE · KEIL MDK ARM µVISION · EWARM IAR EMBEDDED WORKBENCH използва се за програмиране на STM микроконтролери
Първи стъпки с Flipboard: 9 стъпки

Първи стъпки с Flipboard: Този кратък урок е предназначен да ви помогне да започнете с мобилното приложение Flipboard. Това е само въведение, тъй като има много персонализирани функции на Flipboard. След като завършите този урок, ще имате основните познания за Flipboard
Първи стъпки с WeMos ESP8266: 6 стъпки

Първи стъпки с WeMos ESP8266: В тази инструкция ще стартираме мигащия Led пример на WeMos ESP8266
Първи стъпки с радио Ham: 5 стъпки (със снимки)

Първи стъпки с радиото с шунка: Като наскоро издаден лиценз за шунка, искам да премина през процеса, който предприех, за да вляза в радиото с шунка. Бях привлечен от аспекта на самоувереността на хобито, давайки на хората начин да общуват, когато други методи са нарушени. Но също така е полезно да