Гэр / Аватар / Програм хангамж mk. Мини компьютерийг анивчуулах үйл явц. MK програм хангамжийн тоног төхөөрөмж

Програм хангамж mk. Мини компьютерийг анивчуулах үйл явц. MK програм хангамжийн тоног төхөөрөмж

2015 оны арванхоёрдугаар сар

1. Санал болгож буй аргын давуу тал

Микроконтроллер (MC) дээр суурилсан төхөөрөмжийн хэлхээ нь ихэвчлэн хослуулахад хэцүү хоёр чанарын хослолоор ялгагдана: хамгийн энгийн, өндөр ажиллагаатай. Нэмж дурдахад, уг функцийг хэлхээнд ямар ч өөрчлөлт оруулахгүйгээр ирээдүйд өөрчилж, өргөжүүлэх боломжтой - програмыг солих замаар (анивчсан). Эдгээр боломжуудыг орчин үеийн микроконтроллер бүтээгчид цахим төхөөрөмж үйлдвэрлэгчдэд шаардлагатай бүх зүйлийг аль болох нэг чип дээр байрлуулахыг оролдсонтой холбон тайлбарлаж байна. Үүний үр дүнд хэлхээ, угсралтаас программ хангамж руу анхаарлаа хандуулсан. MK-ийг ашигласнаар хэлхээг нарийн ширийн зүйлээр "ачаалах" шаардлагагүй болж, бүрэлдэхүүн хэсгүүдийн хоорондын холболт багассан. Энэ нь мэдээжийн хэрэг туршлагатай болон шинэхэн электроникийн инженерүүдийн хувьд хэлхээг давтахад илүү сонирхолтой болгодог. Гэхдээ ердийнх шигээ бүх зүйлийг төлөх ёстой. Энд ч бас хүндрэлтэй байсангүй. Хэрэв та шинэ MK худалдаж авбал үүнийг засвар үйлчилгээ хийх боломжтой хэсгүүдээс зөв угсарсан хэлхээнд суулгаж, хүчийг ашиглавал юу ч ажиллахгүй - төхөөрөмж ажиллахгүй. Микроконтроллерт програм хэрэгтэй.

Үүнтэй хамт бүх зүйл энгийн мэт санагдаж байна - Интернет дээр та үнэгүй програм хангамж бүхий олон схемүүдийг олох боломжтой. Гэхдээ энд нэг бэрхшээл бий: програм хангамжийг микроконтроллерт ямар нэгэн байдлаар "дүүргэх" ёстой. Өмнө нь хэзээ ч ийм зүйл хийж байгаагүй хүний ​​хувьд ийм даалгавар нь ихэвчлэн асуудал болж, гол зэвүүн хүчин зүйл болж, MK ашиглах сэтгэл татам байдлаа орхиж, "сул", хатуу логик дээр суурилсан схемүүдийг хайж олоход хүргэдэг. Гэхдээ бүх зүйл эхлээд харахад тийм ч хэцүү биш юм.

Интернет дэх нийтлэлд дүн шинжилгээ хийсний дараа энэ асуудлыг ихэвчлэн хоёр аргын аль нэгээр шийддэг болохыг харж болно: бэлэн програмист худалдаж авах эсвэл гар хийцийн програм хийх. Үүний зэрэгцээ, гэртээ хийсэн програмистуудын хэвлэгдсэн схемүүд нь ихэвчлэн үндэслэлгүй нарийн төвөгтэй байдаг - үнэхээр шаардлагатай байснаас хамаагүй илүү төвөгтэй байдаг. Мэдээжийн хэрэг, хэрэв MK-г өдөр бүр анивчуулж байх ёстой бол "сайн" програмисттай байх нь дээр. Гэхдээ ийм процедурын хэрэгцээ хааяа, үе үе гарч ирдэг бол та ерөнхийдөө програмистгүйгээр хийж болно. Үгүй ээ, мэдээжийн хэрэг, бодлын хүчээр үүнийг хийж сурах тухай биш юм. Энэ нь програмчлалын горимд мэдээлэл бичих, унших үед программист микроконтроллертэй хэрхэн харьцдагийг ойлгосноор бид бэлэн хэрэглүүрүүдийг илүү өргөн хүрээнд ашиглаж чадна гэсэн үг юм. Эдгээр хэрэгслүүд нь программистын програм хангамж, техник хангамжийг хоёуланг нь солих шаардлагатай болно. Техник хангамжийн хэсэг нь MK чиптэй физик холболт, логик түвшинг оролтод нийлүүлэх, гаралтаас өгөгдлийг унших чадварыг хангах ёстой. Програм хангамжийн хэсэг нь шаардлагатай бүх үйл явцыг хянадаг алгоритмын ажиллагааг хангах ёстой. MK-д мэдээлэл бичих чанар нь таны программист хэр "хүйтэн" байгаагаас хамаардаггүй гэдгийг бид бас тэмдэглэж байна. "Илүү сайн", "муу" гэсэн ойлголт байдаггүй. "Бүртгүүлсэн" болон "бүртгээгүй" гэсэн хоёр л сонголт бий. Энэ нь болор доторх бичлэгийн процессыг MC өөрөө хянадагтай холбоотой юм. Үүнийг зөвхөн өндөр чанартай эрчим хүчээр хангах (ямар ч хөндлөнгийн оролцоо, долгион байхгүй), интерфэйсийг зөв зохион байгуулах шаардлагатай. Хэрэв хяналтын уншилтын үр дүнгээс харахад алдаа илрээгүй бол бүх зүйл эмх цэгцтэй байна - та хянагчийг зориулалтын дагуу ашиглаж болно.

Программистгүйгээр MK-д програм бичихийн тулд бидэнд USB-RS232TTL порт хувиргагч хэрэгтэй. USB-RS232TTL хөрвүүлэгч нь USB порт ашиглан COM порт үүсгэх боломжийг олгодог бөгөөд энэ нь "жинхэнэ" портоос ялгаатай нь зөвхөн TTL логик түвшинг оролт, гаралтад ашигладаг, өөрөөр хэлбэл 0-ээс хүчдэлтэй байдаг. 5 вольт (дэлгэрэнгүй мэдээллийг "" нийтлэлээс үзнэ үү). Ямар ч тохиолдолд "айл"-д ийм хөрвүүлэгч байх нь ашигтай байдаг тул хэрэв танд байхгүй бол та үүнийг худалдаж авах хэрэгтэй. Логик түвшний хувьд манай тохиолдолд TTL нь ердийн COM портоос ч давуу талтай, учир нь ийм портын оролт, гаралт нь ATtiny, ATmega зэрэг 5 В-оор тэжээгддэг ямар ч микроконтроллерт шууд холбогдож болно. Гэхдээ ердийн COM порт ашиглахыг бүү оролдоорой - тэнд -12-аас +12 В (эсвэл -15 ... + 15V) хүртэлх хүчдэлийг ашигладаг. Энэ тохиолдолд микроконтроллер руу шууд холболт хийх нь хүлээн зөвшөөрөгдөхгүй !!!

Програмистын чиг үүргийг хэрэгжүүлдэг "Perpetuum M" програмын скриптийг бий болгох санаа нь MK програм хангамжийн тодорхой шийдлүүдийг санал болгодог Интернет дэх хэд хэдэн нийтлэлийг уншсаны дараа үүссэн. Тухайн тохиолдол бүрт ноцтой дутагдал эсвэл хэт нарийн төвөгтэй байдал илэрсэн. Бид микроконтроллер агуулсан программист хэлхээнүүдтэй байнга тааралддаг байсан бөгөөд үүний зэрэгцээ "... мөн энэ програмист микроконтроллерийг програмчлахын тулд бидэнд ... энэ нь зөв - өөр програмист хэрэгтэй!" . Цаашилбал, найздаа очих, төлбөртэй үйлчилгээ хайх гэх мэтийг санал болгов. Эдгээр зорилгоор сүлжээнд тараасан програм хангамжийн чанар нь тийм ч гайхалтай биш байсан - функциональ байдал, хэрэглэгчийн интерфейсийн "булингар" зэрэг олон асуудал ажиглагдсан. Хөтөлбөрийг хэрхэн ашиглахыг ойлгоход ихэвчлэн маш их цаг хугацаа шаардагддаг - хамгийн энгийн үйлдлүүдийг гүйцэтгэхийн тулд үүнийг сурах хэрэгтэй. Өөр нэг програм нь ямар нэг зүйлийг удаан хугацаанд, хичээнгүйлэн хийж чадна, гэхдээ програм хангамжийг бүхэлд нь хийж, дараагийн хяналтын уншилтыг хийж дууссаны дараа хэрэглэгч MK-д юу ч бичээгүй гэдгийг мэдэх болно. Ийм асуудал бас бий: хэрэглэгч өөрийн MK-г дэмжигдсэн талстуудын жагсаалтаас сонгохыг оролддог боловч энэ нь жагсаалтад байхгүй байна. Энэ тохиолдолд програмыг ашиглах боломжгүй болно - дүрмээр бол алга болсон MK-ийн жагсаалтад оруулахгүй. Нэмж дурдахад, программист олон тохиолдолд MK-ийн төрлийг өөрөө тодорхойлж чаддаг тул жагсаалтаас хянагчийг гараар сонгох нь хачирхалтай харагдаж байна. Энэ бүгдийг одоо байгаа бүтээгдэхүүн рүү шавар асгах зорилгоор биш, харин энэ нийтлэлд тайлбарласан "Perpetuum M" нэвтрүүлгийн скрипт гарч ирэх шалтгааныг тайлбарлах зорилгоор хэлсэн болно. Асуудал үнэхээр байгаа бөгөөд энэ нь юуны түрүүнд микроконтроллеруудын ертөнцөд анхны алхамаа хийхдээ энэхүү "хана" -ыг даван туулж чаддаггүй эхлэгчдэд хамаатай юм. Санал болгож буй скрипт нь бусад хөтөлбөрүүдээс олдсон дутагдлуудыг харгалзан үздэг. Алгоритмын хамгийн дээд "ил тод байдал" хэрэгжсэн бөгөөд энэ нь судалгаа шаарддаггүй, төөрөлдөх, "буруу газар дарах" боломжийг үлдээдэггүй маш энгийн хэрэглэгчийн интерфэйс юм. Дэмжигдсэн хүмүүсийн дунд шаардлагатай MK байхгүй тохиолдолд MK хөгжүүлэгчийн вэбсайтаас татаж авсан баримт бичгээс шаардлагатай өгөгдлийг авч, түүний тайлбарыг өөрөө нэмж оруулах боломжтой. Хамгийн гол нь скриптийг судлах, өөрчлөхөд нээлттэй. Хэн ч үүнийг текст засварлагч дээр нээж, өөрийн үзэмжээр судалж, засварлаж, одоо байгаа функцийг өөрийн үзэмжээр өөрчилж, дутуу функцийг нэмж болно.

Зохиолын анхны хувилбарыг 2015 оны зургадугаар сард бүтээжээ. Энэ хувилбар нь зөвхөн Atmel-ийн ATtiny болон ATmega MCU-г дэмждэг, флаш санах ой бичих/унших функцтэй, тохиргооны битүүдийг тохируулсан, хянагчийн төрлийг автоматаар илрүүлдэг. EEPROM бичих, унших боломжгүй. Скриптийн функцийг нэмж оруулахаар төлөвлөж байсан: бичих нэмэх, EEPROM унших , PIC хянагчдад зориулсан дэмжлэгийг хэрэгжүүлэх гэх мэт. Энэ шалтгааны улмаас скрипт хараахан хэвлэгдээгүй байна.Гэвч цаг хугацаа дутагдсанаас төлөвлөгөөний хэрэгжилт удааширч, шилдэг нь сайн сайхны дайсан болохгүй, одоо байгаа хувилбарыг нийтлэхээр шийдсэн. хэрэгжсэн функцууд хангалтгүй байх болно, битгий бухимдаарай. Энэ тохиолдолд та хүссэн функцээ өөрөө нэмж оруулахыг оролдож болно. Би үүнийг нуухгүй: Энэхүү скриптийг бүтээх нь эхлээд боловсролын ач холбогдолтой юм.Алгоритмыг ойлгож, түүнд өөрийн гэсэн зүйлийг нэмснээр та MK-ийн програмчлалын горимыг илүү сайн ойлгох боломжтой бөгөөд ингэснээр ирээдүйд та програмчлалд орохгүй байх болно. давхаргын урд талын охины байрлал хөдөлж буй машин, дотроос нь эргэцүүлэн харж, яагаад "явдаггүйг" ойлгохгүй байна.

