Სარჩევი:

დაწყება Bascom AVR– ით: 5 ნაბიჯი
დაწყება Bascom AVR– ით: 5 ნაბიჯი

ვიდეო: დაწყება Bascom AVR– ით: 5 ნაბიჯი

ვიდეო: დაწყება Bascom AVR– ით: 5 ნაბიჯი
ვიდეო: რა არის დროფშიფინგი და ღირს თუ არა დაწყება? 2024, ივლისი
Anonim
დაწყება Bascom AVR– ით
დაწყება Bascom AVR– ით

ეს არის სერიის დასაწყისი, რომელიც გასწავლით თქვენი AVR მიკროკონტროლის პროგრამირებას Bascom AVR– ით.

რატომ ვაკეთებ ამას.

ამ სერიის პროგრამული ნიმუშების უმეტესობა შეგიძლიათ გააკეთოთ არდუინოსთან ერთად.

ზოგი უფრო ადვილი და ზოგი უფრო რთული, მაგრამ ბოლოს ორივე მუშაობს ერთსა და იმავე კონტროლერზე.

მაგრამ პროგრამირების გზა განსხვავებულია განვითარების ყველა გარემოში. არდუინოს სჭირდება ბიბლიოთეკა ყველაფრისთვის, ძირითადი ფუნქციების გარდა. ბასკომი ასევე მუშაობს ბიბლიოთეკებთან, მაგრამ მე იშვიათად მიწევს ერთის ჩართვა. Arduino– სთან ერთად, ყველა ტექნიკის სპეციფიკური პარამეტრი ხდება ბიბლიოთეკების საშუალებით. თქვენ ძალიან მცირე გავლენა გაქვთ მიკროკონტროლის რეალურ ძალაზე. დაწყებული ქრონომეტრებით, რაც კონტროლერს აქვს. არდუინოსთან ერთად ისევ გჭირდებათ ბიბლიოთეკა. თუ თქვენ გაქვთ ტაიმერი სანამ ის მუშაობს, შეიძლება სხვა ბიბლიოთეკა ეჯახება თქვენს პარამეტრებს. Bascom– ში თქვენ გაქვთ უფასო წვდომა სრულ აპარატურაზე ჩათვლით ჩატვირთვის სექტორში, რომელიც დაკავებულია 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µF ელექტროლიტური კონდენსატორი

რამდენიმე მავთული პურის დაფისთვის

Windows PC 7/8/8.1/10

ინტერნეტ პროვაიდერი

Bascom AVR (აქ შეგიძლიათ გადმოწეროთ DEMO. ყველა ფუნქცია განბლოკილია, მაგრამ შეგიძლიათ დაწეროთ კოდი მხოლოდ 4Kb ზომისთვის, რაც საკმარისია მრავალი კოდისთვის).

არჩევითი ნაწილები:

LED არის რეზისტენტებით

ბიძგი კონცენტრატორები

პროექტის სპეციფიკური ნაწილები

ნაბიჯი 1: Bascom– ის დაყენება და დაყენება

Bascom– ის დაყენება და დაყენება
Bascom– ის დაყენება და დაყენება
Bascom– ის დაყენება და დაყენება
Bascom– ის დაყენება და დაყენება
Bascom– ის დაყენება და დაყენება
Bascom– ის დაყენება და დაყენება

ჩამოტვირთეთ ფაილი და დააინსტალირეთ Bascom AVR. დააინსტალირეთ მისი ყველა ნაწილი ინსტალაციის შემდეგ ბოლო ჩამრთველის ჩათვლით.

ამის შემდეგ გადატვირთეთ კომპიუტერი, წინააღმდეგ შემთხვევაში bascom არ დაიწყება.

გადატვირთვის შემდეგ დაიწყეთ ბასკომი.

გადადით პარამეტრებზე -> პროგრამისტი და აირჩიეთ USBasp სიიდან, შეინახეთ პარამეტრები და დახურეთ Bascom.

გამოიყენეთ ეს პროგრამა usbasp– ის დასაყენებლად. ამის შემდეგ, კვლავ გადატვირთეთ კომპიუტერი. ახლა შეაერთეთ USBasp თქვენს კომპიუტერთან და დაიწყეთ მოწყობილობის მენეჯერი. USBasp უნდა გამოჩნდეს libusb მოწყობილობებზე.

კვლავ დააბრუნეთ Stat Bascom და შექმენით ახალი ფაილი. შეინახეთ იგი თქვენს კომპიუტერში და დააჭირეთ ღილაკს F7 თქვენს კლავიატურაზე.

შემდგენელი იწყებს და ადგენს ცარიელ პროგრამას. ახლა თქვენ შეგიძლიათ შეამოწმოთ პროგრამისტის ფუნქციონირება.

დააჭირეთ კლავიატურაზე F4 ღილაკს პროგრამისტის ფანჯრის დასაწყებად. ახლა გადადით ჩიპზე -> იდენტიფიკაცია, რათა დაიწყოთ ურთიერთქმედება. LED– ები USBasp– დან ახლა მოკლედ უნდა აციმციმდეს. თქვენ უნდა მიიღოთ შეტყობინება, როგორიცაა ჩიპი Id FFFFFF ვერ წაიკითხა მოწყობილობა. ეს კარგი ნიშანია, რომ პროგრამისტი მუშაობს, მაგრამ ვერ იპოვა ჩიპი.

ახლა ჩვენ შეგვიძლია დავიწყოთ პირველი წრის აგება.

ნაბიჯი 2: მოდით უფრო ახლოს შევხედოთ ჩიპს

მოდით შევხედოთ ჩიპს
მოდით შევხედოთ ჩიპს

თუ გადავხედავთ ჩიპის პინუტს, როგორც ჩანს ჩიპს არ აქვს მსგავსება არდუინოს დაფასთან. რა თქმა უნდა, ჩვენ ვიყენებთ 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 საათის წყარო /ტაიმერი /Counter0 საათის წყარო

XTAL /TOSC ქინძისთავები განკუთვნილია გარე ბროლისთვის 16 MHz– მდე (სხვადასხვა მოდელები 20 MHz– მდე) /ბროლის ქინძისთავები შიდა RTC– სთვის

T1 მსგავსია T0

AIN ქინძისთავები განკუთვნილია ანალოგური შედარებისთვის

ICP1 მსგავსია T0/T1

OC1A არის აპარატურის გამომავალი პინი pwm timer1 არხისთვის

SS / OC2 ჩიპი შეარჩიეთ პინი SPI- სთვის / ისევე როგორც OC1B მაგრამ არხი B

MOSI MISO SCK / OC2 არის ტექნიკური SPI ქინძისთავები და ქინძისთავები პროგრამირების / PWM გამომავალი ქრონომეტრისთვის 2

ADC0 to ADC5 არის ანალოგური შეყვანა

SDA SCL არის ქინძისთავები I2C აპარატურისთვის

ჩვეულებრივ ჩიპს შეუძლია იმუშაოს 4, 5V– დან 5, 5V– მდე Atmega 8L– ს შეუძლია იმუშაოს გაცილებით დაბალი ძაბვით.

ხედავთ, ამ ჩიპსაც კი შეუძლია იმაზე მეტის გაკეთება, ვიდრე Arduino Uno– ს არ შეუძლია. მაგრამ Arduino– ს შეუძლია ამის გაკეთებაც, თქვენ მხოლოდ მისი დაპროგრამება გჭირდებათ.

ნაბიჯი 3: პირველი წრე

პირველი წრე
პირველი წრე
პირველი წრე
პირველი წრე

ახლა დროა ავაშენოთ თქვენი პირველი წრე.

რა არის ჩვეულებრივ პირველი წრე? მართალია! მოდით დავხუჭოთ LED.

LED უკავშირდება PB0– ს. რეზისტორს ჩიპის გვერდით აქვს 10k Ohms.

რეზისტორს LED- ის გვერდით აქვს 470 Ohms.

ახლა თქვენ შეგიძლიათ დააკავშიროთ USBasp Atmega– სთან, როგორც ეს მოცემულია სურათზე.

მაგრამ სანამ ჩართავთ ენერგიას, მოდით დავწეროთ პროგრამა.

ნაბიჯი 4: დაწერეთ პირველი პროგრამა

დაწერეთ პირველი პროგრამა
დაწერეთ პირველი პროგრამა

შექმენით ახალი ფაილი Bascom– ში და ჩაწერეთ შემდეგი ტექსტი.

$ regfile "m8def.dat"

$ კრისტალი = 1000000 კონფიგურაცია portb.0 = გამომავალი do portb.0 = 1 ლოდინი 1 პორტი.0 = 0 ლოდინი 1 მარყუჟი

ამის შემდეგ შეადგინეთ იგი კლავიატურაზე F7 დაჭერით.

ახლა ჩვენ შეგვიძლია ჩიპის დაპროგრამება F4 დაჭერით. გამოჩნდება პროგრამისტის ფანჯარა. ახლა დროა ენერგია ჩართოთ პურის დაფაზე. თქვენ უნდა გამოიყენოთ რაღაც 6 -დან 12 ვოლტამდე.

ახლა გადადით ჩიპზე -> ავტოპროგრამზე. თუ პროგრამისტის ფანჯარა დაიხურება ავტომატურად პროგრამირება წარმატებული იყო.

LED უნდა ანათებდეს ერთ მეორე სიხშირეზე.

ახლა უფრო ახლოს დაათვალიერეთ პროგრამა სინტაქსის გასაგებად.

$ regfile "m8def.dat"

ბროლი $ = 1000000

$ regfile– ით ჩვენ ვეუბნებით შემდგენელს გამოყენებული ჩიპის ტიპს, რომლის სახელიც Arduino იქნება "m328pdef.dat"

$ ბროლით ჩვენ მას ვეუბნებით cpu სიჩქარეს დაახლოებით 1 MHz.

