Gallery

პროგრამატორი Atmel მიკროკონტროლერებისათვის

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

პროგრამატორი Atmel მიკროკონტროლერებისათვის. 

ინტერნეტში საკმარისი რაოდენობით არის წარმოდგენილი პროგრამატორები მიკროკონტროლერების დასაპროგრამებლად. ნებისმიერი პროგრამატორი შესდგება ორი კომპონენტისაგან:
1. პროგრამული ნაწილი (Software), რომელიც უზრუნველყოფს მთელი პროგრამატორის მუშაობას – პროგრამული კოდის  კომპიუტერიდან წაკითხვას, მის ჩაწერას მიკროკონტროლერში, ჩაწერის სისწორის შემოწმებას, მიკროკონტროლერის FlashROM მახსოვრობის წაშლას და ა.შ.
2. აპარატურული ნაწილი (Hardware), რომელიც მოიცავს ელექტრონიკას, კაბელებს, შემაერთებლებს და ა.შ.  სწორედ ეს კომპონენტი ახორციელებს კავშირს კომპიუტერსა და მიკროკონტროლერს შორის. კავშირი ხორციელდება კომპიუტერის რომელიმე საკომუნიკაციო მოწყობილობის – პარალელური პორტის, მიმდევრობითი საცომუნიკაციო პორტის  ან USB პორტის საშუალებით.
გრაფიკული კომპილატორი Algoritm Builder შეიცავს პროგრამატორის მუშაობისათვის საჭირო პროგრამულ ნაწილს, რომელიც საშუალებას იძლევა ამავე კომპილატორში შექმნილი პროგრამები ჩაწერილ იქნან მიკროკონტროლერში. საჭიროა, მხოლოდ აპარატურული ნაწილის დამზადება. ქვემოთ მოყვანილია პროგრამატორის პრინციპული სქემა.

სქემა შეიცავს 7 რეზისტორს, რომელთა წინაღობა 1 კოლოომის ტოლია და 3 დიოდს. სქემაზე მითითებულის გარდა შეიძლება გამოიყენოთ ნებისმიერი სხვა, მცირე სიმძლავრის იმპულსური დიოდები. ყურადღება მიაქციეთ  დიოდების სქემაში ჩართვის პოლარობას (იხ. ნახ.).
პროგრამატორის ერთი მხარე უერთდება კომპიუტერის მიმდევრობით პორტს 9 კონტაქტიანი კონექტორის საშუალებით.

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

როგორც ნახაზიდან  ჩანს, მიკროკონტროლერის ცალკეულ გამომყვანებს რამოდენიმე დანიშნულება აქვთ. მაგ., ნომერი 1 გამომყვანი 2 ფუნქციას ასრულებს: ერთის მხრივ იგი წარმოადგენს C პორტის მე-6 თანრიგის გამომყვანს PC6, ხოლო მეორე მხრივ, ასრულებს RESET გამომყვანის ფუნქციას. მიკროკონტროლერის ნორმალური მუშაობისათვის საჭიროა RESET გამომყვანზე მიეწოდებოდეს ლოგიკური „1“.  ამ გამომყვანზე უარყოფითი იმპულსის მიწოდება ( ანუ „1“-დან „0“-ში გადართვა და ისევ უკან „1“-ში დაბრუნება) იწვევს მიკროკონტოლერის პროგრამის შესრულების თავიდან დაწყებას. როგორც წესი, მიკროკონტროლერის სქემაში ჩართვისას ამ გამომყვანს რთავენ ქვემოთ მოყვანილი სქემით:

იდეა მდგომარეობს შემდეგში: კვების წყაროს ჩართვის მომენტიდან რაღაც დროის განმავლობაში, იმის გამო, რომ კონდენსატორი ჯერ არ არის დამუხტული, RESET გამომყვანზე არ არის ლოგიკური „1“. ამიტომ მიკროკონტროლერის პროგრამა არ მუშაობს. ეს საშუალებას იძლევა დაველოდოთ კვების ჩართვის თანმხლები გარდამავალი პროცესების დამთავრებას. გარკვეული დროის შემდეგ, კონდენსტორი დაიმუხტება, RESET სიგნალი მიაღწევს ლოგიკური „1“ დონეს და მიკროკონტროლერის პროგრამა ამუშადება.
პროგრამატორის დასაკავშირებლად მიკროკონტროლერთან სასურველია გამოვიყენოთ სპეციალური ბუდეები, რომლებიც სურათზეა ნაჩვენები. ეს თავიდან აგვაცილებს დაპროგრამების დროს სარჩილავის ხმარების აუცილებლობას.

აი, როგორი პროგრამატორი ავაწყვე მე ჩემთვის:

დაპროგრამებისას მიკროკონტროლერის ყველა გამომყვანი აღნიშვნით “GND” მიერთებული უნდა იყოს სქემის საერთო მავთულთან და კვების წყაროს „მინუს“ გამომყვანთან, ხოლო ყველა გამომყვანი „VCC” აღნიშვნით მიერთებული უნდა იყოს კვების წყაროს „პლუს“ გამომყვანთან. კვების ძაბვა უნდა იყოს 4.5 – 5 ვოლტი.
შევუდგეთ მიკროკონტროლერის დაპროგრამებას. მიუერთეთ პროგრამატორი კომპიუტერის მიმდევრობით პორტს (Comm Port), ჩასვით ბუდეში მიკროკონტროლერი, ჩართეთ მიკროკონტროლერის კვების წყარო (ბატარეა).  Algorithm Builder -ში გახსენით თქვენი ალგორითმი და მენიუში აირჩიეთ “Options “ “Environment Options” “Port” და მიუთითეთ პორტის ნომერი, რომელთანაც მიერთებულია პროგრამატორი.

მენიუში აირჩიეთ “Program” “Run with Chip”. მოყვანილ სურათზე ნაჩვენებია, რომ ამორჩეულია მიკროკონტროლერის შემოწმება, მისი წაშლა და FLASH ROM მახსოვრობის დაპროგრამება. EEPROM მახსოვრობის დაპროგრამება, აგრეთვე ფუზ ბიტების დაპროგრამება და სხვა ოპციები  ამორჩეული არ არის. დააჭირეთ “Start”. რამდენიმე წამში დაპროგრამება დასრულდება.

ახალ, ჯერ კიდევ დაუპროგამებელ მიკროკონტროლერში ფუზ ბიტების კონფიგურაცია შეესაბამება ტაქტირებას შიდა გენერატორიდან, რომლის სიხშირეა 1 მგჰც. სიხშირის შესაცვლელად მონიშნეთ “Write fuse bits” და დააჭირეთ ლურჯად მონიშნულს “Fuse bits…”

“Clock source” წარწერის გასვრივ ლურჯად მონიშნულ წარწერაზე დაჭერა იწვევს ტაქტირების პარამეტრების ცვლილებას. ამოირჩიეთ 2 მგჰც და დააჭირეთ “Write”. თქვენი მიკროკონტროლერი გადაპროგრამდა 2 მგჰც სიხშირეზე სამუშაოდ.
დაპროგრამება დასრულებულია. შეგიძლიათ ჩასვათ მიკროკონტროლერი სქემაში, ჩართოთ სქემა და ნახოთ რა გამოვიდა.
სქემის აწყობის და მისი გამართვის შესახებ შემდეგ სტატიებში.

8 responses to “პროგრამატორი Atmel მიკროკონტროლერებისათვის

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

  2. გამარჯობათ! ვერ გავიგე სქემაზე როგორ ავამუშავო Atmega8. RESET უნდა მივუერთო VCC-ს? აუცილებელია VCC-ს AVCC-ზე დაერთება? დავაროგრამე PROTEUS-ში მუშაობს და ისე არა. რა არის საჭირო რომ იმუშაოს სრულყოფილად ამიხსენით თუ შეიძლება. მადლობთ!

    • RESET გამომყვანის სქემა მოყვანილია სტატიაში “პროგრამატორი Atmel მიკროკონტროლერებისათვის”. თუ ამ გამომყვანს მივუერთებთ “მიწას”, მაშინ მიკროკონტროლერი გადაირთვება პროგრამის დასაწყისზე და გაჩერდება. ხოლო თუ მას მივუერთებთ კვების წყაროს “VCC”, მაშინ მიკროკონტროლერი გააგრძელებს პროგრამის შესრულებას. ანუ, სქემის თავდაპირველი ჩართვისას ამ გამომყვენზე უნდა იყოს “0”, ხოლო შემდგომ უნდა მიეწოდოს “1”. სწორედ ამ ფუნქციას ასრულებს სტატიაში მოყვანილი სქემა, რომელიც შედგება რეზისტორისა და კონდენსატორისაგან. კიდევ უკეთესი იქნება, თუ რეზისტორს პარალელურად მივუერთებთ დიოდს ისე, რომ კვების წყაროზე მიერთებული იყოს დიოდის კათოდი, ხოლო კონდენსატორზე – ანოდი, ანუ, დიოდი უნდა იქნეს ჩართული უკუ მიმართულებით. ამ შემთხვევაში კვების წყაროს ხანმოკლე გამორთვისას კონდენსატორი სწრაფად განიმუხტება დიოდის საშუალებით, ხოლო კვების ჩართვისას შედარებით ნელა დაიმუხტება რეზისტორის საშუალებით. ეს დრო საკმარისია მიკროკონტროლერის საწყის მდგომარეობაში მოსაყვანად. დიოდის გარეშე კონდენსატორის განმუხტვას მეტი დრო დასჭირდება და კვების ხანმოკლე გამორთვა სქემას საწყის მდგომარეობაში მოყვანას ვერ გამოიწვევს.
      თუ ანალოგურ-ციფრულ გარდამქმნელს არ ხმარობთ, მაშინ AVCC გამომყვანი უერთდება VCC გამომყვანს და კვების წყაროს.
      ორივე GND გამომყვანი უნდა მიერთებული იქნას “მიწასთან”.

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

      • Fuse ბიტების დაპროგრამება ხომ არ გავიწყდება?
        რომელი პროგრამატორი გაქვს? ზოგიერთ პროგრამატორში Fuse ბიტები ინვერსულად პროგრამდება. ანუ, “1” -ის მაგივრად “0”, და პირიქით.
        თუ ამ შენიშვნამაც არ უშველა, მაშინ დამირეკე 571-49-37-79, ერთობლივი ძალებით აუცილებლად მოვერევით.

  3. გამარჯობათ! Fuse Bit-ები ჩავწერე არასწორად და აღარ პროგრამდება… ვცადე მუშა ათმეგას დახმარებით დარესეთება მაგრამ უშედეგოდ.. სადღაც წავიკითხე რომ პარალელური პროგრამერი უშველის და მირჩიეთ რომელი სქემით ავაწყო? ან რაიმე სხვა ხერხი ხომ არ იცით? (Atmega8 მაქვს) წინასწარ მადლობა!

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

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