Агуулгын хүснэгт:

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 -ийн эзэмшдэг ачаалах хэсгийг багтаасан иж бүрэн тоног төхөөрөмжид үнэгүй нэвтрэх боломжтой. Жишээлбэл, bascom -ийн зарим номын сан танд ямар таймер ашиглахыг хүсч байна. Нөгөөтэйгүүр, arduino нь өөрөө номын сан бий болгоход маш хялбар болгодог тул шинэ тоног төхөөрөмж, мэдрэгч нь ихэвчлэн шууд номын сантай болох тавцан болдог. ихэвчлэн bascom -ийн олон судалгаа, номын сангийн хийх ёстой үүргийг ихэвчлэн програмын кодонд нухацтай оруулах ёстой. Гэхдээ сайн мэдээ бол баскомын нийгэмлэг маш том тул санаа бүрийн шийдэл байдаг.

Тиймээс энэ нь хөгжүүлэлтийн орчинд ашиглаж буй төсөл, нөгөө талаас програмист хүний мэдлэгээс хамаарна.

гэхдээ яагаад би энэ цувралыг хийж байгаа юм. нэг талаас маш их мөнгө хэмнэдэг. Төсөл болгонд би arduino самбар худалдаж авах шаардлагагүй. Жишээлбэл: Arduino uno noname нь ойролцоогоор 12 еврогийн үнэтэй бөгөөд хянагч нь ердөө 2.5 еврогийн үнэтэй бөгөөд тогтвортой үйл ажиллагаанд шаардагдах хамгийн бага хэлхээний хувьд 4 еврогийн үнэтэй байдаг. Нөгөө талаар танд дэмжигдсэн avr чипсийн бүрэн сонголт байна. atmegas 8 -аас 256 хүртэл, attiny 8 -аас 2313 хүртэл, надад туршлагагүй олон xmega төрөл. Хэрэв та зүгээр л гараа таних чадвартай servo болон хэт авианы мэдрэгч ашиглахыг хүсч, дараа нь хогийн савны тагийг онгойлгохыг хүсч байвал хамгийн жижиг чипийг ашиглаж болно. Тиймээс хоёр дахь хэл сурах олон шалтгаан бий.

Тиймээс эхэлцгээе

Хангамж

Энэ бол чипийг тогтвортой ажиллуулах, програмчлахад шаардлагатай хамгийн бага хэсгүүдийн жагсаалт юм.

Туршилтын талхны самбар

Atmega 8-16PU (хэрэв та санаандгүй алсан бол 2 эсвэл 3 худалдаж авсан нь дээр)

7805 5V хүчдэлийн зохицуулагч

10 кох эсэргүүцэл

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

10μF электролитийн конденсатор

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

талхны хавтангийн зарим утас

Windows PC 7/8/8.1/10

ISP програмист (би энд USBasp ашиглах болно, та үүнийг Amazon дээр бага мөнгөөр худалдаж авч болно)

Bascom AVR (та эндээс DEMO татаж авах боломжтой. Бүх функцуудыг онгойлгосон боловч та маш олон кодонд хангалттай 4Kb хэмжээтэй код бичих боломжтой).

Нэмэлт хэсгүүд:

LED нь резистортой

түлхэх түлхүүрүүд

төслийн тусгай хэсгүүд

Алхам 1: Bascom болон тохиргоог суулгах

Bascom ба Setup -ийг суулгах
Bascom ба Setup -ийг суулгах
Bascom ба Setup -ийг суулгах
Bascom ба Setup -ийг суулгах
Bascom ба Setup -ийг суулгах
Bascom ба Setup -ийг суулгах

Файлыг татаж аваад Bascom AVR -ийг суулгана уу. Суулгасны дараа хамгийн сүүлийн хайрцгийг оруулаад бүх хэсгийг нь суулгаарай.

Үүний дараа компьютераа дахин ачаална уу, тэгэхгүй бол bascom ажиллахгүй болно.

Дахин ачаалсны дараа bascom -ийг эхлүүлнэ үү.

Options -> Programmer руу ороод жагсаалтаас USBasp -ийг сонгоод тохиргоог хадгалаад Bascom -ийг хаагаарай.

Usbasp суулгахын тулд энэ програмыг ашиглана уу. Үүний дараа компьютераа дахин ачаална уу. USBasp -ийг компьютер дээрээ холбоод төхөөрөмжийн менежерийг ажиллуулна уу. USBasp нь libusb төхөөрөмжүүд дээр гарч ирэх ёстой.

Стат Баскомыг дахин ажиллуулаад шинэ файл үүсгэнэ үү. Үүнийг компьютер дээрээ хадгалаад гар дээрх F7 товчлуурыг дарна уу.

Хөрвүүлэгч нь хоосон програмыг эхлүүлж хөрвүүлдэг. Одоо та програмистын ажиллагааг шалгаж болно.

Программистын цонхыг эхлүүлэхийн тулд гар дээрх F4 товчийг дарна уу. Одоо харилцан яриа эхлүүлэхийн тулд chip -> тодорхойлох хэсэгт очно уу. 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 нь олон хүний суудалтай ерөнхий зориулалтын оролтын гаралт юм.

Дахин тохируулах пин гэдэг нь нэрийг хэлдэг. Чипийг дахин эхлүүлэхийн тулд. Дахин тохируулах нэр дээрх мөр нь татгалзах гэсэн утгатай. Энэ нь чипийг дахин тохируулахын тулд та үүнийг 0V хүртэл татах ёстой гэсэн үг юм.

Дараахь голуудын хувьд тусдаа зааварчилгаа удахгүй ирнэ.

RXD TXD бол UART цуваа холбооны тоног төхөөрөмжийн зүү юм.

INT0 INT1 нь тоног төхөөрөмжийн тасалдал юм

XCK /T0 UART Цагийн эх сурвалж /Таймер /Тоолуур0 Цагны эх үүсвэр

XTAL /TOSC тээглүүр нь 16 МГц хүртэлх гадаад болор (20 МГц хүртэлх өөр өөр загвар) /Дотоод RTC -ийн болор зүү юм.

T1 нь T0 -той төстэй

AIN тээглүүр нь аналог харьцуулагчид зориулагдсан болно

ICP1 нь T0/T1 -тэй төстэй

OC1A бол pwm timer1 сувгийн A тоног төхөөрөмжийн гаралтын зүү юм

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: Эхний тойрог

Эхний тойрог
Эхний тойрог
Эхний тойрог
Эхний тойрог

Одоо таны анхны хэлхээг бий болгох цаг боллоо.

Эхний хэлхээ нь ихэвчлэн юу вэ? Зөв! LED анивчъя.

LED нь PB0 -тэй холбогддог. Чипийн дэргэдэх резистор нь 10 к Ом байна.

LED -ийн дэргэдэх эсэргүүцэл нь 470 Ом байна.

Одоо та USBasp -ийг зураг дээр үзүүлсэн шиг Atmega -тай холбож болно.

Гэхдээ та асаахаасаа өмнө програмаа бичээрэй.

Алхам 4: Эхний програмыг бичнэ үү

Эхний програмыг бичнэ үү
Эхний програмыг бичнэ үү

Bascom дээр шинэ файл үүсгээд дараагийн текстийг бичнэ үү.

$ regfile "m8def.dat"

$ Crystal = 1000000 config portb.0 = portb.0 = 1 гаралт 1 portb.0 = 0 хүлээх 1 давталт

Үүний дараа гар дээрээ F7 дарж үүнийг эмхэтгээрэй.

Одоо бид чипийг F4 дарж програмчилж болно. Программистын цонх гарч ирнэ. Одоо талхны самбараас тэжээл асаах цаг болжээ. Та 6-12 вольтын хооронд ямар нэгэн зүйл түрхэх хэрэгтэй.

Одоо chip -> autoprogram руу очно уу. Хэрэв програмистын цонх автоматаар хаагдах юм бол програмчлал амжилттай болсон.

LED нь нэг секундын давтамжтайгаар анивчих ёстой.

Одоо синтаксийг ойлгохын тулд програмыг нарийвчлан авч үзье.

$ regfile "m8def.dat"

$ болор = 1000000

$ regfile ашиглан бид хөрвүүлэгчид ашигласан чипийн төрлийг Arduino чипийн нэрийг "m328pdef.dat" гэж хэлдэг.

$ crystal ашиглан бид түүнд 1MHz cpu хурдыг хэлдэг.

config portb.0 = Гаралт

Энэ нь PB0 нь гаралтын үүргийг гүйцэтгэх ёстой гэсэн үг юм.

Дашрамд дурдахад PB0 товчлол нь В порт бит 0 гэсэн утгатай. Чип нь хэд хэдэн портод хуваагддаг. Боомт бүрийг тодорхой тодорхойлохын тулд захидал өгдөг. ба портпин бүр 0 -ээс 7 хүртэл жаахан. Жишээлбэл, би портын гаралтын бүртгэлд бүрэн байт бичиж өгч болох бөгөөд энэ нь тус тусдаа порт тээглүүрээр гарах болно.

хийх

гогцоо

Энэ бол Arduino -д void loop мэдэгдэл гэсэн үг юм. Энэ хоёр тушаалын хоорондох бүх зүйл үүрд давтагдах болно. (зарим үл хамаарах зүйлийг эс тооцвол сүүлд нь энэ талаар дэлгэрэнгүй)

Портб.0 = 1

хүлээх 1 порт.0 = 0 хүлээх 1

Энд бид LED -ийн анивчсан байдлыг анзаарч байна.

Portb.0 = 1 нь чипийг PB0 гаралтыг 5V болгон өөрчлөхийг хэлдэг

хүлээх 1 команд нь чипийг нэг секунд хүлээх боломжийг олгодог. Хэрэв та гэрлийг илүү хурдан солихыг хүсч байвал хүлээх тушаалыг хүлээлтийн системээр солих хэрэгтэй, та хэдэн цагийг миллисекундээр оруулах боломжтой. waitms 500. (waitus гэдэг нь наносекундээр хүлээхийг хэлнэ)

Portb.0 = 0 нь чипийг PB0 гаралтыг 0V болгон өөрчлөхийг хэлдэг.

Алхам 5: Оролтыг ашиглах товчлуурыг нэмнэ үү

Оролтыг ашиглахын тулд товчлуур нэмнэ үү
Оролтыг ашиглахын тулд товчлуур нэмнэ үү

Одоо бид товчлуур дарагдсан бол LED -ийг асаах товчлуур нэмж оруулав.

Зураг дээр үзүүлсэн шиг товчлуурыг оруулна уу.

одоо дараах програмыг бичнэ үү.

$ regfile "m8def.dat"

$ crystal = 1000000 config portb.0 = гаралтын тохиргооны portd.7 = оролт Portd.7 = 1 бол pind.7 = 0 бол portb.0 = 1 өөр portb.0 = 0 гогцоо

Хэрэв та энэ програмыг чип дээр байршуулах юм бол товчлуур дарахад л гэрэл асдаг. Гэхдээ яагаад?

Хөтөлбөр нь өмнөх програмтай ижил хугацаанд эхэлнэ

config portd.7 = оролт. Энэ нь товчлууртай холбогдсон PD7 зүү оролтын үүрэг гүйцэтгэдэг гэсэн үг юм.

Portd.7 = 1 нь зүүг өндөрт шилжүүлдэггүй боловч Атмега -ийн дотоод татах эсэргүүцлийг идэвхжүүлдэг.

Хэрэв та arduino -д дассан бол if statemend арай л аймшигтай харагдаж байна.

хэрэв if if -ийг ашиглавал "then" гэсэн тушаалыг ашиглах ёстой. Энэ жишээнд if командыг ганц тушаалын үйлдэлд ашигладаг. Хэрэв та илүү олон тушаалыг ашиглахыг хүсч байвал үүнийг ингэж бичих хэрэгтэй.

Хэрэв pind.7 = 0 бол

portb.0 = 1 зарим код зарим код зарим код өөр portb.0 = 0 бол төгсгөл

if -ийг ашиглахын тулд та төгсгөлд нь "if if" хэллэгийг ашиглах ёстой.

юу чухал хэвээр байна. Магадгүй та үүнийг аль хэдийн харсан байх. оролтыг portx.x -ээр биш харин pinx.x -ээр асуудаг. Та үүнийг амархан санаж чадна. Гаралт нь үгэнд "o" (порт), оролтод "i" (зүү) байна.

Одоо таны эргэн тойронд жаахан тоглох ээлж боллоо.

Миний дараагийн зааварчилгаа удахгүй ирэх болно (while, case, for, хувьсагч гэх мэт стандарт мэдэгдэл).

Хэрэв танд миний зааварчилгаа таалагдаж, илүү ихийг хүсч байвал коммент хэсэгт хэлээрэй.

Зөвлөмж болгож буй: