Мазмуну:

Bascom AVR менен баштоо: 5 кадам
Bascom AVR менен баштоо: 5 кадам

Video: Bascom AVR менен баштоо: 5 кадам

Video: Bascom AVR менен баштоо: 5 кадам
Video: BASCOM AVR: УРОК 1st LESSON 2024, Июль
Anonim
Bascom AVR менен баштоо
Bascom AVR менен баштоо

Бул AVR микроконтроллерин Bascom AVR менен программалоону үйрөтүүчү сериянын башталышы.

Мен муну эмне үчүн кылып жатам.

Бул сериядагы программалардын көпчүлүгүн Arduino менен жасай аласыз.

Кээ бири оңой, кээ бирлери кыйыныраак, бирок аягында экөө тең бир контроллерде иштейт.

Бирок программалоонун жолу ар бир өнүгүү чөйрөсүндө ар башка. Arduino негизги функцияларынан башка бардык нерселер үчүн китепканага муктаж. Баском китепканалар менен да иштейт, бирок мен сейрек кездешет. Arduino менен, жабдыкка тиешелүү бардык орнотуулар китепканалар аркылуу жүргүзүлөт. Сиз микроконтроллердин чыныгы күчүнө өтө аз таасир этесиз. Контроллердеги таймерлерден баштап. arduino менен дагы бир китепкана керек. Эгерде сизде таймер иштей электе, бул башка китепкана сиздин жөндөөлөрүңүз менен кагылышып кетиши мүмкүн. Баскомдо сиз arduino ээлеген жүктөө секторун камтыган толук жабдууларга бекер кире аласыз. мисалы, bascomдогу кээ бир китепканалар сизден кайсы таймерди колдонууну каалаарыңызды сурашат. экинчи жагынан, arduino китепкананы өзүңүз түзүүнү оңой кылгандыктан, табигый түрдө аны жаңы жабдуулар менен сенсорлордун китепканасы түз турган аянтчага айландырат. көбүнчө баском боюнча көп изилдөөлөр менен байланышкан жана китепкана адатта ала турган функцияларды программанын кодуна тыкандык менен киргизүү керек. бирок жакшы кабар баскомдун коомчулугу дагы абдан чоң, ошондуктан ар бир идея үчүн чечим бар.

Ошентип, бул жарым-жартылай долбоорго жана өнүгүү чөйрөсүнө колдонулган нерсеге жана программалоочу адамдын ноу-хаууна көз каранды.

бирок мен бул серияны эмнеге жасап жатам. бир жагынан көп акчаны үнөмдөйт. Ар бир долбоор үчүн ардуино тактасын сатып алуунун кажети жок. Мисалы: 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 мкФ электролиттик конденсатор

нан үчүн кээ бир зымдар

Windows PC 7/8/8.1/10

ISP программисти (мен бул жерде USBaspти колдоном, аны аз акчага amazonтон сатып аласың)

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

Кошумча бөлүктөр:

LED каршылыгы бар

баскычтар

долбоорго тиешелүү бөлүктөр

1 -кадам: Bascom орнотуу

Bascom орнотуу
Bascom орнотуу
Bascom орнотуу
Bascom орнотуу
Bascom орнотуу
Bascom орнотуу

Файлды жүктөп алып, Bascom AVR орнотуңуз. Анын бардык бөлүктөрүн орноткондон кийин акыркы белгилөө кутучасын орнотуңуз.

Андан кийин компьютериңизди өчүрүп күйгүзүңүз, антпесе bascom иштебей калат.

Кайра жүктөөдөн кийин bascom башталат.

Жолдор -> Программистке өтүп, тизмеден USBaspти тандап, орнотууларды сактап, Баскомду жабыңыз.

Бул программаны usbasp орнотуу үчүн колдонуңуз. Андан кийин, компьютериңизди кайра жүктөңүз. Эми USBaspти компьютериңизге туташтырып, түзмөк менеджерин иштетиңиз. USBasp libusb түзмөктөрүндө көрүнүшү керек.

Кайрадан Stat Bascom жана жаңы файл түзүңүз. Аны компьютериңизге сактап, баскычтобуңуздагы F7 баскычын басыңыз.

Компилятор бош программаны баштайт жана түзөтөт. Эми сиз программисттин иштешин текшере аласыз.

Программист терезесин баштоо үчүн клавиатураңыздагы F4 баскычын басыңыз. Эми чипке өтүңүз -> өз ара аракеттенүүнү баштоо үчүн аныктаңыз. USBaspтан келген LEDлар азыр кыска ирмелиши керек. Сиз чип 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 timer1 каналы A үчүн аппараттык чыгаруу пини

SS / OC2 чипи SPI / OC1B сыяктуу, бирок канал В үчүн пин тандап алат

MOSI MISO SCK / OC2 - бул SPI аппараттык түйүндөрү жана программалоо үчүн казыктар / PWM чыгаруу таймери2

ADC0 - ADC5 аналогдук кириштер

SDA SCL - бул I2C аппараттык түйүндөрү

Кадимки чип 4, 5Vдан 5, 5Vга чейин иштей алат, Atmega 8L кыйла төмөн чыңалуу менен иштей алат.

Көрдүңүз да, бул чип Arduino Uno жасай албагандан да көптү кыла алат. Бирок Arduino муну кыла алат, аны программалоо гана керек.

3 -кадам: Биринчи Circuit

Биринчи Circuit
Биринчи Circuit
Биринчи Circuit
Биринчи Circuit

Эми биринчи схемаңызды курууга убакыт келди.

Адатта биринчи схема деген эмне? Туура! Келгиле, LEDди күйгүзөлү.

LED PB0 менен туташкан. Чиптин жанындагы резистордо 10к Ом бар.

LEDдин жанындагы резистор 470 Омго ээ.

Эми сиз USBaspти сүрөттө көрсөтүлгөндөй Atmega менен туташтыра аласыз.

Бирок сиз күчүңүздү күйгүзүүдөн мурун, программаны жазалы.

4 -кадам: Биринчи программаны жазыңыз

Биринчи программаны жаз
Биринчи программаны жаз

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

$ regfile "m8def.dat"

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

Андан кийин клавиатураңыздагы F7 баскычын басып, аны түзүңүз.

Эми биз чипти F4 басуу менен программалай алабыз. Программист терезеси пайда болот. Эми бул нан панелинен электр энергиясын күйгүзүү убактысы келди. Сиз 6 жана 12 Volts ортосунда бир нерсе колдонуу керек.

Эми chip -> autoprogramга өтүңүз. Эгерде программист терезеси автоматтык түрдө жабылса, программалоо ийгиликтүү болгон.

Жарык диод бир секундада жарк этип турушу керек.

Эми синтаксисти түшүнбөө үчүн программаны жакшылап карап көрүңүз.

$ regfile "m8def.dat"

$ кристалл = 1000000

$ regfile менен биз компиляторго Arduino чипинин аты "m328pdef.dat" болорун, колдонулган чиптин түрүн айтабыз.

$ crystal менен биз cpu ылдамдыгын болжол менен 1МГцке айтабыз.

config portb.0 = Чыгуу

бул PB0 чыгаруу катары иштеши керек дегенди билдирет.

Баса, кыскартуу PB0 порт B бит 0. чип бир нече портторго бөлүнгөн билдирет. Ар бир порт так аныктоо үчүн кат менен берилет. жана ар бир портпин 0дон 7ге чейин бир аз. Мисалы, мен порттун чыгыш регистрине толук байтты жаза алам, ал жеке порт казыктары аркылуу чыгарылат.

кыл

цикл

Бул Arduinoдо void loop билдирүүсүнүн мааниси. Ошол эки буйруктун баары түбөлүккө кайталанат. (кээ бир өзгөчөлүктөрдү эске албаганда, бирок кийинчерээк бул тууралуу)

Portb.0 = 1

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

Бул жерде биз леддин жарк эткенин көрөбүз.

Portb.0 = 1 чипке PB0 5Vга которууну айтат

күтүү 1 командасы чипти бир секунд күтө турсун. Эгерде сиз ледти тезирээк алмаштыргыңыз келсе, күтүү буйругун күтүү убактысы менен алмаштырышыңыз керек, азыр бир аз убакытты миллисекунд менен киргизе аласыз, мис. waitms 500. (waitus наносекунддарда күтүүнү билдирет)

Portb.0 = 0 чипке PB0ну 0Vга которууну айтат.

5 -кадам: Киргизүүлөрдү колдонуу үчүн баскычты кошуңуз

Киргизүүлөрдү колдонуу үчүн баскычты кошуңуз
Киргизүүлөрдү колдонуу үчүн баскычты кошуңуз

Эми биз эгерде кнопка басылса, жарыктандыруучу баскычты кошобуз.

Сүрөттө көрсөтүлгөндөй баскычты салыңыз.

азыр кийинки программаны териңиз.

$ regfile "m8def.dat"

$ crystal = 1000000 конфигурация portb.0 = чыгаруу конфигурациясы portd.7 = киргизүү Portd.7 = 1 болсо pind.7 = 0 анда portb.0 = 1 башка portb.0 = 0 цикл

Эгерде сиз бул программаны чипке жүктөсөңүз, анда LED баскычы басылганда гана күйөт. Бирок эмне үчүн?

программа акыркыга чейин бирдей башталат

config portd.7 = киргизүү. Башкача айтканда, баскычка туташкан PD7 пини кирүү милдетин аткарат.

Portd.7 = 1 төөнөгүчтү бийикке которбойт, бирок ал Атмеганын ички тартылуу каршылыгын иштетет.

Эгерде сиз arduinoго көнсөңүз, анда statemend бир аз коркунучтуу көрүнөт.

эгер сиз if операторун колдонсоңуз, анда "анда" билдирүүсүн колдонушуңуз керек. Бул мисалда if оператору бир командалык операциялар үчүн колдонулат. Эгерде сиз көбүрөөк буйруктарды колдонууну кааласаңыз, анда минтип жазышыңыз керек.

Эгерде pind.7 = 0 анда

portb.0 = 1 кээ бир код кээ бир код кээ бир код башка portb.0 = 0 if if

if билдирүүсүн колдонуу үчүн, аягында "end if" билдирүүсүн колдонуу керек.

дагы эмне маанилүү. Балким, сиз буга чейин көргөнсүз. Кириштер portx.x менен эмес, pinx.x менен суралат. Чыгыштар сөздө "о" (порт) жана кириштерде "i" (пин) бар.

Эми кезек сизди кичине ойноп жатат.

Менин кийинки көрсөтмөм жакында болот (while, standard case, select case, for, and variables.)

Эгерде сизге менин үйрөткүчүм жакса жана дагы көп нерселерди кааласаңыз, комментарийлерде мага айтыңыз.

Сунушталууда: