Gallery

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

მიკროკონტროლერი. დღე 1.  

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


შევადგინოთ და გამოვცადოთ პროგრამა Atmega8 მიკროკონტროლერისათვის, რომელიც უზრუნველყოფს შუქდიოდის ციმციმს. დაგვჭირდება მხოლოდ ორი პროგრამა:
1. Algorithm builder  http://www.algrom.net/russian.html
2. Proteus   https://www.box.com/s/jtkzmzq6gs2726d8cnrw

პირველი მათგანი – Algorithm builder  წარმოადგენს გრაფიკულ კომპილატორს, რომელიც იძლევა ფირმა Atmel-ის მიკროკონტროლერებისათვის პროგრამული კოდის  შედგენის საშუალებას პროგრამირების გარეშე.
მეორე პროგრამული პროდუქტი – Proteus  შეიცავს  ელექტრონული მოწყობილობების პრინციპული სქემების შექმნის და მათი მუშაობის მოდელირების პროგრამას –ISIS და ნაბეჭდი დაფების პროექტირების პროგრამას –ARES.  ჩვენ ამ სისტემიდან გამოვიყენებთ მხოლოდ პირველ მათგანს.
თქვენს კომპიუტერში, სადმე, მაგ., “My Documents” ფოლდერში შექმენით ახალი ფოლდერი “mc1day” .
დააინსტალირეთ და გაუშვით Algorithm builder . ამოირჩიეთ File, New.
მენიუში აირჩიეთ „Options” “Project Options” და “Chip” ჩამონათვალში მონიშნეთ Atmega8.
იქვე “Clock frequency,Hz” ფანჯარაში ჩაწერეთ 1000000. ამრიგად მოვახდინეთ მიკროკონტროლერის ტიპისა და მისი სატაქტო სიხშირის ამორჩევა. ერთი ტაქტის ანუ ერთი ბრძანების შესრულების დრო ამ სიხშირის შებრუნებული სიდიდის (ანუ, ჩვენს შემთხვევაში, 1 მიკროსეკუნდის) ტოლი იქნება.
მენიუში აირჩიეთ „File” “Save As” და შეინახეთ პროექტი თქვენს მიერ შექმნილ ფოლდერში იმავე სახელით “mc1day”.

        |
       NOP

“|”   სიმბოლო აღნიშნავს პროგრამის ან ქვეპროგრამის დასაწყისს -„Vertex”. გადაინაცვლეთ ამ სიმბოლოზე და დაარქვით მას “RESET”. ჩვენს პროგრამაში ეს ის წერტილია, საიდანაც იწყება პროგრამის შესრულება კვების წყაროს ჩართვისას. იმისთვის, რომ ეს სწორედ ასეა და RESET არ არის უბრალოდ ქვეპროგრამა, საჭიროა, რომ „RESET” იყოს გამუქებული (Bold). ეს მიიღწევა F2 კლავიშის დაჭერით ან მენიუში „Elements” “Bold” ამორჩევით.

    |RESET
  NOP

NOP – ცარიელი ბრძანებაა, მისი შესრულებისას არავითარი ოპერაცია არ სრულდება, უბრალოდ ხდება ერთი ტაქტის გამოტოვება.  „<- Backspace” კლავიშის საშუალებით წაშალეთ იგი და მის ნაცვლად ჩაწერეთ:

        | RESET
$FF -> R16

სიმბოლო “ -> ” მიიღება „~” კლავიშზე დაჭერით და აღნიშნავს მინიჭების ოპერაციას. ჩვენი ჩანაწერი კი შეესაბამება ბრძანებას „თექვსმეტობითი რიცხვი FF გადაგზავნე რეგისტრში R16” (შეგახსენებთ, რომ თექვსმეტობითი FF უდრის ორობით რიცხვს 1111 1111).  რა თქმა უნდა, $FF-ის ნაცვლად შეგვეძლო ჩაგვეწერა ათობითი 255 -> R16, მაგრამ პროგრამირებისას მიღებულია თექვსმეტობითი ფორმატის ხმარება – უმჯობესია მიეჩვიოთ. დააჭირეთ <–|  Enter”.

        | RESET
$FF  ->  R16
|NOP

თაგუნას კურსორი “NOP” ბრძანების მარცხნივ აღმოჩნდა, ამიტომ წაშლა აღარ არის საჭირო. შეგვიძლია გავაგრძელოთ ახალი ბრძანების ბეჭდვა.

        | RESET
$FF   ->  R16
R16  ->  DDRB
|NOP

“R16 -> DDRB” ნიშნავს „გადაგზავნე R16 რეგისტრი B პორტის DDR რეგისტრში“.  მიკროკონტროლერის  შეყვანა/გამოყვანის (I/O) პორტები განკუთვნილია როგორც ინფორმაციის შესაყვანად, ისე მის გამოსაყვანად. ამიტომ მიკროკონტროლერს უნდა ეცნობოს, რომელ რეჟიმში უნდა იმუშაოს პორტმა. პორტი 8 თანრიგიანია და შესაძლებელია მისი ცალკეული თანრიგების გამომყვანები სხვადასხვა რეჟიმში მუშაობდენ. თუ პორტის DDR რეგისტრის რომელიმე თანრიგში „1“ ჩავწერთ, მაშინ პორტის შესაბამისი თანრიგის გამომყვანი ინფორმაციის გამოყვანის რეჟიმში გადაირთვება. „0“ ჩაწერა იწვევს ინფორმაციის შეყვანის რეჟიმში გადართვას. ჩვენ DDRB რეგისტრში $FF ჩავწერეთ (სწორედ ეს რიცხვი იყო R16 რეგისტრში), რაც გამოწვევს B პორტის ყველა 8 გამომყვანის გადართვას ინფორმაციის გამოყვანის რეჟიმში. რომ ჩაგვეწერა რიცხვი $E4 (ორობითი 1110 1000), მაშინ მიკროკონტროლერის B პორტის გამომყვანები B7,B6,B5 გადაირთვებოდა გამოყვანის რეჟიმში, B4 – შემოყვანის რეჟიმში, B3 -გამოყვანის რეჟიმში, B2,B1,B0 – შემოყვანის რეჟიმში.

          | RESET
 $FF  ->   R16
R16  ->   DDRB
R16  ->  PORTB
|NOP

გავაგრძელოთ: გამოვიყვანოთ „1“ B პორტის ყველა თანრიგში. ახლა, თუ B პორტის რომელიმე გამომყვანზე შუქდიოდს მივაერთებთ და პროგრამას გავუშვებთ, მაშინ შუქდიოდი აინთება.

          | RESET
 $FF  ->   R16
R16  ->   DDRB
R16  ->  PORTB
|
|NOP

შევეცადოთ, რომ შუქდიოდი ციმციმებდეს. ამისათვის საჭიროა, რომ შუქდიოდი რაღაც დროის განმავლობაში ენთოს, შემდეგ იმავე დროის განმავლობაში ჩაქრეს და პროცესი განმეორდეს.
მენიუში ამოირჩიეთ “Elements” “Label” .  ამ ოპერაციის მეშვეობით ჩვენ შევქმენით „ჭდე“ – ადგილი, სადაც შემდგომში შეგვიძლია დავბრუნდეთ.

          | RESET
 $FF  ->   R16
R16  ->   DDRB
R16  ->  PORTB
|
   $FF->R18
|
$FF->R17
R17–
|NOP

R17, R18   რეგისტრებში ჩავწეროთ $FF.  “R17–“   ნიშნავს  „შეამცირე R17 რეგისტრის მნიშვნელობა ერთით“. თუ ამ ოპერაციას 255-ჯერ ($FF) გავიმეორებთ, მაშინ R17-ის მნიშვნელობა 0 -ის ტოლი გახდება, მაგრამ ამაზე 255 ტაქტი დაიხარჯება. ანუ მივიღებთ 255 ტაქტიან დაყოვნებას.რეალურად დაყოვნება გაცილებით მეტი იქნება, რადგან R17-ის მნიშვნელობის შემოწმებასაც დრო სჭირდება.

შევამოწმოთ უდრის თუ არა R17 რეგისტრის მნიშნელობა 0-ს. ამისთვის მენიუში ავირჩიოთ “Elements” “Condition” და შევამოწმოთ R17>0 ? თუ ეს ასეა, მაშინ გავიმეოროთ R17–.  თუ ეს ასე არ არის (თუ R17 უკვე უდრის 0-ს), მაშინ გავაგრძელოთ – გადავიდეთ შემდეგ ბრძანებაზე. გადასვლის მიმართულების საჩვენებლად გამოიყენეთ  კლავიში „Alt” და იმავდროულად „მარჯვნივ“, „ზევით“, “მარცხნივ“ ისრიანი კლავიშები.
day1_alg1day1_alg2

წითლად მონიშნული გადასვლის განსახორციებლად საჭიროა მენიუში აირჩიოთ “Elements” “JMP Vector” და შემდეგ გამოიყენოთ “Alt” + ისრიანი კლავიშები.R18 რეგისტრისათვის ანალოგიური ოპერაციების  ჩატარება საშუალებას მოვცემს გავზარდოთ  დაყოვნება კიდევ 255-ჯერ. ამ დროის განმავლობაში ჩვენი შუქდიოდი იქნება ანთებული. გავიმეოროთ იგივე პროცედურა ჩამქრალი შუქდიოდისათვის და დავიწყოთ თავიდან.
day1_alg_first

პროგრამის შედგენა დასრულებულიაახლა საჭიროა მისი კომპილაცია. ანუ საჭიროა, რომ გრაფიკული ფორმით წარმოდგენილი ალგოროთმიდან მივიღოთ მიკროკონტროლერის პროგრამულ მახსოვრობაში  (FlashROM) ჩასაწერი კოდი. ამისთვის საჭიროა მენიუში აირჩიოთ “Program” “Compile” . კომპილატორი გვაცნობებს, რომ კომპილაცია წარმატებით დასრულდა. მენიუში აირჩიეთ “File” “Save” და დახურეთ პროგრამა.
გახსენით თქვენი ფოლდერი „mc1day”. ნახავთ, რომ იქ შეიქმნა ახალი ფოლდერი „mc1day_INI“, რომელშიც მოთავსებულია ინფორმაცია პროექტის შესახებ. ამ ფოლდერის შიგთავსი არ გვაინტერესებს. ჩვენთვის მნიშვნელოვანია მის გარეთ მოთავსებული ფაილები. mc1day.alp – ეს თვით პროექტის ფაილია, mc1day.hex – ეს სწორედ ის ფაილია, რომელიც უნდა ჩაიწეროს მიკროკონტროლერის FlashROM-ში, EE_mc1day.hex – ფაილი წარმოადგენს მიკროკონტროლერის მუდმივი მახსოვრობის (EEPROM)  შიგთავსს. მუდმივი მახსოვრობა ჩვენ არ გამოგვიყენებია, ამიტომ ეს ფაილი არ დაგვჭირდება.
მიღებული პროგრამული კოდი (mc1day.hex) პირდაპირ შეიძლება იქნას ჩაწერილი მიკროკონტროლერის FlashROM -მახსოვრობაში, მაგრამ პროგრამის გამოცდისათვის საჭირო იქნება მთელი მოწყობილობის აწყობა და გამართვა. ჩვენს შემთხვევაში ეს დიდ სიძნელეს არ წარმოადგენს, ვინაიდან საქმე მხოლოდ ერთი შუქდიოდის მიერთებას ეხება, მაგრამ მეტ-ნაკლებად რთული სქემის შემთხვევაში, ცხადი ხდება პროგრამის გამართულობის წინასწარი შემოწმების აუცილებლობა. Proteus  -ის დაინსტალირების შემდეგ გაუშვით პროგრამა ISIS. მენიუში აირჩიეთ „Library” “Pick Device/Symbol” და ახლად გახსნილი ფორმის  ფანჯარაში „Keywords” ჩაწერეთ atmega8. პროგრამა მოძებნის ამ კომპონენტს თავის ბიბლიოთეკებში და გვიჩვენებს მის სქემატურ აღნიშვნასა და (თუ ეს შესაძლებელია) მისი კორპუსის ნახაზს. დააჭირეთ „OK”. მიკროკონტროლერი Atmega8 აისახება ჩვენი პროექტის ფანჯარაში “Devices”. გაიმეორეთ კომპონენტის შემოყვანის პროცედურა. ამჯერად ფანჯარაში „Keywords” ჩაწერეთ led-red. “led” წარმოადგენს „light emission diode” -ის აბრევიატურას. ასე ეწოდება შუქდიოდს ინგლისურად. ჩვენ ამოვირჩიეთ კომპონენტი „წითელი შუქდიოდი“. ეს კომპონენტი არ წარმოადგენს რომელიმე კონკრეტული ფირმის, კონკრეტული მარკის შუქდიოდს. ის Proteusis  შუქდიოდის სამოდელო პრიმიტივია. ამიტომ მას არავითარი კორპუსი არ შეესაბამება. ბოლოს დაგვჭირდება კიდევ ერთი კომპონენტი – რეზისტორი. ეს უბრალოდ ელექტრული წინაღობაა, რომელიც საჭიროა იმისათვის, რომ შუქდიოდში მეტისმეტად დიდმა დენმა არ გაიაროს. პროექტში მის შემოსაყვანად გაიმეორეთ კომპონენტის შემოყვანის პროცედურა  და ფანჯარაში „Keywords” ჩაწერეთ res. ახლა პროექტში გვაქვს სამივე საჭირო კომპონენტი. “Devices” ფანჯარაში აირჩიეთ RES და მოათავსეთ იგი საპროექტო ფურცელზე. თაგუნას ღილაკზე ყოველი დაჭერისას შეიქმნება კომპონენტის ახალი ეგზემპლარი. ეს იმიტომ ხდება, რომ პროგრამა იმყოფება კომპონენტების რეჟიმში.
პროგრამის ინტერფეისის მარცხენა მხარეს განთავსებულია რეჟიმების პანელი. კომპონენტების რეჟიმიდან გამოსასვლელად აირჩიეთ მონიშვნის რეჟიმი. ჩვენ გვჭირდება სულ ერთი რეზისტორი. ამიტომ მონიშნეთ ზედმეტი კომპონენტები და თაგუნას მარჯვენა ღილაკის მენიუში აირჩიეთ “Delete Object”. მონიშნეთ ასევე დარჩენილი რეზისტორი და თაგუნას მარჟვენა ღილაკის მენიუში აირჩიეთ “Edit Propertis”. ახლად გახსნილი ფორმის ფანჯარაში “Resistance” მნიშვნელობა 10k შეცვალეთ 100-ზე. ამ პროცედურით რეზისტორის წინაღობის მნიშვნელობა 10 კილოომიდან შეიცვალა 100 ომზე. განალაგეთ საპროექტო ფურცელზე დანარჩენი კიმპონენტების თითო ეგზემპლარი. გადადით ტერმინალების რეჟიმში, ამოირჩიეთ “GROUND” და ეს კომპონენტიც განათავსეთ საპროექტო ფურცელზე. ახლა მონიშვნის რეჟიმში განახორციელეთ საჭირო შეერთებები ისე, როგორც ეს სურათზეა მოცემული. სქემის შედგენა დამთავრებულია! ახლა საჭიროა მიკროკონტროლერს მივუთითოთ იმ პროგრამაზე, რომელიც უნდა იქნას შესრულებული. ამისათვის მონიშნეთ Atmega8 და თაგუნას მარჯვენა ღილაკის მენიუში აირჩიეთ “Edit Propertis”. ფანჯარაში “Program File:” ყვითელი ღილაკის გამოყენებით მოძებნეთ საჭირო პროგრამული კოდი, ანუ ფაილი Mc1day.hex, რომელიც მოთავსებულია ფოლდერში Mc1day. გაუშვით სიმულაცია პროგრამის ინტერფეისის ქვემოთ მოთავსებული ღილაკის საშუალებით და დატკბით შუქდიოდის ციმციმით.
 გავაგრძელოთ ექსპერიმენტები  Atmega8 მიკროკონტროლერის პროგრამირებასა და მოდელირებაში. ალგორითმი და სქემა გარდავქმნათ ისე, როგორც სურათზეა გამოსახული.

ალგორითმში ცვლილებები გამოიწვევს იმას, რომ PORTB გამომყვანებზე მონაცვლეობით გამოვა კომბინაციები 1010 1010 (ანუ თექვსმეტობითი AA) და 0101 0101 (თექვსმეტობითი 55). რაშიც ადვილად დავრწმუნდებით, თუ მოვახდენთ ამ ალგორითმის კომპილაციას და შემდგომ სიმულაციას Proteus-ში (როგორ უნდა გააკეთოთ ეს, უკვე იცით).


კიდევ ერთი მნიშვნელოვანი ცვლილება. ამჯერად მხოლოდ Proteus-ში: მონიშნეთ Atmega8. მარჯვენა ღილაკის მენიუში აირჩიეთ “Edit Propertis”. ფანჯარაში “CKSEL Fuses” აირჩიეთ „(0010) Int.RC 2MHz“ და გაუშვით სიმულაცია. შუქდიოდები ორჯერ უფრო სწრაფად დაიწყებენ ციმციმს. აქედან შეიძლება მნიშვნელოვანი დასკვნის გაკეთება: სიხშირე, რომელზეც მუშაობს მიკროკონტროლერი, არ არის მითითებული პროგრამულ კოდში (hex – კოდი). მართლაც, ჩვენ პროგრამა არ შეგვიცვლია. შევცვალეთ მხოლოდ რაღაც იდუმალი „CKSEL Fuses”. მიკროკონტროლერის ტაქტირების სიხშირე, ტაქტირების წყარო და კიდევ მთელი რიგი პარამეტრები იმართება სპეციალური ბიტების საშუალებით, რომელთაც “Fuse Bits” ეწოდებათ. ქართულად ალბათ უნდა ვიხმაროთ ფუზ ბიტები. ფუზ ბიტები ჩაიწერება მოკროკონტროლერში ცალკე, პროგრამისაგან დამოუკიდებლად, პროგრამატორის საშუალებით. ჩვენს მიკროკონტროლერს გააჩნია 16 ფუზ ბიტი. თვითოეულ მათგანს თავისი დანიშნულება და სახელი აქვს. 4 ბიტი CKSEL0-CKSEL3  განსაზღვრავს მიკროკონტროლერის ტაქტირების ხერხს და სიხშირეს. მიკროკონტროლერის ტაქტირება შესაძლებელია შემდეგი ხერხებით: PB6/TOSC1/XTAL1 გამომყვანზე მიერთებული გარე გენერატორის საშუალებით; შიდა RC გენერატორის საშუალებით; შიდა გენერატორის საშუალებით, რომელიც XTAL1, XTAL2 გამომყვანებზე მიერთებული  გარე კვარცის რეზონატორით არის სტაბილიზირებული და კიდევ რამოდენიმე სხვა ხერხით. კომბინაციას CKSEL0=1, CKSEL1=0, CKSEL2=0, CKSEL3=0 შეესაბამება შიდა RC გენერატორი, რომლის სიხშირეა 1მჰც. სწორედ ეს კომბინაცია არის ჩაწერილი მიკროკონტროლერში თავდაპირველად ქარხანაში. კომბინაციას, რომელიც ჩვენ დავაყენეთ – CKSEL0=0, CKSEL1=1, CKSEL2=0, CKSEL3=0 შეესაბამება შიდა RC გენერატორი, რომლის სიხშირეა 2მჰც. ამიტომ მიკროკონტროლერი ორჯერ უფრო სწრაფად ამუშავდა და შუქდიოდების ციმციმის სიხშირემ მოიმატა. როგორ ჩავწეროთ პროგრამული კოდი და ფუზ ბიტები მიკროკონტროლერში, განხილული იქნება შემდეგ სტატიაში.

18 responses to “მიკროკონტროლერის პროგრამირება ერთ დღეში

  1. TEMOSTATI CIPRULI TABLOTI WAESHALA MEXSIEREBA (ATMELA8L-8PU) MAX TEMPERATURA 300 GRADUSIA DA REGULIRDEBA GILAKEBIT RA KODEBIT UNDA DAVWERO PROGRAMA AM SHEMTXVEVASHI TU SHEGIDZLIAD DAMEXMArot

    • თუ ის hex ფაილი გაქვთ, რომელიც უნდა ჩაწეროთ მიკროკონტროლერში, მაშინ დაგეხმარებით პროგრამატორით და თქვენს კოდს ჩაგიწერთ.სხვა შემთხვევაში კონკრეტული პროგრამა არის დასაწერი, კონკრეტული მოწყობილობისათვის, კონკრეტული ტექნიკური პირობების გათვალისწინებით. გამოაქვეყნეთ თქვენი თხოვნა ფორუმზე
      http://forum.ge/?f=66&showtopic=34419857
      აქ ბევრი პროფესიონალი ტრიალებს, შეიძლება რაიმე ანალოგიური უკვე გაკეთებული აქვთ.

    • c++ ze …didi sirtulis programa tu ici c++ ena da avr controliorebtan tu gqonia shexeba programis(algoritmis) dawerashi dagexmarebi .

  2. მეორე მიკრო პროცესორი მაქ რომელიც გამართულად მუშაობს მითხრეს კოპირება შეძლება მუშადან დაზინებულშიო მაგრამ პროგრამატორმა ვერცერტი მიკროპროცესორი ვერ დაინახა. თქვენ თუ შეგიძლიათ ერთიდან ამოიგოთ პროგრამა და მეორეში ჩაწეროთ?

    • მიკროკონტროლერებს ფუზ ბიტების მსგავსად კიდევ აქვთ სპეციალური ბიტები, რომლებიც განსაზღვრავენ ჩიპიდან ინფორმაციის წაკითხვის უფლებას. თუ ეს ბიტები ავტორს (ქარხანას) დაპროგრამებული აქვს, მაშინ ჩიპიდან პროგრამას ვერ გადაწერ.

  3. დაყოვნება მილიწამებში როგორ გავზაკეთოთ?

    • ამისათვის საჭიროა წაიკითხოთ არა მარტო “მიკროკონტროლერები. დღე 1”, არამედ კიდევ “მიკროკონტროლერები. დღე 2, დღე 3, …, დღე 6”.

    • gaachnia romel enaze wer c ze tu assemblerze ..aseve gaachnia mikrokontroleris tips avr tu pic(dziritadat eseni gamoiyeneba) tu assemblerze wer picistvis magalitad (loop0: decfsz, f goto loop0) igive iqneba avr istvis (brdzanebebia sxva ..avrs tavisi assembleri aqvs) c ze __delay_ms(aq ramdensac chawers imdeni xani moicdis)

  4. vinmes Willem Progrmmer an sxva programatori xom ar gaqvt?
    Ipad_is chinuri varianti maq. Firmware_is Flashing is dros USB kavshiri gawyda! axla kompiuterit USB kavshiri ar aris. USB kavshiri gawyda U0(U_Boot) chaweris dros.
    erti programis chawera minda MX-29LV400BTC-90 chipze.
    rogorc me gavige es chipi Boot Sector Flash Memory aris. araswori programaa chawerili, ris gamoc kompiutertan usb portit komunikaciis migweva shudzlebelia, da shesabamis firmware-sac ver chavwer.
    problemas isisc artulebs rom TSOP48 chipia, ris gamoc Willem programmerze damatebiti adaptori TSOP48(LV8/16bits) chirdeba…
    uboot_nand.bin maqvs, romelic am chipze unda chaiweros…
    P.S. mtavari sirtule is aris rom chinurebs sul sxvadasxva modelebi aqvs iPad_is, ris gamoc firmware_is shecvla risktan aris dakavshirebuli. swor firmware_s vwerdi, tumca kavshiri gawyda…

  5. algorithm builder-shi rom vamaxsovrebineb hex faili ar ketdeba, mxolod alp da ini failebs aketebs da ratom xom ver metyvit?

    • Algorithm Builder-ის მენიუში არის პუნქტი “Program” და ქვეპუნქტი “Compile”. ან ერთდროულად დააჭირეთ Ctrl+F9. ან მართვის პანელზე სამი წერტილი “…” . სამივე ქმედება ახორციელებს პროგრამის კომპილაციას და პროგრამის ფოლდერში გაჩნდება ორი ფაილი – რომლებშიც ფიგურირებს პროექტის სახელი (მაგ., myproject): 1. myproject.hex და 2. EE_myproject.hex; პირველი ფაილი არის პროგრამის კოდი, რომელიც უნდა ჩაწეროთ მიკროკონტროლერის ფლეშ მახსოვრობაში. ეს არის თვით ის პროგრამა, რომელიც უნდა შეასრულოს მიკროკონტროლერმა. მეორე ფაილი არის მიკროკონტროლერის მუდმივი მახსოვრობის (EEPROM) საწყისი მონაცემები, ანუ ის მონაცემები, რომელიც თქვენ გინდათ რომ იყოს განთავსებული EEPROM-ში თავიდან – კვების ჩართვის მომენტში. თუ პროგრამა ისე არის შედგენილი, რომ ის თავის მუშაობის კვალობაზე ცვლის EEPROM-ის შიგთავსს, მაშინ კვების გამორთვის შემდეგ ეს მონაცემები აღარ იქნება საწყისის ტოლი. მაგ., ასეთი პროგრამა გვაქვს: ერთ ღილაკზე დაჭერისას რაღაც ცვლადი ერთით კლებულობს და თუ ის 20-ზე ნაკლები გახდება, დაინთოს წითელი ნათურა. მეორე ღილაკზე დაჭერისას ეს ცვლადი ერთით მატულობს და თუ 40-ს გადააჭარბებს დაინთოს მწვანე ნათურა. თავიდან ჩავწეროთ EEPROM-ში 20. თუ ღილაკებზე დაჭერა არამარტო ანთებს ნათურებს, არამედ ცვლის კიდევაც EEPROM-ს, მაშინ პირველი ღილაკის 5-ჯერ დაჭერისას EEPROM-ში იქნება 15. კვების გამორთვის შემდეგ ეს მნიშვნელობა არ შეიცვლება და კვების ხელმეორედ ჩართვის შემდეგ მოწყობილობა გააგრძელებს თვლას 15-დან. თუ თქვენ არ ხმარობთ EEPROM-ს, მაშინ მიკროკონტროლერის დაპროგრამებისას მეორე ფაილის ჩაწერა არ არის საჭირო.

  6. გლობალმენი

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

  7. ეგ ტექსტი დავბეჭდე algorithm builder-ში და compile-ს რო მივე არ გააკეთა კომპილაცია

    • მე ვფიქრობ, რომ ტექსტის აკრეფისას შეცდომა არის დაშვებული. ამ საიტის მარჯვენა სვეტში მოთავსებული “Files” განყოფილებიდან ჩამოტვირთეთ “mc1day.rar” არქივი, მოახდინეთ მისი დეარქივაცია ნებისმიერ ფოლდერში და algorithm builder-ში გაუშვით პროექტი “mc1day.alp”. algorithm builder-ის მენიუში ამოირჩიეთ Options, Project Options. “Chip” განყოფილებაში აირჩიეთ Atmega8 . გაუშვით კომპილაცია.

  8. გამარჯობა!
    ახლახანს შევიტყე თქვენი რესურსის არესებობის შესახებ. მინდა გითხრათ რომ ძალიან გამიხარდა, რომ ასეთი საიტი უკვე არსებობს, სადაც საფუძვლიანად ხდება (მიკრო)ელექტრონიკის შესწავლა.

    რადგან AVR დაპროგრამებისთვის იყენებთ Algorithm Builder-ს, მგონია დამწყებისთვის გამოსადეგი იქნება შემდეგი წიგნი:
    https://giomjava.wordpress.com/2012/09/27/avr-%E1%83%A5%E1%83%90%E1%83%A0%E1%83%97%E1%83%A3%E1%83%9A%E1%83%98-%E1%83%AC%E1%83%98%E1%83%92%E1%83%9C%E1%83%98/

დატოვეთ კომენტარი

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s