2. Програмчлалын горим дахь MK интерфейс

Хянагчийг програмчлалын горимд оруулах, энэ горимд ажиллах хэд хэдэн янзын арга байдаг. ATtiny болон ATmega цуврал хянагчдад хэрэгжүүлэхэд хамгийн хялбар нь SPI байж магадгүй юм. Бид тэдгээрийг ашиглах болно.

Гэхдээ SPI үүсгэхэд шаардлагатай дохиог авч үзэхээсээ өмнө бид хэд хэдэн тайлбар хийх болно. Микроконтроллер нь тохиргооны биттэй. Энэ нь шилжүүлэгчтэй адил зүйл бөгөөд сэлгэн залгах нь төслийн хэрэгцээнд нийцүүлэн микро схемийн зарим шинж чанарыг өөрчлөх боломжийг олгодог. Бие махбодийн хувьд эдгээр нь програм бичигдсэн эсүүд шиг тогтворгүй санах ойн эсүүд юм. Үүний ялгаа нь маш цөөхөн байдаг (ATmega-д гурван байт хүртэл) бөгөөд тэдгээр нь ямар ч санах ойн хаягийн зайд ороогүй болно. Тохиргооны өгөгдлийг бичих, унших нь MK програмчлалын горимын тусдаа командуудаар хийгддэг. Зарим тохиргооны битүүд нь SPI ашиглах чадварт нөлөөлдөг гэдгийг анхаарах нь чухал юм. Тэдгээрийн зарим утгуудын хувьд SPI-г ашиглах боломжгүй болж магадгүй юм. Хэрэв та ийм микроконтроллертой тааралдвал энэ нийтлэлд санал болгож буй арга нь тус болохгүй. Энэ тохиолдолд та өөр програмчлалын горимыг дэмждэг программист дахь тохиргооны битүүдийн тохиргоог өөрчлөх эсвэл өөр микроконтроллер ашиглах шаардлагатай болно. Гэхдээ энэ асуудал нь зөвхөн ашигласан MK эсвэл хэн нэгэн амжилтгүй "тоглож" байсан хүмүүст л хамаатай. Баримт нь шинэ MK-ууд нь SPI ашиглахаас сэргийлдэггүй тохиргооны битийн тохиргоотой ирдэг. Үүнийг дөрвөн өөр MK (ATmega8, ATmega128, ATtiny13, ATtiny44) амжилттай хийсэн "Perpetuum M" програмын програмист скриптийн туршилтын үр дүн нотолж байна. Тэд бүгд шинэ байсан. Тохиргооны битүүдийн анхны тохиргоо нь баримт бичигтэй нийцэж байсан бөгөөд SPI ашиглахад саад болоогүй.

Дээр дурдсан зүйлсийг харгалзан та дараах битүүдэд анхаарлаа хандуулах хэрэгтэй. SPIEN бит нь SPI-г ашиглахыг тодорхой идэвхжүүлдэг эсвэл идэвхгүй болгодог тул манай тохиолдолд түүний утга зөвшөөрөгдөх ёстой. RSTDISBL бит нь микро схемийн гаралтын аль нэгийг (урьдчилан тодорхойлсон) "дахин тохируулах" дохионы оролт болгон хувиргах эсвэл эргүүлэхгүй байх боломжтой (энэ бит дээр бичигдсэн утгаас хамаарч). Манай тохиолдолд "дахин тохируулах" оролт шаардлагатай (хэрэв байхгүй бол MK-г SPI-ээр програмчлалын горимд шилжүүлэх боломжгүй болно). Мөн CKSEL бүлгийн битүүд байдаг бөгөөд энэ нь цагны дохионы эх үүсвэрийг тодорхойлдог. Эдгээр нь SPI-г ашиглахад саад болохгүй, гэхдээ тэдгээрийг бас анхаарч үзэх хэрэгтэй, учир нь хэрэв цагны импульс байхгүй эсвэл тэдгээрийн давтамж нь өгөгдсөн SPI хурдны зөвшөөрөгдөх хэмжээнээс доогуур байвал сайн зүйл гарахгүй. Ихэвчлэн дотоод RC осциллятортой шинэ MCU-д CKSEL бүлгийн битүүд үүнийг ашиглахаар тохируулагдсан байдаг. Бид үүнд сэтгэл хангалуун байна - цагийг манай талаас нэмэлт хүчин чармайлтгүйгээр хийдэг. Та кварцын резонаторыг гагнах шаардлагагүй, мөн гадаад генераторыг холбох шаардлагагүй. Хэрэв заасан битүүд өөр тохиргоог агуулж байгаа бол та тохиргооны дагуу цагийг тохируулах хэрэгтэй болно. Энэ тохиолдолд кварцын резонатор эсвэл гадаад цагийн генераторыг MK-д холбох шаардлагатай байж болно. Гэхдээ энэ нийтлэлийн хүрээнд бид үүнийг хэрхэн яаж хийхийг авч үзэхгүй. Энэ нийтлэлд багтсан програмчлалын MK-г холбох жишээнүүд нь хамгийн энгийн тохиолдолд зориулагдсан болно.

Цагаан будаа. 1. Програмчлалын горимд SPI холбоо

Одоо MK ATmega128A-ийн баримт бичгээс авсан 1-р зураг руу шилжье. Энэ нь MCU-д нэг байт илгээж, MCU-аас нэг байт хүлээн авах үйл явцыг харуулдаг. Эдгээр хоёр процесс нь бидний харж байгаагаар программистаас микроконтроллер руу SCK оролт дээр ирж буй ижил цагийн импульсийг ашигладаг - энэ үүргийг SPI програмчлалын горимд хуваарилдаг микро схемийн голуудын нэг юм. Хоёр дохионы шугам нь цаг тутамд нэг битийн өгөгдөл хүлээн авах, дамжуулах боломжийг олгодог. MOSI оролтоор дамжуулан өгөгдөл нь микроконтроллер руу орж, уншсан өгөгдлийг MISO гаралтаас авдаг. SCK-аас MISO болон MOSI руу зурсан хоёр тасархай шугамыг анхаарна уу. Эдгээр нь микроконтроллер нь MOSI оролт дээрх өгөгдлийн битийг ямар агшинд "залгиж", MISO гаралт дээр өөрийн өгөгдлийн битийг ямар үед тохируулж байгааг харуулдаг. Бүх зүйл маш энгийн. Гэхдээ MK-г програмчлалын горимд оруулахын тулд бидэнд RESET дохио хэрэгтэй хэвээр байна. Нийтлэг GND утас болон VCC тэжээлийн хангамжийн талаар бас мартаж болохгүй. Нийтдээ SPI-ээр дамжуулж анивчуулахын тулд микроконтроллерт ердөө 6 утас холбох шаардлагатай болж байна. Доор бид үүнийг илүү нарийвчлан шинжлэх болно, гэхдээ одоо бид SPI-ээр програмчлалын горимд MK-тай өгөгдөл солилцох нь 4 байт пакетуудад хийгддэг гэдгийг нэмж оруулах болно. Пакет бүрийн эхний байт нь үндсэндээ командыг кодлоход зориулагдсан байдаг. Хоёрдахь байт нь эхнийхээс хамааран командын кодын үргэлжлэл эсвэл хаягийн хэсэг байж болно, эсвэл дурын утгатай байж болно. Гурав дахь байт нь ихэвчлэн хаяг дамжуулахад ашиглагддаг боловч олон командуудад дурын утгатай байж болно. Дөрөв дэх байт нь ихэвчлэн өгөгдөл агуулдаг эсвэл дурын утгатай байдаг. Дөрөв дэх байтыг шилжүүлэхтэй зэрэгцэн зарим командууд MK-ээс ирсэн өгөгдлийг хүлээн авдаг. Заавар тус бүрийн дэлгэрэнгүй мэдээллийг "SPI цуврал програмчлалын зааврын багц" гэсэн хүснэгтэд байгаа хянагчийн баримт бичгээс олж болно. Одоохондоо бид хянагчтай бүхэл бүтэн солилцоо нь 32 битийн багцуудын дарааллаар бүтээгдсэн бөгөөд тус бүр нь нэг байтаас илүүгүй ашигтай мэдээллийг дамжуулдаггүй гэдгийг бид анхаарч байна. Энэ нь тийм ч оновчтой биш боловч ерөнхийдөө сайн ажилладаг.

3. Програмчлалд зориулж MK-г холбох

SPI интерфэйсийг зохион байгуулах, түүний MISO гаралтаас өгөгдлийг уншихад шаардлагатай бүх дохиог микроконтроллерийн оролтуудад нийлүүлэхийн тулд програмист үүсгэх шаардлагагүй. Үүнийг хамгийн түгээмэл USB-RS232TTL хөрвүүлэгчийн тусламжтайгаар хийхэд хялбар байдаг.

Интернет дээр та ийм хөрвүүлэгч нь муу, тэдэнтэй ямар ч ноцтой зүйл хийх боломжгүй гэсэн мэдээллийг олж авах боломжтой. Гэхдээ ихэнх хөрвүүлэгч загваруудын хувьд энэ санал алдаатай байдаг. Тиймээ, стандарт COM порттой харьцуулахад бүх оролт, гаралт байхгүй (жишээ нь зөвхөн TXD ба RXD), салгах боломжгүй загвартай (микро схем нь хуванцараар дүүргэгдсэн байдаг) хөрвүүлэгчид зарагдах боломжтой. дүгнэлтэд хүрэх боломжгүй). Гэхдээ эдгээрийг худалдаж авах нь үнэ цэнэтэй зүйл биш юм. Зарим тохиолдолд утсыг микро схемд шууд гагнах замаар портын дутуу оролт, гаралтыг авах боломжтой. Ийм "сайжруулсан" хөрвүүлэгчийн жишээг 2-р зурагт үзүүлэв (PL-2303 микро схем - түүний тээглүүрүүдийн зорилгын талаар "" нийтлэлээс дэлгэрэнгүй). Энэ нь хамгийн хямд загваруудын нэг боловч гар хийцийн загварт ашиглахад өөрийн гэсэн давуу талтай байдаг. COM порт шиг төгсгөлд нь стандарт есөн зүү холбогчтой, бүрэн ажиллагаатай адаптерийн утаснууд бас өргөн тархсан. Эдгээр нь ердийн COM портоос зөвхөн TTL түвшин, хуучирсан програм хангамж, зарим хуучин техник хангамжтай нийцэхгүй байгаагаараа ялгаатай. Төрөл бүрийн туршилтаар CH34x чип дээр суурилсан утаснууд нь PL-2303 дээр суурилсан хөрвүүлэгчтэй харьцуулахад илүү найдвартай, тогтвортой болохыг харуулж байна. Гэсэн хэдий ч ердийн хэрэглээнд ялгаа нь мэдэгдэхүйц биш юм.

USB-RS232TTL хөрвүүлэгчийг сонгохдоо түүний драйвер нь ашигласан үйлдлийн системийн хувилбартай нийцэж байгаа эсэхийг анхаарч үзэх хэрэгтэй.

ATtiny13, ATtiny44, ATmega8, ATmega128 гэсэн дөрвөн өөр MK загварын жишээн дээр микроконтроллер ба USB-RS232TTL хөрвүүлэгчийг холбох зарчмыг илүү нарийвчлан авч үзье. Ийм холболтын ерөнхий схемийг 3-р зурагт үзүүлэв. RS232 дохиог (RTS, TXD, DTR болон CTS) буруугаар ашигласан нь таныг гайхшруулж магадгүй юм. Гэхдээ үүнд санаа зовох хэрэггүй: Perpetuum M програм нь тэдэнтэй шууд ажиллах боломжтой - гаралтын утгыг тохируулж, оролтын төлөвийг унших боломжтой. Ямар ч тохиолдолд CH34x ба PL-2303 чип дээр суурилсан өргөн хэрэглэгддэг USB-RS232TTL хөрвүүлэгчид ийм боломжийг олгодог - үүнийг баталгаажуулсан. Порт руу нэвтрэхийн тулд Windows-ийн стандарт функцуудыг ашигладаг тул бусад алдартай хөрвүүлэгчид ч асуудал байх ёсгүй.

Ерөнхий диаграммд үзүүлсэн резисторуудыг зарчмын хувьд суулгах боломжгүй, гэхдээ суулгах нь дээр. Тэдний зорилго юу вэ? Хөрвүүлэгчийн TTL "оролт, гаралт, микроконтроллерийн таван вольтын тэжээлийн хангамжийг ашигласнаар бид логик түвшинг тохируулах хэрэгцээ шаардлагаас ангижрах болно - ямар ч байсан бүх зүйл зөв байна. Энэ нь холболтууд шууд байж болно гэсэн үг юм. Гэхдээ Туршилтын үед юу ч тохиолдож болно.Жишээлбэл, доромжлолын хуулиар бол халив зүгээр л унах боломжгүй газартаа унаж, ямар ч тохиолдолд хаагдах ёсгүй зүйлийг хааж болно.Мэдээж юу ч эргэж болно. гарч "халив. Энэ тохиолдолд резистор нь заримдаа үр дагаврыг бууруулдаг. Тэдний нэг зорилго нь гаралтын болзошгүй зөрчлийг арилгах явдал юм. Програмчлалын төгсгөлд микроконтроллер хэвийн ажиллагаанд ордог бөгөөд энэ нь тохиолдож магадгүй юм. хувиргагчийн гаралттай холбогдсон түүний гаралт (RTS, TXD эсвэл DTR) нь мөн л MK программд бичигдсэн дагуу гаралт болж хувирдаг. Энэ тохиолдолд шууд холбогдсон хоёр гаралт "тэмцэх" бол маш муу байх болно - оролдоод үзээрэй. байрлуулах янз бүрийн логик түвшин. Ийм "тэмцэл" -д хэн нэгэн "ялагдаж" болно, гэхдээ бидэнд энэ хэрэггүй.

Гурван резисторын утгыг 4.3 кОм-ийн түвшинд сонгоно. Энэ нь хөрвүүлэгчийн гаралт ба микроконтроллерийн оролтын хоорондох холболтод хамаарна. Резисторын нарийвчлал нь үүрэг гүйцэтгэдэггүй: та тэдгээрийн эсэргүүцлийг 1 КОм хүртэл бууруулж эсвэл 10 КОм хүртэл нэмэгдүүлэх боломжтой (гэхдээ хоёр дахь тохиолдолд MC руу явах замд урт утас ашиглах үед хөндлөнгийн нөлөөллийн эрсдэл нэмэгддэг). Хөрвүүлэгчийн оролт (CTS) ба микроконтроллерийн гаралт (MISO) хоорондын холболтын хувьд энд 100 Ом эсэргүүцэл ашигладаг. Энэ нь ашигласан хөрвүүлэгчийн оролтын онцлогтой холбоотой юм. Туршилтын үеэр хөрвүүлэгчийг PL-2303 чип дээр ашигласан бөгөөд түүний оролтууд нь харьцангуй бага эсэргүүцэлтэй (хэдэн зуун Ом дарааллаар) хүч хүртэл татагдсан бололтой. "Татах алах" тулд би ийм бага эсэргүүцэлтэй резистор тавих хэрэгтэй болсон. Гэсэн хэдий ч та үүнийг огт тавьж чадахгүй. Хөрвүүлэгч дээр энэ нь үргэлж оролт юм. Энэ нь гарц болж чадахгүй бөгөөд энэ нь аливаа үйл явдлын хөгжилд гарцын зөрчил гарахгүй гэсэн үг юм.

Хэрэв IC нь A/D хөрвүүлэгчийг тэжээхэд зориулагдсан тусдаа AVCC зүүтэй бол (ATmega8 эсвэл ATmega128 гэх мэт) үүнийг VCC нийтлэг тэжээлийн зүүтэй холбох хэрэгтэй. Зарим IC-д нэгээс олон VCC тэжээлийн зүү эсвэл нэгээс олон GND байдаг. Жишээлбэл, ATmega128 нь 3 GND зүү, 2 VCC зүүтэй. Байнгын загварт ижил нэртэй дүгнэлтийг хооронд нь холбох нь дээр. Манай тохиолдолд програмчлалын үед та VCC болон GND-ийн нэг гаралтыг ашиглаж болно.

ATtiny13 холболт нь эндээс харагдаж байна. Зураг дээр SPI-ээр програмчлах үед ашигласан зүү хуваарилалтыг харуулав. Зургийн хажууд - түр зуурын холболт бодит байдал дээр хэрхэн харагдаж байна.


Энэ нь ноцтой биш гэж хэн нэгэн хэлж магадгүй юм - wiring connections. Гэхдээ бид ухаантай хүмүүс. Бидний зорилго бол микроконтроллерыг хамгийн бага цаг хугацаа болон бусад нөөцөөр програмчлах бөгөөд хэн нэгний өмнө шоудах биш юм. Чанар нь мууддаггүй. Энэ тохиолдолд "нийтлэл дээр" арга нь нэлээд үр дүнтэй бөгөөд үндэслэлтэй юм. Хянагчийн програм хангамж нь нэг удаагийн процедур тул үүнийг "rhinestones" -аар өлгөх нь утгагүй юм. Хэрэв хянагчийг хэлхээнээс салгахгүйгээр (бэлэн бүтээгдэхүүнд) ирээдүйд програм хангамжийг өөрчлөх гэж байгаа бол төхөөрөмжийг үйлдвэрлэх явцад угсралтын явцад үүнийг харгалзан үзнэ. Ихэвчлэн энэ зорилгоор холбогчийг суурилуулсан (RESET, SCK, MOSI, MISO, GND) бөгөөд MK нь самбар дээр суулгасны дараа ч анивчдаг. Гэхдээ эдгээр нь аль хэдийн бүтээлч таашаал юм. Бид хамгийн энгийн тохиолдлыг авч үздэг.

Одоо ATtiny44 MK руу шилжье. Энд бүх зүйл бараг ижил байна. Зураг, гэрэл зургийн дагуу эхлэгч хүртэл холболтыг олоход хэцүү биш байх болно. ATtiny44-ийн нэгэн адил та MK ATtiny24 болон ATtiny84-ийг холбож болно - энэ гурвалын зүү хуваарилалт нь адилхан.


Хянагчийн програмчлалын түр зуурын холболтын өөр нэг жишээ бол ATmega8 юм. Энд илүү олон дүгнэлт бий, гэхдээ зарчим нь ижил байдаг - хэд хэдэн утаснууд, одоо хянагч нь мэдээллийг "бөглөх" боломжтой болсон. Зурган дээрх 13-р зүүгээс ирсэн нэмэлт хар утас нь програмчлалд оролцдоггүй. Энэ нь MK програмчлалын горимоос гарсны дараа түүнээс дуут дохиог арилгах зорилготой юм. Энэ нь "Perpetuum M" киноны зохиолыг дибаг хийх явцад хөгжмийн хайрцагны программыг MK-д татсантай холбоотой юм.


Ихэнхдээ нэг хянагч өөр өөр тохиолдолд байдаг. Энэ тохиолдолд тохиолдол бүрийн дүгнэлтийг өөрийн замаар хуваарилдаг. Хэрэв таны хянагчийн гэр нь зурагт үзүүлсэн шиг харагдахгүй байвал MK хөгжүүлэгчийн вэбсайтаас татаж авах боломжтой техникийн баримт бичгийн дагуу зүүний зорилгыг зааж өгнө үү.

Зургийг дуусгахын тулд олон тооны "хөл" бүхий MK чипийн холболтыг харцгаая. Зурган дээрх 15-р зүүгээс ирсэн нэмэлт хар утасны зорилго нь ATmega8-тай яг ижил байна.


Бүх зүйл маш энгийн гэдгийг та аль хэдийн харсан байх. Бичил схемийн дүгнэлтийг (цагийн зүүний эсрэг тойрог дахь тэмдэглэгээнээс) хэрхэн тоолохыг хэн мэдэх вэ, тэр үүнийг олох болно. Мөн болгоомжтой байхаа бүү мартаарай. Бичил схемүүд нь цэвэрхэн дуртай бөгөөд өөрсдөдөө хайхрамжгүй хандлагыг уучлахгүй.

Програм хангамжийн хэсэг рүү орохын өмнө USB-RS232TTL хөрвүүлэгч драйверийг зөв суулгасан эсэхийг шалгана уу (Windows Device Manager-ийг шалгана уу). Хөрвүүлэгчийг холбоход гарч ирэх виртуал COM портын дугаарыг санаарай эсвэл бичнэ үү. Энэ дугаарыг скриптийн текстэнд оруулах шаардлагатай бөгөөд үүнийг доороос уншиж болно.

4. Скрипт - "Perpetuum M" программист

Бид "программист" -ын техник хангамжийн хэсгийг олж мэдсэн. Энэ нь аль хэдийн тулааны тал хувь нь болсон. Одоо програм хангамжийн хэсгийг шийдвэрлэх л үлдлээ. Үүний үүргийг "Perpetuum M" программ нь микроконтроллертэй харилцахад шаардлагатай бүх функцийг гүйцэтгэдэг скриптийн хяналтан дор гүйцэтгэх болно.

Скрипт бүхий архивыг perpetuum.exe програм байрладаг ижил хавтсанд задлах ёстой. Энэ тохиолдолд та perpetuum.exe файлыг ажиллуулах үед суулгасан скриптүүдийн жагсаалт бүхий цэс дэлгэцэн дээр гарч ирэх бөгөөд тэдгээрийн дунд "MK AVR программист" гэсэн мөр гарч ирэх болно (энэ нь цорын ганц байж болно). Энэ бол бидэнд хэрэгтэй шугам юм.

Скрипт нь "MK Programmer AVR.pms" файлын PMS хавтсанд байрладаг. Энэ файлыг шаардлагатай бол Windows Notepad зэрэг нийтлэг текст засварлагчаар үзэж, судалж, засварлаж болно. Скриптийг ашиглахаасаа өмнө портын тохиргоотой холбоотой текстэнд өөрчлөлт оруулах шаардлагатай болно. Үүнийг хийхийн тулд Windows Device Manager-д ашигласан портын нэрийг шалгаж, шаардлагатай бол "PortName="COM4";" мөрөнд зохих өөрчлөлтийг оруулна уу. - 4-ийн оронд өөр тоо байж болно. Мөн USB-RS232TTL хөрвүүлэгчийн өөр загварыг ашиглах үед дохионы урвуу тохиргоог өөрчлөх шаардлагатай байж магадгүй юм ("Өндөр" гэсэн үгээр эхэлсэн скрипт мөрүүд). Та Perpetuum M програмын зааварт байгаа жишээнүүдийн аль нэгийг ашиглан USB-RS232TTL хөрвүүлэгчийн дохионы урвуу байдлыг шалгаж болно (порттой ажиллах функцүүдийн хэсэг).

MK_AVR дэд хавтас нь дэмжигдсэн контроллеруудын тайлбар бүхий файлуудыг агуулдаг. Хэрэв тэдний дунд хүссэн хянагч байхгүй бол та аналогийн дагуу шаардлагатай нэгийг нь өөрөө нэмж болно. Файлуудын аль нэгийг жишээ болгон авч, текст засварлагч ашиглан микроконтроллерийнхээ баримтаас шаардлагатай өгөгдлийг оруулна уу. Хамгийн гол нь болгоомжтой байгаарай, өгөгдлийг алдаагүй оруулаарай, эс тэгвээс MK програмчлагдаагүй, эсвэл буруу програмчлагдсан байх болно. Анхны хувилбар нь ATtiny13, ATtiny24, ATtiny44, ATtiny84, ATmega8, ATmega128 гэсэн 6 микроконтроллерийг дэмждэг. Скрипт нь холбогдсон хянагчийг автоматаар таних боломжийг олгодог - та үүнийг гараар зааж өгөх шаардлагагүй. Хэрэв боломжтой тайлбаруудын дунд MK-ээс уншсан танигч байхгүй бол хянагчийг таних боломжгүй гэсэн мессеж гарч ирнэ.

Скрипттэй архив нь нэмэлт мэдээллийг агуулна. "AVR controllers inc files" хавтас нь хянагчийн тайлбарын файлуудын маш хэрэгтэй, өргөн хүрээтэй цуглуулгыг агуулдаг. Эдгээр файлуудыг MK-д зориулж өөрийн програм бичихэд ашигладаг. Дөрвөн "MusicBox_..." хавтас нь ATtiny13, ATtiny44, ATmega8, ATmega128-д тусад нь MK-д татаж авахад бэлэн ассемблер програм болон програм хангамж бүхий файлуудыг агуулна. Хэрэв та энэ нийтлэлд санал болгосны дагуу эдгээр MK-ийн аль нэгийг програмчлалын зориулалтаар холбосон бол яг одоо асааж болно - та хөгжмийн хайрцаг авах болно. Энэ талаар доор дэлгэрэнгүй үзнэ үү.

Скрипт цэснээс "Programmer MK AVR" гэсэн мөрийг сонгоход скрипт ажиллаж эхэлнэ. Үүний зэрэгцээ портыг нээж, програмчлалын горимд шилжих командыг MK руу илгээж, амжилттай шилжилтийн тухай MK-ээс баталгаажуулалтыг хүлээн авч, MK танигчийг хүсч, энэ MK-ийн тодорхойлолтыг танигчаар хайж олох болно. тайлбар бүхий боломжтой файлууд. Хэрэв шаардлагатай тайлбарыг олоогүй бол зохих мессежийг гаргадаг. Хэрэв тайлбар олдвол програмистын үндсэн цэс нээгдэнэ. Та түүний дэлгэцийн агшинг Зураг 8-аас харж болно. Үүнийг цааш нь ойлгоход хэцүү биш - цэс нь маш энгийн.

Скриптийн эхний хувилбарт бүрэн хэмжээний програмистын зарим функцууд хэрэгжээгүй байна. Жишээлбэл, EEPROM руу уншиж бичих ямар ч боломжгүй. Гэхдээ хэрэв та скриптийг текст засварлагч дээр нээвэл гол зүйл нь аль хэдийн хэрэгжсэн байсан ч энэ нь маш жижиг хэмжээтэй байгааг харах болно. Энэ нь алга болсон функцуудыг нэмэх нь тийм ч хэцүү биш гэдгийг харуулж байна - хэл нь маш уян хатан, энэ нь жижиг программд баялаг функцийг хэрэгжүүлэх боломжийг олгодог. Гэхдээ ихэнх тохиолдолд одоо байгаа функцүүд ч хангалттай байх болно.

Зарим функциональ хязгаарлалтыг скриптийн текстэнд шууд тайлбарласан болно:
//зөвхөн хаягийн тэгээс бичлэгийг хэрэгжүүлсэн (Өргөтгөсөн сегментийн хаягийн бичлэгийг үл тоомсорлож, LOAD OFFSET мөн)
//HEX файл дахь бичлэгийн дараалал, тасралтгүй байдлыг шалгаагүй
// шалгах нийлбэр шалгагдаагүй байна
Энэ нь MK-ийн програмын кодыг авсан HEX файлтай ажиллахад хамаарна. Хэрэв энэ файл гэмтээгүй бол шалгах нийлбэрийг шалгах нь юунд ч нөлөөлөхгүй. Хэрэв гажуудсан бол скриптээр илрүүлэх боломжгүй болно. Ихэнх тохиолдолд үлдсэн хязгаарлалтууд нь гэмтэхгүй, гэхдээ та тэдгээрийг санаж байх хэрэгтэй.

5. Хөгжмийн хайрцаг - эхлэгчдэд зориулсан хялбар гар урлал

Хэрэв танд эдгээр микроконтроллеруудын аль нэг нь байгаа бол: ATtiny13, ATtiny44, ATmega8 эсвэл ATmega128, та үүнийг хөгжмийн хайрцаг эсвэл хөгжмийн карт болгон хялбархан эргүүлж болно. Үүнийг хийхийн тулд скриптийн хамт нэг архивт "MusicBox_..." хавтсанд байгаа дөрвөн хавтасны нэг болох MK-д тохирох програм хангамжийг бичихэд хангалттай. Програм хангамжийн кодууд нь ".hex" өргөтгөлтэй файлуудад хадгалагддаг. Ийм гар урлалд ATmega128 ашиглах нь мэдээжийн хэрэг ATmega8 шиг "өөх" юм. Гэхдээ энэ нь туршилт, туршилт хийхэд хэрэг болно, өөрөөр хэлбэл боловсролын зорилгоор. Ассемблер програмын текстийг мөн хавсаргав. Хөтөлбөрүүдийг эхнээс нь бүтээгээгүй - А.В.Беловын "Сонирхогчдын радио практикт AVR микроконтроллерууд" номноос авсан хөгжмийн хайрцагны хөтөлбөрийг үндэс болгон авсан. Анхны хөтөлбөрт хэд хэдэн чухал өөрчлөлт орсон:
1. ATtiny13, ATtiny44, ATmega8 болон ATmega128 гэсэн дөрвөн MK тус бүрт тохирсон
2. товчлуурууд арилсан - цахилгаан ба дуу чимээ гаргагчаас бусад нь хянагчтай холбогдох шаардлагагүй (аяг дуусашгүй давталтаар ар араасаа тоглогддог)
3. хөгжмийн хэмнэлийн зөрчлийг арилгахын тулд нот бүрийн үргэлжлэх хугацааг нот хоорондын завсарлагааны хугацаагаар багасгана.
4. номын хувилбарт ашиглагдаагүй найм дахь аялгуу холбогдсон
5. субъектив: алгоритмыг оновчтой болгох, ойлгоход хялбар болгох зарим "сайжруулалт"

Зарим аялгуунд худал хуурмаг, тэр ч байтугай бүдүүлэг сонсогддог, ялангуяа "Инээмсэглэл" -ийн дунд хэсэгт. Аяны кодуудыг номноос авсан (илүү нарийвчлалтай, эх asm-файлын хамт зохиогчийн вэбсайтаас татсан) бөгөөд өөрчлөгдөөгүй. Аяыг кодлоход алдаа гарсан бололтой. Гэхдээ энэ нь асуудал биш юм - хөгжимтэй "найзууд" байгаа хүмүүс үүнийг амархан ойлгож, бүх зүйлийг засах болно.

ATtiny13-д нот тоглуулах 16 битийн тоолуур байхгүйн улмаас 8 битийн тоолуур ашиглах шаардлагатай болсон нь нотны дууны нарийвчлал бага зэрэг буурахад хүргэсэн. Гэхдээ чихэнд энэ нь бараг мэдэгдэхүйц биш юм.

Тохиргооны битүүдийн тухай. Тэдний тохиргоо нь шинэ микроконтроллерийн төлөвтэй тохирч байх ёстой. Хэрэв таны MCU өмнө нь хаа нэгтээ ашиглагдаж байсан бол та түүний тохиргооны битүүдийн статусыг шалгаж, шаардлагатай бол шинэ микроконтроллерийн тохиргоотой нийцүүлэх хэрэгтэй. Та шинэ микроконтроллерийн тохиргооны битүүдийн төлөвийг энэ MK-ийн баримтаас ("Гал хамгаалагчийн бит" хэсэг) олж мэдэх боломжтой. Үл хамаарах зүйл бол ATmega128 юм. Энэ MCU нь хуучин ATmega103-тай нийцтэй горимыг идэвхжүүлдэг M103C биттэй. M103C битийг идэвхжүүлснээр ATmega128-ийн чадварыг ихээхэн бууруулдаг бөгөөд энэ бит нь шинэ MK дээр идэвхтэй байдаг. Та M103C-г идэвхгүй байдалд дахин тохируулах хэрэгтэй. Тохиргооны битүүдийг удирдахын тулд программист скрипт цэсний харгалзах хэсгийг ашиглана уу.

Хөгжмийн хайрцагны диаграммыг өгөх нь утгагүй юм: энэ нь зөвхөн микроконтроллер, тэжээлийн хангамж, пьезо дуу чимээ ялгаруулагчтай. Эрчим хүчийг бид MK програмчлахтай яг ижил аргаар нийлүүлдэг. Дуу ялгаруулагч нь нийтлэг утас (хянагчийн GND гаралт) ба MK-ийн гаралтын аль нэгний хооронд холбогдсон бөгөөд тэдгээрийн тоог програмын ассемблер код бүхий файлаас олж болно (*.asm). Сэтгэгдэл дэх MK бүрийн програмын текстийн эхэнд "дуут дохио нь XX гаралт дээр үүсдэг" гэсэн мөр байдаг. Скрипт-программист дуусахад микроконтроллер програмчлалын горимоос гарч ердийн горимд шилжинэ. Дууг шууд тоглуулж эхэлнэ. Дуу ялгаруулагчийг холбосноор та үүнийг шалгаж болно. Чип програмчлалын үед дуу чимээг SPI-д ашиглагдаагүй зүүнээс авсан тохиолдолд л дуугаруулагчийг холбоно уу, эс тэгвээс зүү дээрх нэмэлт багтаамж нь програмчлалд саад учруулж болзошгүй.

AVR микроконтроллерийг хэрхэн гялалзуулах вэ? Үүнийг бид энэ нийтлэлд хийх болно.

"Flash" болон "firmware" гэж юу вэ?

Эхлээд энэ үг ямар утгатай болохыг тодорхойлъё "флэш"? гэх мэт хэллэгүүдийг та олонтаа сонсдог байсан гэж бодож байна "утсаа анивчих", "програм хангамж ниссэн байна", "программ нь муруйсан"гэх мэт. Гэж юу вэ "програм хангамж"?

Програм хангамж нь гар утас, MP3 тоглуулагч, дижитал камер гэх мэт жижиг төхөөрөмжүүдэд зориулсан үйлдлийн систем юм. Энэ нь энэ төхөөрөмжийг хянадаг жижиг програм юм. "Миний гар утас "алдаатай" байна, надад яаралтай хэрэгтэй байна "дахин анивчина“.

Энэ тохиолдолд та үйлдлийн системийг гар утсан дээрээ дахин суулгах хэрэгтэй гэсэн үг юм. гэсэн үг, "flash MK"Энэ нь энэ MK-г хянах программыг дотор нь байршуулах гэсэн үг бөгөөд MK нь аль хэдийн зарим төхөөрөмжийг хянах болно.Өөрөөр хэлбэл, онолын хувьд MK нь програм болон хянах шаардлагатай зарим төхөөрөмжийн хооронд зуучлагч юм ;-)


MK програм хангамжийн тоног төхөөрөмж

Тэгэхээр, MK-г гэрэлтүүлэхэд бидэнд юу хэрэгтэй вэ?

  1. Микроконтроллер өөрөө.
  2. Урьдчилан суулгасан програм хангамж (SW) бүхий компьютер.
  3. Програмист.
  4. Хэд хэдэн үсрэгчид.
  5. Талхны самбар. Би нэн даруй анхан шатны AVR иж бүрдэл худалдаж авахыг зөвлөж байна. Энэ багц нь USB-ээр тэжээгддэг.
  6. Зөв газраас ургасан шулуун гар.

Бид DIP-20 багцад Atiny2313 MK ашиглахаар тохиролцсон.

Програм хангамжийн MK-г бэлтгэж байна

Өнгөрсөн нийтлэлүүдэд бид Громов программистыг авч үзсэн. Үүний гол сул тал нь бидэнд COM порт хэрэгтэй байгаа бөгөөд энэ нь одоо компьютерт бараг олддоггүй, гэхдээ бүх компьютер дээр USB холбогч байдаг. Тиймээс AVR MK-д зориулж хамгийн хямд USB программист худалдаж авахаар шийдсэн. Ийм программистыг дуудаад нэг иймэрхүү харагддаг


Хэрэв та Али дээр сайн ухаж авбал ийм программист маш амттай үнээр олж болно. Жишээлбэл, . Та бүр хямдхан олж магадгүй. Хэрэв та өөр худалдагчаас авсан бол анхааралтай ажиглаарай түүний бичээсүүд болон радио элементүүд нь яг миний зурган дээрх шиг байрласан байв. Дунджаар бичиж байх үеийн үнэ нь ойролцоогоор 120 рубль байна. Энэ тохиолдолд ийм програмист нь арай илүү үнэтэй байх болно.

Энд түүний арын дүр төрх:


Түүний ажиллаж байгаа холбогч нь иймэрхүү харагдаж байна.


Программист нь мөн кабельтай ирдэг


Энэ нь нэг төгсгөлд програмистын ажлын холбогчтой наалддаг:


Бид кабелийн нөгөө үзүүрийг MK-д холбоно.


Хэрэв та анхааралтай ажиглавал холбогч дахь аль зүү нь хамгийн түрүүнд байгааг олж мэдэх боломжтой. Сум нь холбогчийн эхний зүү рүү чиглэнэ:


Эхний зүү хаана байгааг мэдсэний дараа та үлдсэн зүүг хялбархан тодорхойлж болно:


Тиймээс бидний даалгавар бол MK-ийн гаралтыг програмистын гаралттай холбох явдал юм.

Үүнийг хийхийн тулд бид утсыг MOSI, RST, SCK, MISO, VTG (VCC), GND үүрэнд кабелийн холбогч руу холбоно. GND Би 10-р залгуурыг авсан, энэ нь боломжтой бөгөөд өөр нэг, GND бичигдсэн байдаг. Нийт 6 холбогч утас:


VTG (VCC)бид MK-ийн 20-р хөлөнд наалддаг

SCK(UCSK)бид 19 хөлтэй MK-д наалддаг

MISOбид MK-ийн 18-р хөлөнд наалддаг

MOSI 17 хөлийн хувьд

GND 10 хөлний хувьд

RSTэхний хөл дээр

Энэ нь иймэрхүү зүйл болж хувирах ёстой:


Программистыг компьютерийн USB портод анх удаа залгасны дараа, Төхөөрөмжийн менежербидэнд шинэ төхөөрөмж өгөх болно:

Бид айхгүй, архивлагчийг эндээс татаж аваад задлаад "түлээ" суулгахдаа түүнд хүрэх замыг зааж өгнө үү. Программист дээр "түлээ" суулгахад бид иймэрхүү зүйлийг харах болно.

Бүх зүйл хэвийн, програмист тулалдаанд бэлэн байна.

Үүнтэй ижил архиваас бид "avrdudeprog" хавтсыг олж, нээж, AVRDUDEPROG гүйцэтгэх файлыг хайж олоод ажиллуулна уу. Энэ бол манай программист ашиглан MK-г анивчуулах програм хангамжийн бүрхүүл юм.

Тэр ийм харагдаж байна. Жагсаалтаас манай MK-г сонгохоо бүү мартаарай.

MK-г гэрэлтүүлэхийн тулд бид HEX өргөтгөлтэй файлыг сонгох хэрэгтэй. Тэгэхээр энд миний файл байна. Юуны өмнө би товчлуурыг дарна "Бүх зүйлийг устгах". Хэрэв хэн нэгэн нь MK-г аль хэдийн ашигласан бөгөөд зарим програмыг тэнд байршуулсан бол яах вэ? Тиймээс, анивчахаас өмнө бид MK-ийн санах ойг арилгадаг. Хэрэв "угаалга" амжилттай болсон бол програм нь бидэнд дараах мессежийг өгөх болно.

MK AVR анивчих

Файл сонгох товчийг дарна уу:

Одоо бид "Хичээл 1.hex" файлаа сонгоно. Энэ бол бидний хөтөлбөр.

Одоо бид товчлуур дээр дарна уу "Програмчлал"

Бүх зүйл сайн болсны дараа иймэрхүү зүйл гарч ирнэ:

Гэхдээ энэ нь бүгд биш юм! Таны санаж байгаагаар сүүлийн нийтлэлд бид давтамжийг 8 мегагерц болгож тохируулсан. Төөрөгдөл гаргахгүйн тулд бид одоо энэ давтамжийг 8-д хуваах хэрэгтэй. Үүний тулд цагийн давтамжийг 8-аар хуваадаг гал хамгаалагч байдаг. Бид тэмдэглэгээг "шууд гал хамгаалагч" дээр байрлуулж, CKDIV-ийн хайрцгийг шалгана уу.

Эдгээр хоёр алхамыг хийсний дараа товчлуур дээр дарна уу "Програмчлал":

Техник хангамж дахь MK-г шалгаж байна

Одоо бид сүүлийн нийтлэлд дурдсан хэлхээгээ угсарч байна.


мөн үр дүнг таашаал аваарай:

Энэхүү нийтлэлээр би микроконтроллерууд дээр төхөөрөмжийг хөгжүүлэх, асаах, тохируулах үндсэн аргуудыг нарийвчлан авч үзэх циклийг нийтэлж эхлэхийг хүсч байна. Бичлэгүүд нь хөгжүүлэлт, дибаг хийхдээ өөрсдийгөө зовоохгүйгээр зөвхөн бэлэн төхөөрөмжүүдийг давтах гэж байгаа хүмүүст хэрэгтэй болно. Бид (би болон сайтын захиргаа) энэ циклийг нийтлэх нь олон эхлэгчдэд төдийгүй радио сонирхогчдод микроконтроллер дээр суурилсан тоног төхөөрөмжийг боловсруулж, (эсвэл) давтаж эхлэхэд тусална гэж найдаж байна. Энэ нийтлэл нь бидний дуртай Радио сэтгүүл зэрэг янз бүрийн нээлттэй эх сурвалжаас материалыг цуглуулж, системчлэх болно. Бид MK гэж юу болох, юугаар хооллодог, эмхэтгэгчид яагаад хэрэгтэй вэ, * гэсэн файлд ямар аймшигтай амьтад сууж байгааг товчхон авч үзэх болно. HEX, *. бин, *. asm гэх мэт түүх рүү бага зэрэг шумбаж, эцэст нь анхны программистаа бүтээцгээе SI-Prog (миний бодлоор бол маш энгийн, найдвартай, бүх нийтийн, мартагдашгүй зүйл) бөгөөд бид MK-г гэрэлтүүлэх болно, үүнээс гадна тодорхой жишээ ашиглан бид RopuRgo програм хангамжийн бүрхүүлтэй ажиллах болно. g 2000 болон IS-Prog . Ингээд эхэлцгээе. Өнөөдөр дижитал нэгдсэн хэлхээний дунд MK нь аналогийн дунд үйл ажиллагааны өсгөгчтэй ижил байр эзэлдэг нь нууц биш юм. Эдгээр нь бүх нийтийн төхөөрөмж бөгөөд янз бүрийн зориулалттай электрон төхөөрөмжид ашиглах нь байнга өргөжиж байна. Хагас дамжуулагч электроникийн чиглэлээр мэргэшсэн бараг бүх том, олон дунд фирмүүд MC-ийг хөгжүүлэх, үйлдвэрлэх чиглэлээр ажилладаг. Зарим алдартай гэр бүлийн MK-ийн жагсаалт, үндсэн параметрүүдийг жишээлбэл, Интернетээс олж болно.

Орчин үеийн микрокомпьютерууд (тэдгээрийг нэг чиптэй микрокомпьютер гэж нэрлэдэг байсан) хүчирхэг процессорын цөм, гүйцэтгэх програм, өгөгдлийг хадгалах санах ойн төхөөрөмж, оролт хүлээн авах, гаралтын дохио үүсгэх төхөөрөмж, олон тооны туслах зангилаа зэргийг нэгтгэдэг. Орчин үеийн "микроконтроллерийн барилга" -ын ерөнхий чиг хандлага нь хэвийн үйл ажиллагаанд шаардлагатай гадаад элементүүдийн тоо буурах явдал юм. Микро схемийн чип дээр зөвхөн харьцуулагч, аналог-тоон ба дижитал-аналог хувиргагчийг байрлуулаад зогсохгүй бүх төрлийн ачаалал ба "татах" резистор, хэлхээг дахин тохируулдаг.

MK-ийн гаралтын буфер нь LED үзүүлэлт гэх мэт хамгийн ердийн ачааллыг шууд холбох зориулалттай. MK-ийн бараг бүх гаралтыг (мэдээжийн хэрэг нийтлэг утас ба цахилгааны гаралтаас бусад) хөгжүүлэгч өөрийн үзэмжээр оролт, гаралт болгон ашиглаж болно. Үүний үр дүнд үйл ажиллагааны хувьд нэлээд төвөгтэй төхөөрөмжийг зөвхөн нэг микро схем дээр гүйцэтгэх боломжтой.

Микроконтроллеруудын өртөг байнга буурч, тэдгээрийн үйл ажиллагаа өргөжиж байгаа нь тэдгээрийн үндсэн дээр барихыг зөвлөж буй төхөөрөмжүүдийн нарийн төвөгтэй байдлын босго хэмжээг бууруулсан. Өнөөдөр MK дээр ийм төхөөрөмжүүдийг зохион бүтээх нь утга учиртай бөгөөд үүнийг уламжлалт аргаар хэрэгжүүлэхийн тулд дунд болон бага түвшний интеграцийн арав хүрэхгүй логик микро схем шаардлагатай болно. Магадгүй энэ зам дахь гол саад бол хөгжүүлэгчдийн консерватизм бөгөөд тэдний ихэнх нь MK-ийг ойлгомжгүй төвөгтэй зүйл гэж үздэг хэвээр байна.

Үүний зэрэгцээ, MK програмыг боловсруулах үйл явц ба дижитал төхөөрөмжийн ердийн хэлхээний диаграмм нь олон талаараа төстэй юм. Аль ч тохиолдолд хүссэн хэлбэрийн "барилга" нь энгийн "тоосго" -оос баригдсан. Зүгээр л "тоосго" нь өөр өөр байдаг: эхний тохиолдолд - логик элементүүдийн багц, хоёрдугаарт - микроконтроллерийн командын багц. .

Утсаар дамжуулан дохио солилцох замаар элементүүдийн хооронд харилцан үйлчлэхийн оронд MK доторх нэг санах ойн нүднээс нөгөөд өгөгдөл дамжуулах. MK нь түүнд холбогдсон мэдрэгч, индикатор, идэвхжүүлэгч болон гадаад санах ойтой холбогдох үед дамжуулах үйл явц "цацдаг". Хэрэгслүүд нь бас өөр өөр байдаг. Харандаа, цаас, гагнуурын төмөр, осциллографыг компьютер, програмистаар сольсон боловч бүтээгдэхүүнийг дибаг хийх сүүлийн шатанд осциллограф, гагнуурын төмрөөр хийх боломжгүй хэвээр байна.

Өөр нэг бэрхшээл бол орос хэл дээр бүрэн хэмжээний техникийн баримт бичиг, лавлах ном байхгүй байна. Тогтмол хэвлэл, ялангуяа орос хэл дээрх интернет дэх ийм төрлийн ихэнх нийтлэлүүд нь англи эх сурвалжийн шугаман орчуулгаас өөр зүйл биш юм. Түүгээр ч барахгүй орчуулагчид заримдаа сэдэв, нэр томьёоны талаар бага мэдлэгтэй байдаг тул "харанхуй" газруудыг өөр өөрийнхөөрөө тайлбарладаг бөгөөд тэдгээр нь (газарууд) үнэнээс нэлээд хол байдаг. Орос хэл дээрх програм хангамжийг хөгжүүлэх хэрэгсэл бараг байдаггүй. болон MK програмуудыг дибаг хийх.

Олон хүмүүсийн хувьд MK-тай анхны танилцах нь ижил Радио сэтгүүл эсвэл өөр хэвлэлд нийтлэгдсэн загваруудын аль нэгийг давтахаас эхэлдэг. Эндээс MC ба ердийн микро схемийн гол ялгаа нь шууд илэрдэг: програмыг дотоод (заримдаа гадаад) хадгалах төхөөрөмжид оруулах хүртэл ямар ч ашигтай зүйл хийх боломжгүй, жишээлбэл. гүйцэтгэх үйлдлийн дарааллыг тодорхойлсон кодуудын багц. MK-ийн санах ойд код бичих журмыг түүний програмчлал эсвэл програм хангамж гэж нэрлэдэг (ижил нэртэй програмыг өөрөө боловсруулах өмнөх үйл явцтай андуурч болохгүй).

Програм хангамжийн хэрэгцээ нь эхлээд харахад сул тал мэт санагдаж магадгүй юм. Үнэн хэрэгтээ энэ бол гол давуу тал бөгөөд үүний ачаар жишээлбэл, MK бүхий нэг самбар, хэд хэдэн LED индикатор, товчлууруудыг холбож, хүсвэл бүх зүйлийг давтамж хэмжигч, импульс тоолуур болгон хувиргах боломжтой. , электрон цаг, ямар ч физик хэмжигдэхүүний тоон тоолуур, алсын удирдлага, хяналт гэх мэт.

Хөтөлбөрийн кодыг нууцлах чадвар нь MK дээрх тоног төхөөрөмж үйлдвэрлэгчдэд өрсөлдөгчидтэй тэмцэхэд тусалдаг. Програмын хэт нууцлал нь "гадаадын" загварын MK дээрх төхөөрөмжийг засах, сайжруулахад нэмэлт бэрхшээл учруулдаг нь үнэн. Гэхдээ энэ бол өөр асуудал.

Саяхныг хүртэл MC дээр бүтэц зохион бүтээж эхлэхэд хөгжүүлэгч өөрт нь мэдэгдэж байсан нэг эсвэл хоёр төрлийн төхөөрөмжийг ашиглан асуудлыг шийдэх боломжтой эсэх асуудалтай тулгарсан. Өнөөдөр байдал эрс өөрчлөгдсөн. Боломжтой MC-ийн багцаас тухайн асуудлыг оновчтой байдлаар шийдвэрлэхийн тулд аль нэгийг нь сонгох хэрэгтэй. Харамсалтай нь хүн бүр үүнийг хийдэггүй. Төрөл бүрийн бүтээгдэхүүний хувьд тодорхой "мода" байсан бөгөөд тодорхой гэр бүлийн МК-ыг дэмжигчдийн өвөрмөц бүлгүүд бий болсон. Тэд сонголтоо дүрмээр бол "дуртай - дургүй" гэсэн түвшинд зөвтгөдөг. Ихэнхдээ төхөөрөмжийн талаархи сөрөг санал нь түүнийг ашиглах гэсэн нэг удаагийн амжилтгүй оролдлого, бүтэлгүйтлийн шалтгааныг шинжлэх, арилгах оролдлогогүйгээр тайлбарладаг. Зарим компаниуд өөрсдийн төхөөрөмжийг өрсөлдөгчийн бүтээгдэхүүнтэй "объектив" харьцуулсан "Үнэн ..." нэртэй баримт бичгүүдийг тарааж, дүрмээр бол эхнийхийг дэмждэг. Та ийм хэвлэлд тийм ч их итгэх ёсгүй, үр дүн, дүгнэлттэй харьцуулсан тайлан үргэлж байх болно.

Бусад олон тохиолдлын нэгэн адил сайн, муу МК гэж байхгүй, байж ч болохгүй гэдгийг хэлмээр байна. Тэд тус бүр нь тодорхой ангиллын асуудлыг шийдвэрлэхэд маш сайн үр дүнд хүрч чаддаг бөгөөд бусадтай бараг харьцдаггүй. Тиймээс төрөл зүйл нь олон янз байдаг. Дүрмээр бол нэг параметрийн ашиг нь бусад үзүүлэлтийн доройтол дагалддаг. Хамгийн энгийн жишээнүүд: олон дахин програмчлахад зориулагдсан MK нь нэг удаагийн программчлагдах төхөөрөмжөөс үргэлж илүү үнэтэй байдаг ба илүү хурдан төхөөрөмж нь импульсийн дуу чимээг удаашруулахад илүү мэдрэмтгий бөгөөд ПХБ-ийн ул мөрийг илүү шаарддаг. Мэдээжийн хэрэг, өргөн хүрээний асуудлыг шийдвэрлэхэд тохиромжтой бүх нийтийн төхөөрөмжүүд байдаг. Гэсэн хэдий ч хэрэв зөвхөн нэг юмуу өөр загварыг давтах шаардлагатай бол MK сонгох онцгой боломж байхгүй тул та тайлбарт заасан загвар эсвэл түүний бүрэн аналогийг ашиглах хэрэгтэй, жишээлбэл, бусад компаниудын үйлдвэрлэсэн бүтээгдэхүүнээс. Тусгай зөвшөөрөл. Нэг төрлийн MK-г нөгөөгөөр солих боломжтой эсэхийг асуухад нэг нь ихэвчлэн сөрөг хариулт өгөх шаардлагатай байдаг, гэхдээ онолын хувьд ийм боломж байдаг: та зүгээр л програмыг дахин боловсруулах хэрэгтэй бөгөөд хэрэв тээглүүрүүдийн тоо, зорилго байгаа бол. солигдсон болон солигдсон MK нь өөр, дараа нь хэвлэмэл хэлхээний самбар.

Хэрэв бид ижил төстэй бүтэцтэй, нэг гэр бүлд хамаарах микроконтроллеруудыг солих эсвэл хуучирсан бүтээгдэхүүнийг орчин үеийн аналогиар солих тухай ярьж байгаа бол дүрмээр бол програмыг тохируулах боломжтой. Микрочип ба ATMEL Тэр ч байтугай ийм дасан зохицох зөвлөмжийг өөрийн MC-ийн лавлагааны өгөгдөлд оруулсан болно. Ерөнхий тохиолдолд програмыг өөр MK-д бүрэн шилжүүлэхийн тулд зөвхөн EPROM-ийн нийтлэг хэвлэгдсэн "програм хангамж" төдийгүй програмистын тайлбар бүхий бүрэн эх текстийг агуулсан байх шаардлагатай. "Програм хангамж" -ыг задласны үр дүнд олж авсан жагсаалт нь бүрэн хэмжээний эквивалентаас хол байна. Программист эхнээс нь хөгжүүлэхэд хангалттай байхаас хамаагүй өндөр ур чадвар шаардагдах бөгөөд хөдөлмөрийн зардал бага байх болно.

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

Бид тодорхой жишээн дээр дараагийн түүхийг бүтээх болно. Саяхан ямар нэгэн байдлаар тодорхой хилийн тодорхой объектын уулзварыг нэг чиглэлд, нөгөө талд нь тоолох боломжтой тоолуур шаардлагатай болсон. Радио сэтгүүлийн дугааруудыг хараад би тохиромжтой төхөөрөмж олсон боловч энэ нь хэтэрхий төвөгтэй мэт санагдсан (11 микро схем, түүний дотор том хүчин чадалтай EPROM), үүнээс гадна зарим шаардлагатай функцүүд, тухайлбал, урьдчилан боловсруулах чадваргүй байв. тоолуурын заалтыг тохируулж, цахилгааныг унтраасны дараа түүний төлөвийг санах.. МК дээр шаардлагатай төхөөрөмжийг хийх санаа байсан.Доор дурдсан шалтгааны улмаас MK PIC16F84 (PIC16F84А)-ийг сонгосон. Үүний үр дүнд төхөөрөмжийн схем төрсөн ( будаа. нэг),


зөвхөн хоёр микро схем агуулсан. Төхөөрөмж нь PIC16F84 болон PIC16F84 микроконтроллеруудыг ашиглах боломжтойА ямар ч хязгаарлалтын давтамж, тохиолдлын төрөл, ажиллах температурын хүрээтэй (эдгээр параметрүүдийг чипийн тэмдэглэгээний зураасны дараа тоон болон цагаан толгойн үсгийн индексээр зааж өгсөн болно, жишээлбэл, -101 / R). Хэрэв програмын сайжруулалт хүлээгдээгүй бол та PIC16CR84-ийн хямдхан нэг удаагийн програмчлагдсан аналогийг ашиглаж болно, хэрэв та үүнийг олох боломжтой бол.

Объектын хөдөлгөөний мэдрэгч - нээлттэй суваг AOT147B (U1, U2) бүхий транзистор оптокоуплер. Тэдний фототранзисторуудын ачаалал нь MK-д байдаг дотоод резисторууд юм. Тусдаа гэрэл ба фотодиод (фототранзистор) -аас бүрдэх оптокоуплер ашиглахыг зөвшөөрнө. Шаардлагатай бол оптик мэдрэгчийг бусад зүйлээр солино: соронзон, контакт, индуктив. Тэдгээрийг асаах үед MK-ийн харгалзах оролтууд дээр логик түвшин өөрчлөгдөх нь зөвхөн чухал юм.

Энэхүү төхөөрөмж нь Kingbright компанийн дөрвөн оронтой долоон сегментийн LED үзүүлэлт CA56-11SR ашигладаг. Долоон сегментийн LED индикаторыг нийтлэг байдлаар ашиглах боломжтойанод, жишээлбэл, дотоодын дөрвөн ALS324B. DR1 резисторын багц нь гэр бүлийг сольж болноердийн 300 ом эсэргүүцэл.Төхөөрөмжийг тоолуур болгон хувиргахын тулд MK DD2-ийн санах ойд оруулах шаардлагатай програмыг өгсөн болно.хүснэгтэд. 1. Цахилгаан асаалттай үед индикаторын бүх оронтой тоонд тэгүүд асна. "U1 сүүдэртэй" - "U1 ба U2 сүүдэртэй" - "U1 сүүдэргүй" - "U2 сүүдэрлэдэггүй" мөчлөгийн гүйцэтгэл бүрийн дараа уншилтууд нэгээр нэмэгддэг. Тоолуур нь буцаах боломжтой тул мэдрэгчийг асаах үед урвуу дарааллаар өдөөгдөхөд уншилтууд ижил хэмжээгээр буурна.- 9999 дараа нь тэг.

Циклийн дараагийн өгүүллээр тоолуурын хэлхээ, програмыг хэрхэн үүсгэж, дибаг хийсэн, түүнийг сайжруулах, нэмэлт функцуудыг нэвтрүүлэх талаар ярих болно. Энэ жишээ нь PIC16F84 MK-ийн үндсэн шинж чанарууд болон үнэгүй програмчлал, дибаг хийх хэрэгслүүдтэй хэрхэн ажиллахыг харуулах болно. Тэдгээрийг MPLAB багцад нэгтгэсэн бөгөөд хамгийн сүүлийн хувилбарыг интернетийн www.microchip.com эсвэл www.microchip.ru сайтаас "татаж авах" боломжтой. Эсвэл форумын хуудаснаасАЛЕКСАНДРА Үүнийг хэрхэн суулгах талаар мөн дэлгэрэнгүй тайлбарласан болно.

Хүснэгтээс код оруулахын тулд. MK-ийн дотоод санах ойд 1 програмист шаардлагатай. Гэсэн хэдий ч тэрээр интернет хуудаснаас код уншихыг "мэддэггүй" тул юуны өмнө та эдгээр код бүхий файлыг компьютерт программист "ойлгомжтой" форматаар үүсгэх хэрэгтэй. Хүснэгтэнд. 1-ийг Intel-ийн боловсруулсан HEX форматаар танилцуулсан бөгөөд энэ нь янз бүрийн зорилгоор ROM програмчлах де-факто стандарт болсон. (Ижил нэртэй бусад форматууд, жишээлбэл, Microchip HEX байхгүй гэдгийг би хэлэх ёстой, ийм нэрийг зөвхөн буруу ойлголтоор ашигладаг). Бусад компаниудын боловсруулсан ижил төстэй форматууд нь өргөн хэрэглээний программ олоогүй бөгөөд дүрмээр бол зөвхөн өөрсдийн дизайны техник хангамж, програм хангамжид зориулагдсан бөгөөд ихэнх нь Intel HEX форматыг "ойлгодог".

Кодыг компьютерт ямар ч текст засварлагч, түүний дотор Microsoft Word програмыг ашиглан яг заасан хэлбэрээр оруулна. таб. нэг.


Хэрэв танд сканнер болон FineReader гэх мэт текст таних програм байгаа бол тэдгээрийг ашиглаж болно. Гэхдээ сүүлийн тохиолдолд автоматаар таних нь төгс биш (алдаа гарах боломжтой) тул уншсан өгөгдлийг эх хувилбартай нь харьцуулах шаардлагатай болно. HEX дээр гэдгийг анхаарна ууфайлуудад зөвхөн хоёр цэгийн тэмдэгт, тоо болон латин үсэг A - F ашиглагддаг.Мөр бүр эхний байрлал дахь хоёр цэгээр эхэлж, ENTER товчийг дарснаар төгсдөг. Орон зайг зөвшөөрөхгүй. Та шивж дуусаад кодыг шалгасны дараа файлыг "Text DOS" эсвэл "Зөвхөн Текст" горимд хадгалж, *.hex өргөтгөлтэй нэр өгнө үү.

Ихэнхдээ програмын кодыг "санах ойн хаягдал" гэж нэрлэдэг хэлбэрээр нийтэлдэг. Энэ бол илүү визуал (HEX форматаас) хүснэгт юм. Энэ нь арван зургаатын тоо (ихэвчлэн дөрвөн оронтой) хаягаар эхэлсэн мөрүүдээс тогтдог ба дараа нь санах ойн дараалсан нүднүүдэд (байт) хадгалагдсан хоёр оронтой арван арван кодоор тусгаарлагдсан зайнаас бүрдэнэ. Мөрийн эхэнд байгаа хаяг нь нүднүүдийн эхнийхийг заадаг бөгөөд тэдгээр нь ихэвчлэн 16 байдаг. Харьцуулбал: таб. 2үүнтэй ижил өгөгдлийг агуулсан хогийн цэг энд байна таб. нэг. HEX ба дампыг дараах байдлаар нэгээс нөгөө рүү хялбархан хөрвүүлж болно (харна уу таб. 3).

Хоёр цэгийн дараах эхний хоёр тэмдэгт нь мөр дэх мэдээллийн байтуудын тоо юм. Энэ тохиолдолд 16 (10Х ). Үүний дараа эхний байтын хаяг (0020H), дараа нь хоёр оронтой мөрийн хуваарилалтын код орно.

0 - мөрөнд өгөгдөл агуулсан;

1 - файлын эцсийн мөр (:00000001 FF); Энэ нь өгөгдөл агуулаагүй, байтны тоо, хаяг нь тэг байна. Ихэнх тохиолдолд тэг байт нь мөрийг төгсгөл гэж танихад хангалттай;

2 - өгөгдлийн талбарт санах ойн сегментийн хаяг байгаа бөгөөд түүний эхлэлтэй харьцуулахад дараах мөрөнд заасан хаягуудыг тоолно. Сегментийн хаягийн хоёр байт өндөр-бага дарааллаар байгааг анхаарна уу. Одоогийн хаягуудад нэмэгдэх тоог сегментийн хаягийн хоёртын кодыг дөрвөн хоёртын цифрээр зүүн тийш шилжүүлэх, өөрөөр хэлбэл 16-аар үржүүлэх замаар олж авна;

3 - өгөгдлийн талбарт ердийн IBM PC CS:IP форматаар програмын эхлэх хаягийн дөрвөн байт байна;

4 - өгөгдлийн талбарт үнэмлэхүй хаягийн дөрвөн байт (дээдээс доод хүртэл) байгаа бөгөөд тэдгээрийн утгыг ямар ч өөрчлөлтгүйгээр дараах мөрөнд заасан хаягууд дээр нэмэх ёстой;

5 - 04-тэй адил боловч програмын эхлэх хаягийн үнэмлэхүй утгыг зааж өгнө.

0FFFFH-ээс их хаягийг зааж өгөх шаардлагатай бол 02 ба 04 гэсэн код бүхий мөрүүдийг ашиглана. Жижиг санах ойтой (PIC16F84 гэх мэт) MCU програмчлахад тэдгээр нь шаардлагагүй. Гэсэн хэдий ч заримдаа тэг эхлэх хаягийг заасан ижил төстэй мөрийг HEX файлын эхэнд байрлуулдаг. Үүнийг өвдөлтгүй арилгах боломжтой.

MK програмын эхлэх хаяг нь ихэнхдээ сүүлийн үеийн архитектураар тодорхойлогддог тул өөрчлөх боломжгүй тул 03 ба 05 код бүхий мөрүүд маш ховор байдаг. PICmicro гэр бүлийн MK-д энэ нь тэг юм.

Очих кодын араас мөрийн эхэнд заасан байтын тоогоор өгөгдлийн талбар гарч ирнэ. Мөр нь хяналтын байтаар дуусгавар болно. Түүний утгыг тооцоолох алгоритм нь маш энгийн: мөрийн бүх байтуудын нийлбэрийн хамгийн бага ач холбогдол бүхий найман бит, түүний урт, хоёр хаягийн байт, очих код, өгөгдөл, хяналт зэрэг нь тэгтэй тэнцүү байх ёстой.

HEX формат нь анх 8 битийн өгөгдлийг хадгалахад зориулагдсан. Илүү их багтаамжтай кодуудыг харгалзах тооны байт болгон хуваадаг бөгөөд тэдгээр нь файлд баганаас өндөр хүртэлх дарааллаар бичигддэг. Жишээлбэл, MK IS16F84-ийн 14 битийн заавар бүрт хоёр байт хуваарилагдсан бөгөөд хоёр дахь байтын хамгийн чухал хоёр бит чөлөөтэй хэвээр байна (энэ байт дахь код нь 3FH-ээс хэтрэхгүй).

Үүний үр дүнд HEX файл дахь хаягууд нь програмын зааврын бодит хаягтай харьцуулахад хоёр дахин нэмэгддэг. Жишээлбэл, шугам

:080008008C0003088D000408C0 нь програмын кодуудын ийм дарааллыг тодорхойлдог;

Хаягийн код

4008С

5 0803

6008D

7 0804

Зарим програм хангамжийн хэрэгслүүд (дүрмээр бол IBM-тэй нийцтэй компьютерээс удмын бичгээ хөтлөх) файлд бичиж, өгөгдлийн байтыг урвуу дарааллаар хүлээн авдаг - хуучин нь, дараа нь залуу. Хэрэв програмист файлыг зөв уншихыг хүсэхгүй байгаа "дэггүй" бол та үүнийг анхаарч үзэх хэрэгтэй.

Тайлбарласан олон бит өгөгдлийн дүрслэлийн форматыг ихэвчлэн нэгтгэсэн гэж нэрлэдэг. Заримдаа өөр сонголт байдаг: HEX файл нь хоёр хуваагддаг бөгөөд тэдгээрийн нэг нь бүх доод байт, хоёр дахь нь програмын үгсийн бүх дээд байтуудыг агуулдаг. Энэ форматыг Splitted гэж нэрлэдэг.

Файл нь кодуудын тасралтгүй дарааллыг заагаагүй байж болохыг анхаарна уу. Жишээлбэл, эхний хоёр мөрөнд байгаа кодуудын хооронд таб. нэгзургаан байт зай бөглөөгүй хэвээр байна (гурван програмын заавар). HEX формат нь тэдгээрийн агуулгын талаар ямар ч мэдээлэл өгдөггүй. Програмистын алгоритмаас хамааран тэдгээр нь програмчлагдаагүй анхны төлөвт үлддэг эсвэл өмнө нь бүртгэгдсэн кодуудыг хадгалдаг. AT таб. 2ашиглагдаагүй нүднүүдийг тэг кодоор дүүргэсэн.

Таны мэдэж байгаагаар MK нь янз бүрийн зориулалттай байнгын санах ойг агуулдаг: FLASH эсвэл програмд ​​зориулж нэг удаагийн програмчлагдах боломжтой, өгөгдөлд зориулсан EEPROM, MK-ийг тохируулах, таних тусгай эсүүд. Эдгээр газруудад зориулагдсан мэдээлэл нь ихэвчлэн тусдаа файлууд болон хадгалагддаг

програмчлалын хувьд та яг хаана бичихээ гараар зааж өгөх хэрэгтэй. Гэхдээ PICmicro гэр бүлд бүх зүйлийг нэг HEX файлд нэгтгэх шийдвэр гаргасан. MK процессорын хувьд өөр өөр хаягийн орон зайд байрладаг дээр дурдсан хэсгүүдийг програмистын үүднээс нэг болгон нэгтгэдэг. PIC16F84-ийн хувьд хуваарилалт дараах байдалтай байна (хаалтанд - "байт" хаягууд):

0-3FFH (0-7FFH) - програмын кодууд; илүү том санах ойтой MK-ийн хувьд энэ хэсгийг 1FFFH (3FFFH) болгон өргөжүүлж болно;

2000N-2003N (4000N-4007N) - таних кодууд;

2007H (400EN, 400FH) - тохиргооны үг;

2100H-213FH (4200H-427FH) - 0-3FH EEPROM хаяг руу бичсэн кодууд.

EEPROM-ийн зохион байгуулалт нь найман биттэй хэдий ч энэ тохиолдолд HEX файл дахь түүнд зориулагдсан код тус бүрд хоёр байт хуваарилагдсан бөгөөд хамгийн дээд нь тэг агуулгатай байна.

ҮРГЭЛЖЛЭЛ БИЙ >>>>>

БҮХ АСУУЛТ АСУУДАЛ

Тиймээс, хэрэв програм суулгасан бол түүний боломжуудыг судалж эхэлцгээе.

Бид микроконтроллерийг програмчлалын самбарт суулгаж, программистыг компьютерт холбож, "PICkit 2 Programmer" -ыг ажиллуулна.

Хөтөлбөрийг эхлүүлэх үед программистаас санал асуулга явуулж, таних битүүдээр (төхөөрөмжийн ID гэж нэрлэгддэг) програмчлагдсан микроконтроллерийн төрлийг автоматаар тодорхойлдог. Анхаар! Baseline гэр бүлийн чипүүд, түүнчлэн EEPROM болон KeeLOG чипүүдэд төхөөрөмжийн ID байхгүй байна. Хөтөлбөрийг эдгээр микро схемүүдтэй ажиллахын тулд та "Төхөөрөмжийн гэр бүл" цэсээр тодорхой бүтээгдэхүүнийг сонгох хэрэгтэй.

Хэрэв ийм найрсаг зургийн оронд энэ зураг гарч ирвэл ...

Дараа нь та USB кабель зөв холбогдсон эсэхийг шалгаж, "Хэрэгслүүд" - "Харилцаа шалгах" цэсээр дамжуулан төхөөрөмжийг дахин холбоно уу.

Програм хангамжийн файлыг нээж байна.

MK програмыг санах ойд бичихийн тулд та "Файл" - "Импорт Hex" цэсийн зүйлийг сонгох ёстой.

Дараа нь нээгдэх цонхноос хүссэн програмын файлыг сонгоно уу.

Үүний дараа програмын санах ой (Program Memory) болон өгөгдөл (EEPROM Data) цонхонд .hex файлын агуулгыг харуулах болно.

Хөтөлбөрийг MK дээр бичиж байна.

Одоо та MK-г програмчилж болно. Үүнийг хийхийн тулд "Бичих" товчийг дарна уу. Бичлэг хийх процесс 3-5 секунд үргэлжилнэ.

"Програмчлал амжилттай" гэсэн бичээс нь бичлэгийн процедур амжилттай дууссан тухай танд мэдэгдэх болно.

Илүү итгэлтэй байхын тулд та баталгаажуулах процедурыг хийж болно. "Баталгаажуулах" товчийг дарахад программ нь зургаан өнцөгт файлын өгөгдөл болон MK-д бүртгэгдсэн өгөгдлийг харьцуулдаг. Хэрэв баталгаажуулалт амжилттай болсон бол мессежийн хайрцагт "Баталгаажуулалт амжилттай" гарч ирнэ.

Анхаар!Хэрэв та PIC12F675, PIC12F629 болон ижил төстэй микроконтроллеруудыг дотоод цаг үүсгэгчээр анивчуулж байгаа бол баталгаажуулалтын явцад алдаа гарч болзошгүй. Баримт нь PICkit2 программист (хувилбар 6.21) нь тохируулгын тогтмолыг хадгалж, дараа нь MK-ийн сүүлчийн санах ойд бичдэг. Анхны програмын файл болон санах ойд бичигдсэн өгөгдөл өөр байх болно гэдгийг ойлгож байна. Шалгалт тохируулгын тогтмолыг дараа хэлэлцэх болно.

Түргэн товчлуурууд.

"Auto Import Hex + Write Device" товчлуур нь нэг товчлуур дээр дарж MK руу "програм хангамжийг жолоодох" хүсэлтэй хүмүүст таалагдах болно. Нэг товшилтоор програм нь програмын файлыг сонгохыг хүсэх болно, дараа нь тэр даруй MK руу бичнэ үү.

"Төхөөрөмжийг унших + Hex файлыг экспортлох" товчлуур нь эсрэг функцийг гүйцэтгэдэг - энэ нь MK-аас өгөгдлийг уншиж, програмын файлыг .hex файлд хадгалахыг санал болгодог.

Тохиргооны битүүдийг өөрчлөх.

Тохируулгын битүүд нь MK-ийн үйл ажиллагааны үндсэн параметрүүдийг тогтоодог. Энэ бол генераторын төрөл (кварц, RC хэлхээ), "харуулын цаг хэмжигч" гэж нэрлэгддэг төхөөрөмжийг идэвхжүүлэх / идэвхгүй болгох, програмын санах ойг уншихаас хамгаалах хамгаалалтыг тохируулах болон бусад. Дүрмээр бол, MK (програм) -ын үйлдлийн алгоритмыг бичихдээ тохиргооны битүүдэд бичих шаардлагатай утгуудыг бичдэг. Анивчих үед бүрхүүл нь програмын файлаас тохиргооны өгөгдлийг авдаг бөгөөд энэ өгөгдлийг зааж өгөхийг албадах шаардлагагүй болно.

Гэхдээ эхлэгчдэд бид тодорхой тохиргооны битүүдийг хэрхэн харах, өөрчлөх талаар мэдэх нь илүүц байх болно. Үүнийг хийхийн тулд "Тохиргоо" гэсэн бичээс дээр дарна уу. Тохиргооны битүүдийг засах цонх нээгдэнэ.

Хэрэв та 0-ийг 1 болгон өөрчлөх шаардлагатай бол "Хадгалах" дээр дарна уу. Угаасаа ухамсартайгаар өөрчлөх хэрэгтэй. Би давтан хэлье, бэлэн програм хангамжийн файлыг ашиглахдаа та юу ч өөрчлөх шаардлагагүй, програм бүх зүйлийг автоматаар хийх болно.

Микроконтроллерийн загварыг сонгох.

Микроконтроллерууд нь өөр өөр байдаг. Тиймээс MK-г програмчлахдаа микроконтроллерийн тодорхой загварыг зааж өгөх шаардлагатай байж магадгүй юм. "Төхөөрөмжийн гэр бүл" цэсийн зүйлийг сонгоход микроконтроллерийн гэр бүлийн жагсаалт гарч ирнэ. Энэ жагсаалтад EEPROM санах ойн чипүүд бас байдаг.

Микроконтроллеруудаас ялгаатай нь EEPROM санах ойн чипүүд нь "Хэрэгслүүд" - "Харилцаа шалгах" командаар автоматаар илрүүлдэггүй. Тиймээс хөтөлбөрт EEPROM чипүүдийг унших / бичихдээ чипийн тэмдэглэгээг зааж өгөх ёстой.

Цэсээс "Төхөөрөмжийн гэр бүл" - "EEPROMS" - "24LC" гэсэн зүйлийг сонгоно уу.

Шалгалт тохируулгын тогтмол.

Таны мэдэж байгаагаар микроконтроллер ажиллахын тулд цагны генераторыг шаарддаг. Энэ генераторын давтамжийг тохируулах элемент нь гадаад кварцын резонатор, RC хэлхээ байж болно. Гэхдээ PIC микроконтроллеруудын дунд микро схемд шаардлагатай жолоодлогын хэлхээг агуулсан байдаг. Ийм MK-д жишээлбэл, PIC12F629, PIC12F675 орно.

Үйлдвэрт ийм микроконтроллеруудын санах ойд тусгай тогтмолыг бичдэг бөгөөд энэ нь суурилуулсан осцилляторын параметрүүдийг 4 МГц давтамжтайгаар тохируулдаг. Энэхүү 34xx тохируулгын тогтмол нь 0x3FF дахь програмын санах ойн сүүлийн байршилд бичигдсэн байдаг.

Микроконтроллерыг програмчлахдаа энэ тогтмол арилгахад хялбар. Хэдийгээр PICkit2 Programmer 2.61 хувилбар нь энэ тогтмолыг автоматаар хадгалж, програмчлалын явцад бичдэг ч OSCCAL тогтмолын утгыг бичих нь илүүц байх болно.

Шаардлагатай бол тогтмолыг гараар хялбархан зааж өгч болно. Үүнийг хийхийн тулд "Хэрэгслүүд" - "OSCCAL" - "Гараар тохируулах" цэсийн зүйлийг сонгоно уу.

"OSCCAL утга" талбарт тогтмолын урьд нь бүртгэгдсэн утгыг зааж өгнө. "Тохиргоо" товчийг дарна уу.

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

Эхлэгчдэд зориулсан микроконтроллер. Видео хичээл. Бид програмыг микроконтроллерт бичдэг (бид чипийг анивчдаг)

________________________________________________________________________________________________________

Микроконтроллерийн зүү дээрх хүчдэлийг хянадаг анхны энгийн програм. CodeVisionAVR засварлагч дээр програмчлал хийх. Програмыг микроконтроллерийн санах ойд шилжүүлэх (чип програм хангамж). татаж авах(36 MB)


Агуулга

Хэрэв видео бичлэг хийгдээгүй бол тохируулна ууFlash тоглуулагч болон дууны картыг шалгах, эсвэлтатаж авах материал (36 MB). Хэрэв видеоны оронд ногоон дэлгэц байгаа бол флаш тоглуулагчийг дахин суулгана уу Хамгийн сүүлийн үеийн хувилбар). Хэрэв видео "тахирч" байвал түүнийг түр зогсоож, бага зэрэг ачаална уу. Гэрийн төхөөрөмж дээр флаш видео үзэх тоглуулагч. Видеог бүтэн дэлгэцээр дэлгэнэ үү. Хэрэв тэд "Видео олдсонгүй", "Видео олдсонгүй" гэж бичвэл видеог дахин эхлүүлнэ үү.

CodeVisionAVR засварлагч - албан ёсны сайт

Хэрэв микроконтроллер анивчаагүй бол:
1) Санаа зовох хэрэггүй. Загвараа хойш тавиад завсарлага аваад цайгаа ууж амраарай. Бодит загварууд анх удаа ажиллах нь ховор байдаг - энэ нь ялангуяа эхлэгчдэд хэвийн үзэгдэл юм (учир нь тархи тэр даруй ойлгох боломжгүй олон тооны үл тоомсорлодог хүчин зүйлүүд байдаг).
Мэргэжлийн хөгжүүлэгчид загвараа хэдэн арван удаа дахин хийдэг :)))
Тархины сонирхолтой шинж чанар:Марк Твений хэлсэнчлэн "Маргааш хойш тавьж болох зүйлээ маргааш болтол бүү хойшлуул". Заримдаа хоосон зайд програм бичих, электрон хэлхээ хийх гэх мэт боломжгүй байдаг. Энэ тохиолдолд та нэмэлт хүчин чармайлт гаргах шаардлагагүй болно. Даалгавраа далд ухамсарт тавиад хэдэн өдөр хүлээ. Завсарлагааны дараа бүх зүйл өөрөө бүтдэг. Өглөөнөөс орой болтол ижилхэн хоёр өдөр зовж байснаас хамаагүй хурдан бөгөөд илүү дээр.

2) Амарсаны дараа дахин сайтар шалгана уу:
Хоол хүнс - 4.5 вольтоос багагүй байна, үүнийг программист холбогдсон компьютерийн USB-ээс авахыг зөвлөж байна (боломжтой тэнцүү гүйдлийг оруулахгүйн тулд). Хүчдэлийг шалгагчаар шалгах;
Компьютерээс программист хүрэх утас хэтэрхий урт байна уу?Урт утаснууд саад болж, өгөгдөл дамжуулах алдаа гарах магадлал нэмэгддэг;
Дотор нь кабель тасарсан байж болох уу?Бүх утсыг шалгагчаар холбоно уу.
Утаснууд нь холилдсон уу? MOSI, MISO, SCK, дахин тохируулах, GND, зөв ​​газартаа гацсан уу?
Программист зөв тохируулагдсан уу Тохиргоо >> Программист;
Project >> Configure >> C Compiler;
Кристалын төрөл зөв үү Хэрэгсэл >> Чип программист;

Fuzy хүрээгүй юу?Хэрэв хүрвэл та гаднах кварц тавих хэрэгтэй болно.
Чипийг анивчахаас өмнө цэвэрлэсэн үү? Хэрэгсэл >> Чип программист >> Програм >> Чипийг устгах;
Заримдаа чипийг цэвэрлэх нь тусалдаг. Хэрэгсэл >> Чип программисттом к
Чипийг дахин тохируулах товчлуур (RESET зүү рүү импульс илгээхтэй тэнцүү);
Үүнийг цонхны доод талд тавь Хэрэгсэл >> Чип программистгурван хачиг Гарын үсгийг шалгана уу, Устгасан эсэхийг шалгана уу , Баталгаажуулах ;
Эсвэл эсрэгээр - эдгээр нүднүүдийн сонголтыг арилгана уу. Ингэж, тэгж туршаад үзээрэй.
Хэрэв бүх зүйл бүтэлгүйтвэл шинэ чип захиалах. Хаа нэг газраас сугалж авсан чип нь шатаж, гадаад генератор руу тааруулж, шатсан тээглүүр гэх мэт байж болно.
Тийм ээ, мөн дэлгүүрт тэд заримдаа согогтой хөхсөн, tk. Тэд хэн мэдэхийг хаана хадгалдаг. Заримдаа хуучин чипэнд юу тохиолдсоныг бодохоос илүү шинэ чип худалдаж авах нь илүү хялбар байдаг (гэхдээ үүнийг бүү хая, туршлага хуримтлуулах үед - дахин бүтээх).
Хэрэв та хуучин компьютер олсон бол оролдоорой
э хийх LPT програмист(Гэнэт гэмтэлтэй USB программист хальтирсан уу?). LPT програмистаас илүү энгийн зүйл байхгүй; Би үүнийг хэдэн арван компьютер дээр хийсэн - тэр даруй ажиллаж эхэлсэн бөгөөд хэзээ ч алдаа гардаггүй.
Суулгахаасаа өмнө санаарай гараа газар o зай, усны цорго, эсвэл том ган хийц (хашаа, номын тавиур) эсвэл антистатик бугуйн оосор эсвэл дэвсгэр худалдаж аваарай (гараас гарах статик цахилгаан нь бүдгэрсэн микро схемийг гэмтээж болно).
Эцэст нь, хамгийн гажуудсан арга - өөр компьютер оролдож үзнэ үү. Эх хавтан нь алдаатай, портууд нь шатаж, контактуудын утаснууд холдох гэх мэт тохиолддог.

Микроконтроллеруудыг зөвхөн энэ сайтын видео бичлэгээс сур. Тархинд олон янз байдал хэрэгтэй. Ном, форум, Википедиа болон бусад сайтуудыг уншина уу. Электроникийн найзуудаасаа зөвлөгөө аваарай. Дадлага хийж, бие даан туршиж үзээрэй. Мэдлэг, туршлага хуримтлуулах.