config portb.0 = გამომავალი

ეს ნიშნავს, რომ PB0 უნდა იმოქმედოს როგორც გამომავალი.

სხვათა შორის, აბრევიატურა PB0 ნიშნავს პორტს B bit 0. ჩიპი დაყოფილია რამდენიმე პორტად. თითოეულ პორტს ეძლევა წერილი მკაფიო იდენტიფიკაციისთვის. და თითოეული პორტფინი ცოტათი 0 -დან 7. მაგალითად, შემიძლია დავწერო სრული ბაიტი პორტის გამომავალ რეგისტრში, რომელიც გამოვა ცალკეული პორტის ქინძისთავების საშუალებით.

კეთება

მარყუჟი

ეს არის ის, რაც არდუინოში ნიშნავს ბათილი მარყუჟის განცხადებას. ამ ორ ბრძანებას შორის სამუდამოდ განმეორდება. (ზოგიერთი გამონაკლისის გარდა, მაგრამ მოგვიანებით ამის შესახებ)

პორტბ.0 = 1

დაელოდეთ 1 პორტს.0 = 0 დაელოდეთ 1

აქ ჩვენ gernerate მოციმციმე of led.

Portb.0 = 1 ეუბნება ჩიპს, რომ შეცვალოს გამომავალი PB0 5V

ლოდინის 1 ბრძანება ჩიპს დაელოდეთ ერთ წამს. თუ გსურთ led- ის უფრო სწრაფად გადართვა თქვენ უნდა შეცვალოთ ლოდინის ბრძანება ელოდებით ახლა თქვენ შეგიძლიათ დრო შეიყვანოთ მილიწამებში მაგ. ელოდება 500. (ლოდინი ნიშნავს ლოდინს ნანოწამებში)

Portb.0 = 0 ეუბნება ჩიპს, რომ შეცვალოს გამომავალი PB0 0V.

ნაბიჯი 5: დაამატეთ ღილაკი შეყვანის გამოსაყენებლად

დაამატეთ ღილაკი შეყვანის გამოსაყენებლად
დაამატეთ ღილაკი შეყვანის გამოსაყენებლად

ახლა ჩვენ დავამატებთ ღილაკს რომ განათდეს led თუ ღილაკზე დაჭერით.

ჩადეთ ღილაკი როგორც სურათზეა ნაჩვენები.

ახლა ჩაწერეთ შემდეგი პროგრამა.

$ regfile "m8def.dat"

$ კრისტალი = 1000000 კონფიგურაცია portb.0 = გამომავალი კონფიგურაცია portd.7 = შეყვანა Portd.7 = 1 გააკეთეთ თუ pind.7 = 0 მაშინ portb.0 = 1 სხვა პორტი.0 = 0 მარყუჟი

თუ თქვენ ატვირთავთ ამ პროგრამას ჩიპზე, led მხოლოდ ანათებს ღილაკზე დაჭერისას. Მაგრამ რატომ?

პროგრამა იწყება იდენტურად, როგორც ბოლო

config portd.7 = შეყვანა. ეს ნიშნავს, რომ პინ PD7, რომელიც დაკავშირებულია ღილაკთან, მოქმედებს როგორც შეყვანა.

Portd.7 = 1 არ ცვლის პინს მაღალზე, მაგრამ ააქტიურებს ატმეგას შიდა გამწევ რეზისტორს.

If statemend გამოიყურება ცოტა უცნაურად, თუ თქვენ მიჩვეული ხართ არდუინოს.

თუ იყენებთ if განცხადებას, თქვენ უნდა გამოიყენოთ "მაშინ" განცხადება. ამ ნიმუშში if განცხადება გამოიყენება ერთი ბრძანების ოპერაციებისთვის. თუ გსურთ გამოიყენოთ მეტი ბრძანება, თქვენ უნდა დაწეროთ ეს ასე.

თუ pind.7 = 0 მაშინ

portb.0 = 1 ზოგიერთი კოდი ზოგიერთი კოდი სხვა კოდი portb.0 = 0 დასრულდება თუ

if განცხადების ამ გამოყენებისთვის თქვენ უნდა გამოიყენოთ "end if" განცხადება ბოლოს.

რაც ჯერ კიდევ მნიშვნელოვანია. ალბათ თქვენ უკვე გინახავთ. შეყვანა არ იკითხება portx.x– ით, არამედ pinx.x– ით. ამის გახსენება მარტივად შეგიძლიათ. ამონაწერებს აქვთ "o" (პორტი) სიტყვაში და შეყვანისას აქვს "i" (პინი).

ახლა თქვენი ჯერია ცოტათი ვითამაშოთ.

ჩემი შემდეგი ინსტრუქცია მალე მოვა (სტანდარტული განცხადებები, როგორიცაა while, select case, for და variables.)

თუ მოგწონთ ჩემი ინსტრუქტაჟი და გსურთ მეტი მითხრათ კომენტარებში.

გირჩევთ: