tag:blogger.com,1999:blog-49511520459463761092024-02-20T20:29:13.751+04:00AVR uControllersJambazishvilihttp://www.blogger.com/profile/18313944956706696794noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-4951152045946376109.post-69455153329578965692014-10-04T10:42:00.002+04:002014-10-04T10:42:30.005+04:00AVR-ის მთვლელები/ტაიმერი - შესავალი<b style="font-weight: normal;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="timer-icon-300x3001.png" height="300" src="https://lh6.googleusercontent.com/jXkGYE5xR5ekH8KiyMv3suKnR5ey5DWpKNpmz_gKmZ6ZIP07TeddsQTh4E6GotdHzB113Wje72G0rBbloA8sg35AzBftNuxEdIeLQBGS56djjZfz-2Y5s1tqQQsTJ1JI1g" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="300" /></span></div>
<br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 10pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666666; font-family: "Trebuchet MS"; font-size: 17px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">შესავალი</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">თანამედროვე ცხოვრებაში ტაიმერები თითქმის ყველა ჭკვიან მოწყობილობაში გამოიყენება. დაწყებული გაზქურიდან, კომპიუტერით დასრულებული. მათ გარეშე უბრალოდ წარმოაუდგენელია რეალობა. ტაიმერების სიზუსტე კი მიკრო წამებიდან საათებამდე იცვლება. ეს ტუტორიალი კი არ არის ფოკუსირებული იმაზე, რომ აგიხსნათ თანამედროვე ცხოვრებაში ტაიმერი რა როლს ასრულებს, უბრალოდ ეს ვრცელი თემა, AVR ის მიკრო კონტროლერებში დეტალურად გავარჩიო და წარმოდგენა შეგიქმნათ მათ მუშაობაზე.</span><a name='more'></a><br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">AVR ამაყობს თავისი ზუსტი ტაიმერებით, რომლებიც შეიძლება გამოიყენებოდეს, როგორც წამების, ისე საათების აღსარიცხად. თუ წყაროებს დავუჯერებთ ისინი საკმაოდ ზუსტები არიან. მათი გარჩევადობა მიკრო წამებს უტოლდება. ეს კი მათ ხდის იდეალურს შეასრულონ ტაიმერის “მოვალეობა”. </span></div>
<br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">ტაიმერები როგორც რეგისტრი</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ტაიმერი წარმოადგენს ერთგვარ რეგისტრს. ამ რეგისტრის მნიშვნელობა კი იზრდება ან მცირდება. ეს პროცესი კი ავტომატურად მიმდინარეობს მიკრო პროცესორში. AVR ში ძირითადად გხვდება 8 და 16 ბიტიანი ტაიმერები, რაც იმას ნიშნავს, რომ რეგისტრი შესაბამისად არის 8, ან 16 ბიტის “სიგანის”. ეს ასევე იმასაც ნიშნავს, რომ 8 ბიტიან ტაიმერს შეუძლია 256 (2^8)-ჯერ ჩამოკრას - 0-დან 255-მდე, როგორც სურათზეა ნაჩვენები, ოღონდ ეს ყველაფერი ორობითში. </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="Generic Forms for AVR tutorial blog.png" height="311" src="https://lh3.googleusercontent.com/Dbmze-SaII7L0aE8hZpS26tU7W12UXInv2d96N3SesbRuij9_KTpsAIbBQB1R_soBDu8gxyfftU6J69U-7-RupRVG87gJUy6xBdZbHaLGYrHpcs8J4a0h250GB4awMjemw" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">შესაბამისად, 16 ბიტიან ტაიმერს შეუძლია 65536-ჯერ ჩამოკრას (2^16), ნულიდან 65535-მდე. ტაიმერები შეიძლება განვიხილოთ, როგორც მთვლელები, რაც სავსებით ნორმალურია. საინტერესოა რა ხდება, როდესაც ტაიმერი დაითვლის მაქსიმალურამდე? პროგრამა შეჩერდება? არა, ტაიმერი განულდება - დაუბრუნდება საწყის, ნულოვან მნიშვნელობას და თავიდან დაიწყებს თვლას, ამას ტაიმერის გადატვირთვა (overflow) ეწოდება. ახლა კი მაგალითისთვის ავიღოთ AtMega32, რომელშიც 3 განსხვავებული ტაიმერი გვაქვს, რომელთაგან პირველი და მესამე 8 ბიტიანია, ხოლო მეორე 16-იანი. </span></div>
<br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">რაც შეეხება სიზუსტეს, აქ ყველაფერი რიგზეა, მაგრამ არა სრულყოფილად. იმის გათვალისწინებით, რომ ტაიმერი ცენტრალური პროცესორის პარალელურად მუშაობს, ანუ ცენტრალური პროცესორი არავითარ ზეგავლენას არ ახდენს მასზე, ეს ფაქტი საკმაოდ კარგ შედეგს იძლევა. ჩვეულებრივი ტაიმერის კონფიგურაციის გამოკლებით, მათ კიდევ რამდენიმე კონფიგურაცია გააჩნიათ. ესენია CTC და PWM კონფიგურაცია, რომლებსაც განვიხილავთ მოგვიანებით.</span></div>
<br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">რას უდრის დროის პერიოდი? ყველამ იცის, რომ ის ტოლია 1 შეფარდებული სიხშირესთან, ანუ სიხშირის შებრუნებულ სიდიდეს. ახლა კი ჩვენ გვაქვს დიოდი, რომელიც გვინდა ყოველ 10 მილი წამში ერთხელ ავაციმციმოთ, ეს კი მეორე მხრივ იმას ნიშნავს, რომ ციმციმის სიხშირე 100 ჰერცი უნდა იყოს. ყველაფრის გამოსათვლელად, ასევე გვინდა ვიცოდეთ თუ რა სიხშირეზე მუშაობს მიკრო პროცესორი. სტანდარტულად ეს სიხშირე არის 16, 8, 4 ან 1 მეგაჰერცი (8 ბიტიანი სტანდარტული მიკრო პროცესორებისთვის, გაცილებით მძლავრ მიკრო პროცესორებში სიხშირე ერთი ან რამდენიმე ასეული მეგაჰერცის ტოლიც შეიძლება იყოს). დასაწყისისთვის ავიღოთ 1 მეგაჰერცი, რომელიც შიდა მიკრო პროცესორში არსებული შიდა კვარცის გამოყენებით მიიღწევა ხოლმე, ხშირად. </span></div>
<br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">მიკრო პროცესორი ახლა იწყებს მუშაობას, და შესაბამისად ყველა ტაიმერის მნიშნვნელობა ნულის ტოლია. ნულად ერთი, რომ გახდეს ტაიმერის მნიშვნელობა საჭიროა ერთი იმპულსი, რომელიც იმ სიხშირით მეორდება, რა სიხშირეზეც მუშაობს მიკრო პროცესორი (ჩვენს შემთხვევაში 1 მეგაჰერცზე). დროის პერიოდი, რაც ერთ თვლას სჭირდება გამოდის, რომ არის 1/1(მეგაჰერცთან) = 1/1,000,000 = 0.000,000,1 წამი. რადგან ჩვენი სასურველი ინტერვალი არის მილიწამებში (10 მილიწამი) გადავიყვანოთ მიღებული პერიოდი ამ განზომილებაში, რაც = 0.000,1 მილი წამს. მიღებული მნიშვნელობა გვეუბნება, რომ ტაიმერის თითოეული თვლა, სულ რაღაც 0.000,1 მილი წამს უნდება. </span></div>
<br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ახლა დავუბრუნდეთ ჩვენს პირობას. 10 მილი წამი შეიძლება ძალიან მცირე დრო იყოს. შედარებისთვის გეტყვით, რომ ადამიანი თვალის დახამხამებას 400 მილიწამს ანდომებს, რაც 40-ჯერ მეტი დროა, ვიდრე ჩვენი დიოდის ციმციმის პერიოდი. მეორე მხრივ კი 10 მილი წამი საკმაოდ დიდი დროა ისეთი მიკრო კონტროლერისთვის, რომელიც ხულ რაღაც 1 მეგაჰერცზე მუშაობს და 0.000,1 მილი წამის სიზუსტით არჩევს დროს. სიმარტივისთვის გამოვიყენებ საკმაოდ მარტივ ფორმულას, რომელიც გვეუბნება რამდენჯერ უნდა დაითვალოს მთვლელმა, რომ სასურველი პერიოდი მივიღოთ</span></div>
<br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="Untitled.png" height="80" src="https://lh4.googleusercontent.com/TrEuSKH1nOZ0JdeIqLj4psmihmo0U8kaikkeuc6v5IvAJDheC6s5lU8eV1tYNdTKXOcbzn-MwOsbaE7FcqkOVThlIWskhPpCmckx3mnr1wcV3uluDGGnYERIEPlaUFAjbA" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></div>
<br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ახლა ისღა დაგვრჩა ფორმულით ვისარგებლოთ. ჩვენი სასურველი პერიოდი არის 10 მილი წამი, ხოლო 1 თვლის პერიოდი = 0.000,1 მილი წამს. გამოთვლით მივიღებთ, რომ ტაიმერმა უნდა დაითვალოს 39,999-ჯერ, რომ 10 მილი წამი გავიდეს. საოცარია, მაგრამ ეს მართლაც ასეა. ამ შედეგის მისაღწევად, ფაქტია, რომ 8 ბიტიან მთვლელს ვერ გამოვიყენებთ, რადგან მისი მაქსიმალური მნიშვნელობა შეიძლება მხოლოდ 255-ს გაუტოლდეს, ჩვენ კი 39,999 დათვლა გვინდა. ამისთვის 16 ბიტიანი ტაიმერი დაგვჭირდება, რომელსაც 65,535-მდე შეუძლია დაითვალოს. ამ ჯერზე პრობლემა თითქოს გადაწყვეტილია, მაგრამ არც ისე მოსახერხებელი გადაწყვეტილება მივიღეთ. ამ ეტაპზე საჭირო ხდება prescaler-ის კონცეფციის გარჩევა, რაც იგივეა, რაც გამყოფი (ყოველ შემთხვევაში მე ასე აღვიქვავ, და ასეც მოვიხსენიებ.</span></div>
<br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Prescaler</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">გამყოფი საკმაოდ მოქნილი მექანიზმია არამარტო ტაიმერებში და მთვლელებში, არამედ მიკრო კონტროლერის სხვა პერიფერიალებშიც. ახლა ვთქვათ ჩვენი მიკრო კონტროლერი მუშაობს, მაგალითად, 4 მეგაჰერცზე. თუ გამოვიყენებთ 16 ბიტიან ტაიმერს, მაშინ მაქსიმალური პაუზა/დრო რომლის აღქმის საშუალებაც გვექნება არის 16.384 მილი წამი. ეს კი საკმაოდ უხერხულ სიტუაციას ქმნის, როდესაც 0.016 წამზე მეტ პაუზას ვერ გავაკეთებთ, სხვადასხვა მიზნით. ტექნიკურად პაუზის გაკეთება (16 მილი წამზე დიდი) შესაძლებელია, მაგრამ ეს დამატებით ხაზებს მოითხოვს კოდში და შეცდომის რისკიც იზრდება. სწორედ ასეთ შემთხვევებში გვჭირდება prescaler ის გამოყენება.</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">prescaler ის მთავარი “იარაღი” ის არის, რომ ის ახდენს მიკრო კონტროლერის სიხშირის შემცირებას, ისე, რომ ეს თვითონ მიკრო კონტროლერს არ ანელებს. შეიძლება ცოტა ბუნდოვანია, მაგრამ ეს მართლაც ასეა. prescaler-ის გამოყენებით, რეალურად პროცესორის სიხშირეს არ ვამცირებთ, უბრალოდ პროცესორის სიხშირეს ვიყენებთ და ვყოფთ, რომ მივიღოთ უფრო დაბალი სიხშირე. ეს ყველაფერი კი სპეციალური რეგისტრის დახმარებით ხდება, რის საშუალებითაც შეგვიძლია სიხშირის შემცირება, რომ გამოვიყენოთ ტაიმერისთვის. ამ რეგისტრს გავარჩევთ მოგვიანებით. მანამდე კი მსურს, გითხრათ რა ხდება prescaler-ის გამოყენების დროს.</span></div>
<br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">რადგან არსებობს prescaler-ის მექანიზმი, ეს სულაც არ ნიშნავს იმას, რომ ის სრულყოფილია და მისი გამოყენება თავისუფლად არის შესაძლებელი. რაც უფრო იზრდება პაუზის ხანგრძლივობა, მით უფრო მცირდება გარჩევადობა. მაგალითისთვის ავიღოთ, რომ 4 მეგაჰერციანი პროცესორის სამუშაო სიხშირე დავიყვანეთ 500 კილოჰერცამდე (0.5 მეგაჰერცი). ეს პარალელურად იმას ნიშნავს, რომ 16.384 მილი წამიანი მაქსიმალური პერიოდი (რაც იყო 4 მეგაჰერციანი სიხშირის დროს) გაიზარდა 8-ჯერ და გაუტოლდა 131.072 მილი წამს. თუ კარგად გავიაზრებთ გარჩევადობის დროც გაიზარდა 0.00025 მილი წამიდან 0.002 მილიწამამდე. ტექნიკურად კი, გარჩევადობა შემცირდა, რაც პარალელურად იწვევს სიზუსტის გაუარესებასაც. აქვე ვნახოთ </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">მაგალითი. </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">დავუშვათ, რომ გვინდა 0.2305 მილი წამის გაზომვა, ზუსტად! ძველ პირობებში ეს სავსებით შესაძლებელია, რადგან 0.2305 / 0.00025 (გარჩევადობა არის 0.00025 მილი წამი) = 922. მაგრამ ახალ პირობებში, როდესაც გარჩევადობა არის 0.002 ამ პაუზას ასე ზუსტად ვეღარ გავზომავთ - 0.2305 / 0.002 (ახალი გარჩევადობა) = 115.25. ახალ სიხშირეზე აწყობილ ტაიმერს შეუძლია გაზომოს 0.2300 და შემდეგ 0.2320. </span></div>
<br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">prescaler-ის არჩევა</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">მაგალითისთვის ავიღოთ, რომ გვინდა 184 მილი წამის პაუზის გაკეთება. მიკრო კონტროლერის სიხშირე იყოს ისევ 4 მეგაჰერცი. AVR-ის მიკრო კონტროლერების prescaler შეიძლება იყოს 8; 64; 256; 1024. თუ ავირჩევთ 8-ს როგორც prescaler-ად, მაშინ ტაიმერის მოქმედი სიხშირე იქნება 4 / 8 მეგაჰერცი, რაც 500 კილოჰერცის ტოლია. შესაბამისად თუ ავირჩევთ:</span></div>
<br /><br />
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">8 </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">-</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">500 კილოჰერცი</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">64 </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">- </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">62.5 კილოჰერცი</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">128</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">-</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">15.625 კილოჰერცი</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1024</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">-</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">3906.25 კილოჰერცი</span></div>
</li>
</ul>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">prescaler-ის გამოყენებისას ტაიმერის თვლის რიცხვი არ იზრდება. არც 8 და არც 16 ბიტიანი ტაიმერის თვის რიცხვი. უბრალოდ, იზრდება გარჩევადობა - დრო ერთიდან მეორე თვლამდე. </span></div>
<br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">წყვეტები - interrupts</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ინტერაპტებს ფართო გამოყენება აქვს მიკრო კონტროლერის პროგრამირებაში და არა მარტო. ეს კონცეფცია არ ეხება ექსკლუზიურად ტაიმერებს, მაგრამ, ჩემი აზრით საჭიროა აქ ვახსენო ისინი და მოგვიანებით დავამატო მათი დაწვრილებითი განხილვა და გამოყენების ინსტრუქცია. მაგალითისთვის ავიღოთ, რომ თქვენ ახლა კითხულობთ ამ ტუტორიალს და ამ დროს დარეკა სახლის ტელეფონმა, რომელიც თქვენი ასაღებია, რადგან სახლში მარტო ხართ. თქვენ შეინახავთ თქვენს საქმეს, ანუ დაიმახსოვრებთ სად შეწყვიტეთ კითხვა და უპასუხებთ ტელეფონს. საუბრის დასრულების შემდეგ თქვენ ისევ დაუბრუნდებით ტუტორიალს და გააგრძელებთ კითხვას. ტელეფონის ზარი კი არის ინტერაპტის მარტივი მაგალითი. </span></div>
<br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">მიკრო კონტროლერში ინტერაპტი შეიძლება გააქტიურდეს, როდესაც რაღაც მდგომარეობაში იქნება მიკრო კონტროლერი, დაუშვათ ერთ-ერთ პინზე შეიცვალა სიგნალი, 1-დან 0-ზე ან პირიქით. ამ დროს აქტიურდება ინტერაპტი, თუ მის ფუნქციას ვიყენებთ კოდში, და მიკრო პროცესორი წყვეტს მთავარი პროგრამის შესრულებას, ინახავს მთელ ინფორმაციას, ასრულებს ინტერაპტის შესაბამის რუტინას და როდესაც ამ რუტინის (კოდს, ფუნქციას) შესრულებას დაასრულებს, მაშინ უკვე მიკრო კონტროლერი უბრუნდება პროგრამის მთავარ კოდს და ჩვეულებრივ რეჟიმში აგრძელებს მის შესრულებას. </span></div>
<br /><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">მაგალითისთვის ავიღოთ ტაიმერის გადატვირთვა - როდესაც ის დაითვლის ბოლოჯერ და იწყებს თავიდან. ჩვენ შესაძლებლობაში არის ჩავრთოთ ის ინტერაპტი, რომელიც გააქტიურდება რომელიმე ტაიმერის გადატვირთვისას. ახლა, როდესაც გადატვირთვა მოხდება მიკრო კონტროლერი შეასრულებს შესაბამის რუტინას, რომელსაც ეწოდება ISR (Interrupt Service Routine). ის, თუ რა მოხდება ამ ინტერაპტის გააქტიურებისას ეს დამოკიდებულია ჩვენზე.</span></div>
</b><br />Jambazishvilihttp://www.blogger.com/profile/18313944956706696794noreply@blogger.com0tag:blogger.com,1999:blog-4951152045946376109.post-7682569704534678452014-09-19T00:33:00.000+04:002014-09-19T00:33:03.110+04:00HCSR04 სენსორის გამოყენება<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="HC-SR04-2.jpg" height="359px;" src="https://lh3.googleusercontent.com/R0OoAtjQztvFlO4MoLan6Kq9qwJvJwucwZAItIhQ3nkjSyw5prcPFU_wV-q9x256q8EE4ljkcDpziqqO4umv5-UXsY0mn6dUnrBpXX5fi4JFseo5sdobWoFZRIeFGukDBA" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="600px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">მოგესალმებით, ამ პოსტში მინდა მარტივად და ერთი სენსორის გამოყენებით გასწავლოთ, როგორ შეგვიძლია გავზომოთ მანძილი ობიექტამდე 3მმ-იანი სიზუსტით. ზემოთ მოცემულია სენსორის ვიზუალური მხარე</span></div>
<a name='more'></a><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ეს არის წინ-ხედი, რომლის წინაც ხდება ობიექტის მოთავსება და მანძილის გაზომვა. თუ მონაცემთა ფურცელს ვნახავთ, მანძილის სიგრძე შეიძლება იცვლებოდეს 2-დან 400 სანტიმეტრამდე და ცდომილების მინიმალური მნივნელობა შეიძლება იყოს 3 მილიმეტრი. საკმაოდ კარგი პარამეტრებია, თუ ძალიან ზუსტი შედეგები არ არის საჭირო. ასევე ინტერნეტში ვნახე ხედვის არეალის სურათი, რომელიც კუთხეების მიხედვით გვიჩვენებს გაზომვის უნარიანობას. </span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="HC-SR04-4.jpg" height="261px;" src="https://lh4.googleusercontent.com/ph2WtTE4lIcbSsT4ZtyJ_mfRelWmWvMetlagTqRsqiCAt8LXxMrGbuEfb3Zkgrw44h-osqoxOePX4kgz90lQt4DDj6ir-fBXpQgY2ss_mo-WkesGjTzUN2MRTcn202e4gg" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="500px;" /></span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">მოქმედების პრინციპი კი შემდეგში მდგომარეობს:</span></div>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Trig პინზე უნდა მოვდოთ მინიმუმ 10 მიკრო წამიანი სინგალი</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">მოდული ავტომატურად აქტიურდება და აგზავნის 40 კილოჰერციან სიგნალს და აკვირდება არის თუ არა უკან არეკლილი სიგნალი</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">თუ ეს სიგნალი უკან ბრუნდება, მაშინ ლოგიკური 1-იანის ყოფნის დრო პინზე უდრის დროს სიგნალის გაგზავნიდან მიღებამდე</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ასევე გვაქვს ფორმულა, რომლითაც შეგვიძლია ვისარგებლოთ, რომ დრო გადავიყვანოთ სანტიმეტრებში. </span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">მანძილი = (იმპულსის დრო * ბგერის სიჩქარეზე) / 2</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">რაც შეეხება ბგერის სიჩქარეს, მონაცემთა ფურცელში მითითებულია 340 მ/წმ. </span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ამის შემდეგ უკვე შეგვიძლია დავწეროთ ფუნქცია, რომელიც ამ სენსორის გამოყენებით წაიკითხავს მანძილს ობიექტამდე და გამოვიყენებთ, როგორც უკონტაქტო სახაზავს. შედეგების მიღების შემდეგ, ბგერის სიჩქარე შეგიძლიათ შეცვალოთ, თუ მიღებული შედეგი ცოტა მაინც სცდება რეალურ მნიშვნელობებს. </span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ახლა კი ვნახოთ </span><a href="https://drive.google.com/folderview?id=0B8INmvEfFu2zWGdHTzdSVlhrNDQ&usp=sharing" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">კოდი</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> (ეს არის კოდის ლინკი, რომელიც მოთავსებულია ჩემს დრაივზე), რომელიც საკმაოდ მარტივია და სულ სამი ფუნქციისგან შედგება</span></div>
<b style="font-weight: normal;"><br /></b>
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> int16_t GetDistance() - რომელიც აბრუნებს გაზომილ მანძილს სანტიმეტრებში. როგორც აღვნიშნე, გაზომილი მანძილის მაქსიმალური მნიშვნელობა რეკომენდირებულია, როგორც 4 მეტრი, მე პირადად მაქვს გამოცდილება ცოტა მეტიც გამეზომა</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">int16_t GetDistance(int8_t trigPin, int8_t echoPin) - ეს ფუნქცია იმით განსხვავდება წინა ფუნქციებისგან, რომ აქ არგუმენტად შეგიძლიათ მიაწოდოთ ნებისმიერი ციფრული/ანალოგური პინი ხელოვნურად </span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">boolean IB(int16_t value, int16_t Floor, int16_t Ceiling) - ფუნქცია ამოწმებს არის თუ არა მოცემული ცვლადი (value) მეტი ქვედა საზღვარზე (Floor) და ნაკლები ზედა საზღვარზე (Ceiling). თუ ეს ორი პირობა ერთდროულად დაკმაყოფილდა, მაშინ აბრუნებს 1-ს (true), თუ არა და აბრუნებს 0-ს (false).</span></div>
</li>
</ol>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ახლა ვნახოთ მარტივი მაგალითი, რომელშიც ორი LED-ია გამოყენებული და ცისფერიდან ირთვება წითელზე თუ სენსორის წინ მდებარე ობიექტი “უსაფრთხო ზონიდან” “სახიფათო ზონაში” გადადის, სადაც ზონა “სახიფათოდ” ითვლება თუ ობიექტი 20 სანტიმეტრზე ახლოს მივა სენსორთან. სწორედ ქვემოთ ვიდეოში შეგიძლიათ იხილოთ პროგრამის მუშაობა</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/4R15uGzXMJQ?feature=player_embedded' frameborder='0'></iframe></div>
<br />Jambazishvilihttp://www.blogger.com/profile/18313944956706696794noreply@blogger.com0tag:blogger.com,1999:blog-4951152045946376109.post-32675163111213658872014-09-16T22:03:00.000+04:002014-09-17T11:25:39.456+04:00ტაშით გააქტიურებადი განათება V2<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-hZ5oCOBSSok/VBh6eIZ4CJI/AAAAAAAAInE/YQMsmt4vkc0/s1600/winter_solstice.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-hZ5oCOBSSok/VBh6eIZ4CJI/AAAAAAAAInE/YQMsmt4vkc0/s1600/winter_solstice.jpg" /></a></div>
<br />
<br />
<div dir="ltr" id="docs-internal-guid-7281421e-7fa1-1893-77ae-b22196de269e" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ეს არის პროექტი </span><a href="http://avrcontrollers.blogspot.com/2014/08/blog-post_31.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"><ტაშით გააქტიურებადი განათება></span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">-ის მეორე ვერსია, რომელიც უფრო დახვეწილია და დამატებული აქვს რამდენიმე ფუქნცია, როგორც პროგრამულად, ასევე ფიზიკურად.</span></div>
<a name='more'></a><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">პირველი ცვლილება არის სინათლის სენსორის დამატება, რომელის საშუალებითაც ალგორითმს შეუძლია უფრო უკეთესად თვით კალიბრება. სინათლის სენსორი წარმოადგენს წინაღობას, რომელიც სინათლის ნაკადის მიხედვით იცვლის წინაღობას. თუ ავიღებთ შემდეგნაირ სქემას, რომელიც ქვემოთ არის მოცემული</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">5V-------<LDR>-------|A1|--------<R1>----------0V</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">სადაც LDR-ით აღნიშნულია სინათლეზე დამოკიდებული წინაღობა, ხოლო A1-თი პინი, რომელსაც ვიყენებ ჩემს შემთხვევაში სინათლის შესახებ ინფორმაციის მისაღებად. როდესაც უკვე მსგავსი ფიზიკური ნაწილი დამატებული გექნებათ, შეგიძლიათ მიუერთოთ ის ნებისმიერ ანალოგურ პინს, მიკროფონის სიგნალის წამკითხველის გარდა. ამის შემდეგ მხოლოდ ჩამრთველში ინტეგრირებული მინი ძრავის ფეხები უნდა მიეურთოთ, რომელიმე ციფრულ პინს. ფეხების მიმდევრობას მნიშვნელობა არ აქვს, რადგან </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">ამაზე პროგრამა იზრუნებს</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> - ავტომატურად მიხვდება, რომელიც რომელია, რომ სწორ მხარეს დაატრიალოს ძრავი. ახლა ვნახოთ კოდი, რომელიც საკმაოდ მარტივად გამოიყურება, ხოლო ყველაფერი რთული სცენის მიღმა ხდება</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include "LightControllerV2.h"</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#define mic A0</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#define ls A1</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#define mp1 2</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#define mp2 3</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">LightControllerV2 LCV2(mic, ls, mp1, mp2);</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void setup()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> LCV2.AutoConfig();</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void loop()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> LCV2.Run();</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #3c78d8; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">როგორც ხედავთ კოდი ნამდვილად მარტივია, მთავარია ის რას აკეთებს თითოეული ფუნქცია, რომელიც სისტემის სწორად მუშაობაზე აგებს პასუხს. პიველი ხაზი უზრუნველყოფს საჭირო ბიბლიოთეკის შემოტანას კოდში, რომელიც შეგიძლიათ ქვემოთ განტავსებული ლინკიდან გადმოწეროთ. ამის შემდეგ 4 ხაზზე ხდება პინების განსაზღვრა: მიკროფონი (A0), სინათლის სენსორი (A1), ძრავის პინი 1 (2), ძრავის პინი 2 (3). შემდეგ ვიყენებთ კლასს სახელად LightControllerV2, რომლის ობიექტია LCV2 და ის იღებს 4 პარამეტრს</span></div>
<br />
<ol style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">მიკროფონის პინი</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">სინათლის სენსორის პინი </span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ძრავის პინი 1</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: decimal; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ძრავის პინი 2</span></div>
</li>
</ol>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ამის შემდეგ, როდესაც ობიექს მითითებული აქვს ყველა საჭირო პინი, ის იწყებს ინიციალიზაციას. setup()-ში ხდება მხოლოდ ერთი ფუნქციის გამოძახება, რომელიც </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">LCV2 ობიექტის კლასშია განსაზღვრული და უზრუნველყოფს, რომ მიკროფონიდან მიღებული სიგნალის მინიმალური მნიშვნელობა წაიკითხოს და დაიმახსოვროს. ამის შემდეგ იმავე ფუნქციაში ხდება ძრავის პინების სწორედ კონფიგურირება და შესაძლო არასწორი ვარიანტის შეცვლა: ფუნქცია კითხულობს სინათლის სენსორის მონაცემს და იმახსოვრებს, ამის შემდეგ ის ცვლის პოლუსებს ძრავის პინებზე (ისე, რომ შუქი აანთოს) და კვლავ კითხულობს სინათლის სენსორის მონაცემებს. თუ შუქი ნამდვილად აინთო (ეს სინათლის სენსორის მონაცემის გაზრდას გამოიწვევს) ეს იმას ნიშნავს, რომ ძრავის პინები სწორედ არის კონფიგურირებული, ხოლო საწინააღმდეგოს შემთხვვაში მათი ადგილები უნდა შეიცვალოს, რასაც ფუნქცია იქიდან ხვდება, რომ სინათლის სენსორის მონაცემი არ იცვლება და ავტომატურად ძრავის პინებს უცვლის ადგილს. </span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ამის შემდეგ უკვე LCV2.Run(); ფუნქცია იწყებს მუშაობას, რომლის მთავარი მოვალეობაა, რომ შუქი აანთოს ერთი </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">ტაშის დაკვრით, ხოლო ჩააქროს ორი ტაშის დაკვრით, </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">რომელთა შორის შუალედი არ უნდა აღემატებოდეს </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">0.5 წამს</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">. </span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ყველაფერი დატესტილია და მუშაობს 100%-ით (+ - 1%)! </span></div>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ლინკიდან შეგიძლიათ გადმოწეროთ საჭირო </span><a href="https://drive.google.com/folderview?id=0B8INmvEfFu2zclV6TXN0OFJPWDA&usp=sharing" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">ფაილები</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/mucQNLjAPA0?feature=player_embedded' frameborder='0'></iframe></div>
Jambazishvilihttp://www.blogger.com/profile/18313944956706696794noreply@blogger.com0tag:blogger.com,1999:blog-4951152045946376109.post-23574364777052518462014-09-09T20:19:00.003+04:002014-09-16T21:57:46.534+04:00ინტერაპტები<b style="font-weight: normal;"></b><br />
<div dir="ltr" id="docs-internal-guid-a98bbffa-5d8f-d02f-2069-9c0f7e89bc7e" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="IMG_20140909_195015.jpg" height="468" src="https://lh4.googleusercontent.com/Ycuac9PKkGu_UtxICIgGxAMRusqB6YQ1AcPy0heglb4FSsvqtsOMZTyZ-56jVZS-d7utlcUdb6NaJUHmVnF_y4mcvMp-2S3wuvsNjTnF7ahMniYsWdQ7pBIZGwSzMqgoWQ" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></b></div>
<b style="font-weight: normal;">
<br />
</b><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ეს ტუტორიალი მიზნად ისახავს დაწვრილებით ავხსნა თუ რა არის ინტერაპტი და რას წარმოადგენს ის მიკრო კონტროლერში. ჩემი აზრით ეს საოცრად მოქნილი და დახვეწილი მექანიზმია, რომელიც საშუალებას გვაძლევს დარწმუნებულები ვიყოთ იმაში, რომ ყველაფრის შემოწმება ჩვენზე არ იქნება დამოკიდებული მიკრო კონტროლერის დაპროგრამებისას.</span></b><br />
<br />
<a name='more'></a><br /><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">რა არის ინტერაპტი?</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">როგორც ვიცით მიკრო კონტროლერებში პროგრამული ბრძანებები მიმდევრობით სრულდება. მიკრო კონტროლერები ურთიერთქმედებენ ფიზიკურ გარე სამყაროსთან. გარე სამყარო კი ხშირად გაუთვლელია, რაც იმას ნიშნავს, რომ რაიმე ცვლილებამ შეიძლება გაუთვალისწინებელი პრობლემები შეუქმნას კოდს, თუ შესაბამისი, წინასწარ გაწერილი, ინსტრუქცია ვერ მოიძებნა.</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">მაგალითისთვის ავიღოთ მოწყობილობა, რომელიც აცხობს ნამცხვრებს, ხოლო გამომცხვარი ნამცხვრების დათვლის მიხედვით ანგარიშობს მათი გაყიდვიდან მიღებულ შემოსავალს. როდესაც ეს რიცხვი საკმაოდ დიდი გახდება მიკრო კონტროლერისთვის საანგარიშოდ, მაშინ შეიძლება ამ ყველაფერმა დიდი დრო წაიღოს და ნამცხვრები დამწვარი გამოვიდეს. სწორედ ამ დროს თამაშობს ინტერაპტი დიდ როლს - შეაჩეროს პროგრამის შესრულება, გააკეთოს რაღაც დავალება, და განაგრძოს პროგრამის შესრულება იმ ადგილიდან სადაც შეწყვიტა. ჩვენ გამოგონილ მოწყობილობას რომ დავუმატოთ </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">ინტერაპტი, </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">მაშინ ის მიკრო კონტროლერს “ეტყვის” როდის უნდა გამოიღოს ნამცხვარი რომ არ დაიწვას და გამოღების შემდეგ ისევ გააგრძელებს ანგარიშს. </span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">მოქმედების თეორია</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ვნახოთ პროგრამა, რომელიც განკუთვნილია AtMega168 / AtMega328-თვის.</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr io.h=""></avr></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr interrupt.h=""></avr></span></b></div>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void setup()</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> sei(); //Enable Global Interrupts</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void loop()</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //TODO1</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISR(INT0_vect)</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //TODO2</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISR(BADISR_vect)</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //TODO3</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">setup ფუნქციაში ამჟამად მოთავსებულია მხოლოდ ერთი ინსტრუქცია - sei(), რომელიც მიკრო კონტროლერს ეუბნება, რომ გააქტიუროს ინტერაპტები. ხოლო რაც შეეხება ISR(x_vect) არის ზოგადი ფუნქცია, როდესაც x ვექტორს გამოიძახებს მიკრო კონტროლერი. ეს კოდი კი ეუბნება კონტროლერს ამ ვექტორის გამოძახების შემდეგ რა ინსტრუქცია შეასრულოს. მიკრო კონტროლერის მონაცემთა ფურცელში ინტერაპტის ვექტორში არ არის დატანილი BADISR წევრი, რომელიც იმ შემთხვევაში შესრულდება, როდესაც კოდი გამოიძახებს იმ ვექტორს, რომელიც არ არსებობს. </span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ინტერაპტის დაბლოკვაც არის შესაძლებელია, რადგან არის სიტუაციები, როდესაც ინფორმაციის გაცემის დროს არ არის სასურველი ინტერაპტმა ეს პროცესი შეწყვიტოს რაღაც დროით. ამიტომ ამ შემთხვევებისთვის არსებობს cli() ფუნქცია, რომელიც უზრუნველყოფს ინტერაპტის დაბლოკვას.</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr io.h=""></avr></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr interrupt.h=""></avr></span></b></div>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void setup()</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> sei(); //Enable Global Interrupts</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void loop()</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> cli();</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //Interrupts Are Disabled</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> sei();</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //Re-enable Interrupts</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISR(INT0_vect)</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //TODO2</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<b style="font-weight: normal;"><span style="color: #0b5394;"></span><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISR(BADISR_vect)</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //TODO3</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ასევე აქვე უნდა აღვნიშნო ის, რომ ISR ფუქნციას ვერ გადავცემთ არგუმენტს, რადგან მას ამის მხარდაჭერა არ გააჩნია, ამიტომ გლობალური ცვლადის ინიციალიზაცია და მისი მოდიფიკაცია საკმაოდ ჭკვიანურია. ამისთვის გლობალურ ცვლადი უნდა განვსაზღვროთ შემდეგნაირად, რომ ISR ში მოთავსებულ კოდს შეეძლოს ამ ცვლადის მოდიფიცირება.</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">volatile uint8_t GloblaVarForInterrupt;</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">გარე ინტერაპტები</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">გარე ინტერაპტების განხილვას დავიწყებ AtMega168/328-სთვის, რადგან ეს ჩიპები საკმაოდ გავრცელებულია არდუინოს ეკოსისტემაში. ამ ნაწილის მთავარი თემა არის გარე ინტერაპტები, ეს ინტერაპტები გამოიძახება იმ შემთხვევაში, როდესაც INT0 / INT1-ზე სიგნალის მნიშვნელობა შეიცვლება. ვნახოთ ქვემოთ მოცემული სურათი და მასზე მწვანედ აღნიშნული ორი პინი</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="imagesB5812G0S.jpg" height="185" src="https://lh4.googleusercontent.com/EqIK4Wg-j013_oJLTwcEJm2xHg-l3D8upPlQf1vUZEWIADPR-D7wVyS_NHiCLHnuN-gkfxsl0vEISNXhQR_Kelviu6cAq9QVxv6D3CV1hEbsVL7MXoimXnma-o_GvMJINQ" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="272" /></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">გარე ინტერაპტები საკმაოდ მძლავრი იარაღია ჩვენს ხელში, მათი კონფიგურაცია ისე შეიძლება, რომ ინტერაპტის კოდი გამოძახებული იქნას ოთხ გარემოებაში, ესენია:</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1. როდესაც პინი წაიკითხავს ლოგიკურ ნულს (LOW)</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">2. როდესაც ერთი ლოგიკური სიგნალი შეიცვლება მეორეთი </span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">3. როდესაც მაღალი (HIGH) სიგნალიდან გადადის დაბალ (LOW) სიგნალზე</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">4. როდესაც დაბალი (LOW) სიგნალიდან გადადის მაღალ (HIGH) სიგნალზე</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">გარე ინტერაპტები იყენებენ 3 რეგისტრს, რომლებიც შეგიძლიათ იპოვოთ “external interrupts” სექციაში, მიკრო კონტროლერის მონაცემთა ფურცელში. პირველი რეგისტრია </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">EICRA (External Interrupt Control Register A). </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">და მასში, ჩვენთვის საინტერესოა მხოლოდ პირველი 4 ბიტი.</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="EICRA Register.PNG" height="129" src="https://lh4.googleusercontent.com/ZMTm57zjNBL1irr1h0DvLxvTcIyP2sYr7KAMU8nw2SuGyz8z3hn3j2PQ7htKI3_ggyQCwd4pWaTm-BHTQPIciCroBsaikXF7V02cX6sYMk2D3o7sMbUvUHVyp1TMwz6Ccg" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISCnn-ის მნიშვნელობების ცვლით “ვეუბნებით” მიკრო კონტროლერს, რა გარემოების დროს უნდა შეასრულოს ინტერაპტის კოდი:</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border-image: none; border: currentColor;"><colgroup><col width="64"></col><col width="59"></col><col width="501"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISCn1</span></div>
</td><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISCn0</span></div>
</td><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><br /></td></tr>
<tr style="height: 0px;"><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">0</span></div>
</td><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">0</span></div>
</td><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">როდესაც პინზე არის ლოგიკური ნულიანი</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">0</span></div>
</td><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1</span></div>
</td><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">როდესაც პინზე არსებული სიგნალი შეიცვლება</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1</span></div>
</td><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">0</span></div>
</td><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">როდესაც სიგნალი იცვლება ‘1’-დან ‘0’-კენ</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1</span></div>
</td><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1</span></div>
</td><td style="border-image: none; border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">როდესაც სიგნალი იცვლება ‘0’-დან ‘1’-კენ</span></div>
</td></tr>
</tbody></table>
</div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ჩვენი მეორე რეგისტრია </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">EIMSK (External Interrupt Mask Register)</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"><img alt="EIMSR.PNG" height="125" src="https://lh6.googleusercontent.com/g10O0-krDFyJw3dQUUEymZ1bxa6AAcu7kpy0j7_rxghYbkTh-p3i3sok5K3iBl0F86wW632sqsbT3bhG1g9FCrtF4RxxL1dvgW46IV0mrYwzOdi67SGEWqQbeHYXFHoYVA" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ხოლო მესამე რეგისტრია </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">EIFR (External Interrupt Flag Register)</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="EIFR.PNG" height="139" src="https://lh6.googleusercontent.com/zq6SiwmljCECQxb4UAO3eZ2CMJL4jOeEj5iIHwl02eUE3acrBDgdLAxEIkLtb1GuBbowUbt9fHCi-WyYN_8RrMnhUaKhPYMKqWKFQIUBXFYhvufw5A7iVZ4jftUXOwh-wg" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ამ სამი რეგისტრის გამოყენებით კი ქვემოთ არის მოცემული კოდი:</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr io.h=""></avr></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr interrupt.h=""></avr></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">int IntPin = 2; </span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//PCINT0</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void setup()</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> DDRD |= (0<<intpin span=""><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//PD2 is Input</span></intpin></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> PORTD |= (1<<intpin span=""><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//Pulled-up</span></intpin></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br /></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> EIMCRA |= (1<<isc00 span=""><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//Any Logic Change</span></isc00></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> EIMSK |= (1<<int0 span=""><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//Turn On INT0</span></int0></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br /></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> sei(); </span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//Turn On Global Interrupts</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void loop()</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISR(INT0_vect)</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//TODO</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">PIN Change Interrupts </span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ერთ-ერთი სიახლე Atmega88-დან Atmega328-მდე მიკრო კონტროლერებში არის პინის მდგომარეობის ცვლილების ინტერაპტი. აქაც მოცემულია რამდენიმე რეგისტრი და მათი კონტროლი საშუალებას გვაძლევს (მაგალითისთვის ავიღოთ Atmega168/328) ყველა პინი გავაკონტროლოთ და მათზე ლოგიკური დონის შეცვლის თანავე შევასრულებინოთ კონტროლერს რაღაც კოდი. თუ დააკვირდებით, ყველა პინი მონიშნულია PCINTxx ნომრით მიკრო კონტროლერზე რაც ნიშნავს - Pin Change INTerrupt xx. ვნახოთ სურათი, მხოლოდ აქ მწვანე ხაზებს არ მივაქციოთ ყურადღება, უბრალოდ შევნიშნოთ, რომ PCINTxx იარლიყით არის მონიშნული თითქმის ყველა პინი (კვების გარდა). </span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="imagesB5812G0S.jpg" height="185" src="https://lh4.googleusercontent.com/EqIK4Wg-j013_oJLTwcEJm2xHg-l3D8upPlQf1vUZEWIADPR-D7wVyS_NHiCLHnuN-gkfxsl0vEISNXhQR_Kelviu6cAq9QVxv6D3CV1hEbsVL7MXoimXnma-o_GvMJINQ" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="272" /></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ამ შემთხვევაში ჩვენს განკარგულებაშია 5 რეგისტრი, რომლიდანაც იმართება ამ ინტერაპტების ქცევა. ესენია</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Pin Change Interrupt Control Register</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"><img alt="PCICR.PNG" height="145" src="https://lh3.googleusercontent.com/T-yETUrrJew7dnbhKt2C6Vi1pvk5UDKNlJOghc79NhDteX05AU8rDUtlcDLNPI8T_dgXI3kCkDuWGDGVsG1m8qn8rxmtEzgiYAFZBh6GfcZG8xhQBauquXn5Idc6YSLP6A" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Pin Change Interrupt Flag Register</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"><img alt="PCIFR.PNG" height="151" src="https://lh5.googleusercontent.com/epmaAd4G9nzuthIC0nmXvAElkYhcTQEwBw0NSqGLSyM3qitK9GY3XYQlc391_1r8kyFTdSmLMAYVZUFeSa6PHIJNURXGZCph4M7ghi_sZkGOTi7qOp7BMcrVDYV1cF_-gg" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Pin Change Mask Register 0</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"><img alt="PCMSK0.PNG" height="132" src="https://lh3.googleusercontent.com/3dHXCpsdTO613SGgE9_eHuVIN3qg6SfZoTfIQcQd38R7g_2DzAh8yHpxc193MAAbcVB-RbFbFMVFu31cWgatqnLUF3gZ43PDrzhzJpnzdfjF1TKwd3lHqdCDZIiPrvpO8A" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Pin Change Mask Register 1</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"><img alt="PCMSK1.PNG" height="139" src="https://lh5.googleusercontent.com/gCmaSBSYx64DXCVX7Bvq5JoMPxaczZZ_bv3F2RVMZUtExgL4lNrAtMZkeoKaH7Lua4pRfNEGdUGvqRfg0S5KPRUjs0Fyu9MGMM0vACsB53nHNb9Sp5yIwoNejjROoum10Q" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Pin Change Mask Register 2</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"><img alt="PCMSK2.PNG" height="144" src="https://lh5.googleusercontent.com/AfyC2W2vvtEdB5QhWRiDqIuYgyEgxhWH90hpfbw8k_CNrSfOGGhfKBfIEHBuorFsq6kL_RjkIKomSDSVF8N-tvZTgd2mUnVcKrBREVpHYyoXscnAH3AxQ2rGstAz9AMhRA" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">PCINTxx სერვისის გამოყენებისას გვაქვს ორი შეზღუდვა</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1. არ შეგვიძლია გარემო პირობების წინასწარი კონფიგურაცია, როგორც INTx-ის სერვისის შემთხვევაში, რაც იმას ნიშნავს, რომ ვერ შევძლებთ გავიგოთ სიგნალი პინზე ნულიდან ერთიანით შეიცვალა თუ პირიქით, ამიტომ მოგიწევთ პინის წინა მდგომარეობის დამახსოვრება, რომ შესაბამისი დასკვნები გააკეთოთ პინის მდგომარეობის შეცვლის დროს ინტერაპტის კოდის შესრულებისას. </span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">2. რადგან 8 პინი ინაწილებს ერთ PCINTx ვექტორს ( /რეგისტრს), ინეტრაპტის დაფიქსირებისას მოგიწევთ მოძებნა იმ გარემოების, თუ რომელმა მოვლენამ გამოიწვია ამ რეგისტრის ინტერაპტის გააქტიურება. გამოსავალი აქაც იგივეა - დაიმახსოვროთ პინების სტატიკური მდგომარეობა და შემდეგ ინტერაპტის გააქტიურებისას შეადაროთ ახალი მდგომარეობა ძველს. </span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">თუ ეს ყველაფერი ცოტა (ან ძალიან) გაუგებარია, იქნებ კოდი დაგეხმაროთ ამ ყველაფრის გაგებაში. </span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr io.h=""></avr></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr interrupt.h=""></avr></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void setup()</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> DDRD = (0<<pd2 pd3="" pd4="" span=""></pd2></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> DDRB = (1<<pb0 pb1="" pb2="" span=""></pb0></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> PORTD = 0b11111111;</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br /></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> PCICR |= (1<<pcie2 span=""></pcie2></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> PCMSK2 |= (1<<pcint18 pcint19="" pcint20="" span=""></pcint18></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> sei();</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void loop()</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br /></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISR(PCINT2_vect)</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> byte pat1 = 0b11111011;</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> byte pat2 = 0b11110111;</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> byte pat3 = 0b11101111;</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br /></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> if(PIND == pat1)</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">PORTB |= (1<<pb0 span=""></pb0></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> if(PIND == pat2)</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">PORTB |= (1<<pb1 span=""></pb1></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> if(PIND == pat3)</span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">PORTB |= (1<<pb2 span=""></pb2></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ახლა დავიწყოთ კოდის გარჩევა და ვფიქრობ ყველაფერი ნათელი გახდება. პირველ სამი ხაზი გასაგები უნდა იყოს. თუ არა მაშინ იხილეთ ეს </span><a href="http://avrcontrollers.blogspot.com/2014/08/blog-post_13.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">ტუტორიალი</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">. PORTD რეგისტრის PD2, PD3 და PD4 პინებს ვიყენებთ ინტერაპტის სერვისის დემონსტრაციისთვის, ხოლო PB0, PB1 და PB2 რეგისტრებს შესაბამისი LED-ის ასანთებათ. როგორც ქვემოთ მოცემულ სურათზეა მოცემული, თუ დააკვირდებით, ღილაკების უკან თითოეულ ღილაკს შეესაბამება (მარჯვნიდან) წითელი, ცისფერი და ყვითელი სადენი. როდესაც ღილაკს დავაჭერთ ხელს ინტერაპტი აქტიურდება და ინთება შესაბამისი ფერის დიოდი. მარჯვენა პლანზე.</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="IMG_20140909_195015.jpg" height="468" src="https://lh5.googleusercontent.com/gdLFNpOTg-lZ_vYtlxUlM_HbwCfhRzgR6ic4oejSP9R1Q0ZrOAo_1FV4_ES0tmh-g1kusPeGkE6taEw_gF2wfaVNAxV3TWc5WmP7LsOqLRxt_OCFWcKnleBH1KWv0IE5lQ" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></b></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">მესამე ხაზზე საკონტროლო რეგისტრში ვუთითებთ, რომ PCMSK2 რეგისტრში არსებული პინებისთვის გვინდა ინტერაპტის სერვისი. შემდეგ PCMSK2 რეგისტრში ვუთითებთ კერძოდ რომელი PCINTx პინისთვის გვინდა ამ სერვისის გააქტიურება. </span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ამის შემდეგ კი განვსაზღვრავთ კოდს, რომელიც ინტერაპტის გააქტიურებისას ამოქმედდება. ბოლოს კი ვიდეო დემონსტრაცია</span></b></div>
<b style="font-weight: normal;"><br /></b>
<div class="separator" style="clear: both; text-align: center;">
<b style="font-weight: normal;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/g7wl0-EmpYI?feature=player_embedded' frameborder='0'></iframe></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">საერთო ჯამში ინტერაპტი საკმაოდ მოქნილი იარაღია. ეს სერვისი არამარტო პინების მდგომარეობის ცვლილების დროს შეიძლება იქნას გამოყენებული, არამედ კიდევ ბევრ სხვა პერიფერიებთან საურთიერთობოდ. ჩემს მიერ მოყვანილ კერძო მაგალითში კი loop ში აღარ მოგვიწევს კოდის დაწერა, რომელიც გამუდმებით შეამოწმებს ღილაკების მდგომარეობას. უბრალოდ ინტერაპტი იზრუნებს ამაზე!</span></b></div>
<b style="font-weight: normal;"><br /></b>
<b style="font-weight: normal;"><br /></b></div>
<b style="font-weight: normal;">
</b><br />
<textarea id="cont" name="area3" style="display: none; height: 100%; width: 100%;"> <b style="font-weight: normal;"></b><div dir="ltr" id="docs-internal-guid-a98bbffa-5d8f-d02f-2069-9c0f7e89bc7e" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<b style="font-weight: normal;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="IMG_20140909_195015.jpg" height="468" src="https://lh4.googleusercontent.com/Ycuac9PKkGu_UtxICIgGxAMRusqB6YQ1AcPy0heglb4FSsvqtsOMZTyZ-56jVZS-d7utlcUdb6NaJUHmVnF_y4mcvMp-2S3wuvsNjTnF7ahMniYsWdQ7pBIZGwSzMqgoWQ" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></b></div>
<b style="font-weight: normal;">
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ეს ტუტორიალი მიზნად ისახავს დაწვრილებით ავხსნა თუ რა არის ინტერაპტი და რას წარმოადგენს ის მიკრო კონტროლერში. ჩემი აზრით ეს საოცრად მოქნილი და დახვეწილი მექანიზმია, რომელიც საშუალებას გვაძლევს დარწმუნებულები ვიყოთ იმაში, რომ ყველაფრის შემოწმება ჩვენზე არ იქნება დამოკიდებული მიკრო კონტროლერის დაპროგრამებისას.</span><br />
<a name='more'></a><br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">რა არის ინტერაპტი?</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">როგორც ვიცით მიკრო კონტროლერებში პროგრამული ბრძანებები მიმდევრობით სრულდება. მიკრო კონტროლერები ურთიერთქმედებენ ფიზიკურ გარე სამყაროსთან. გარე სამყარო კი ხშირად გაუთვლელია, რაც იმას ნიშნავს, რომ რაიმე ცვლილებამ შეიძლება გაუთვალისწინებელი პრობლემები შეუქმნას კოდს, თუ შესაბამისი, წინასწარ გაწერილი, ინსტრუქცია ვერ მოიძებნა.</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">მაგალითისთვის ავიღოთ მოწყობილობა, რომელიც აცხობს ნამცხვრებს, ხოლო გამომცხვარი ნამცხვრების დათვლის მიხედვით ანგარიშობს მათი გაყიდვიდან მიღებულ შემოსავალს. როდესაც ეს რიცხვი საკმაოდ დიდი გახდება მიკრო კონტროლერისთვის საანგარიშოდ, მაშინ შეიძლება ამ ყველაფერმა დიდი დრო წაიღოს და ნამცხვრები დამწვარი გამოვიდეს. სწორედ ამ დროს თამაშობს ინტერაპტი დიდ როლს - შეაჩეროს პროგრამის შესრულება, გააკეთოს რაღაც დავალება, და განაგრძოს პროგრამის შესრულება იმ ადგილიდან სადაც შეწყვიტა. ჩვენ გამოგონილ მოწყობილობას რომ დავუმატოთ </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">ინტერაპტი, </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">მაშინ ის მიკრო კონტროლერს “ეტყვის” როდის უნდა გამოიღოს ნამცხვარი რომ არ დაიწვას და გამოღების შემდეგ ისევ გააგრძელებს ანგარიშს. </span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">მოქმედების თეორია</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ვნახოთ პროგრამა, რომელიც განკუთვნილია AtMega168 / AtMega328-თვის.</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr/io.h></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr/interrupt.h></span></div>
<span style="color: #0b5394;"></span><br />
<span style="color: #0b5394;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void setup()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> sei(); //Enable Global Interrupts</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<span style="color: #0b5394;"></span><br />
<span style="color: #0b5394;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void loop()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //TODO1</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<span style="color: #0b5394;"></span><br />
<span style="color: #0b5394;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISR(INT0_vect)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //TODO2</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<span style="color: #0b5394;"></span><br />
<span style="color: #0b5394;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISR(BADISR_vect)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //TODO3</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">setup ფუნქციაში ამჟამად მოთავსებულია მხოლოდ ერთი ინსტრუქცია - sei(), რომელიც მიკრო კონტროლერს ეუბნება, რომ გააქტიუროს ინტერაპტები. ხოლო რაც შეეხება ISR(x_vect) არის ზოგადი ფუნქცია, როდესაც x ვექტორს გამოიძახებს მიკრო კონტროლერი. ეს კოდი კი ეუბნება კონტროლერს ამ ვექტორის გამოძახების შემდეგ რა ინსტრუქცია შეასრულოს. მიკრო კონტროლერის მონაცემთა ფურცელში ინტერაპტის ვექტორში არ არის დატანილი BADISR წევრი, რომელიც იმ შემთხვევაში შესრულდება, როდესაც კოდი გამოიძახებს იმ ვექტორს, რომელიც არ არსებობს. </span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ინტერაპტის დაბლოკვაც არის შესაძლებელია, რადგან არის სიტუაციები, როდესაც ინფორმაციის გაცემის დროს არ არის სასურველი ინტერაპტმა ეს პროცესი შეწყვიტოს რაღაც დროით. ამიტომ ამ შემთხვევებისთვის არსებობს cli() ფუნქცია, რომელიც უზრუნველყოფს ინტერაპტის დაბლოკვას.</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr/io.h></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr/interrupt.h></span></div>
<span style="color: #0b5394;"></span><br />
<span style="color: #0b5394;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void setup()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> sei(); //Enable Global Interrupts</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<span style="color: #0b5394;"></span><br />
<span style="color: #0b5394;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void loop()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> cli();</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //Interrupts Are Disabled</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> sei();</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //Re-enable Interrupts</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<span style="color: #0b5394;"></span><br />
<span style="color: #0b5394;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISR(INT0_vect)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //TODO2</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<span style="color: #0b5394;"></span><br />
<span style="color: #0b5394;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISR(BADISR_vect)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> //TODO3</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ასევე აქვე უნდა აღვნიშნო ის, რომ ISR ფუქნციას ვერ გადავცემთ არგუმენტს, რადგან მას ამის მხარდაჭერა არ გააჩნია, ამიტომ გლობალური ცვლადის ინიციალიზაცია და მისი მოდიფიკაცია საკმაოდ ჭკვიანურია. ამისთვის გლობალურ ცვლადი უნდა განვსაზღვროთ შემდეგნაირად, რომ ISR ში მოთავსებულ კოდს შეეძლოს ამ ცვლადის მოდიფიცირება.</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">volatile uint8_t GloblaVarForInterrupt;</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">გარე ინტერაპტები</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">გარე ინტერაპტების განხილვას დავიწყებ AtMega168/328-სთვის, რადგან ეს ჩიპები საკმაოდ გავრცელებულია არდუინოს ეკოსისტემაში. ამ ნაწილის მთავარი თემა არის გარე ინტერაპტები, ეს ინტერაპტები გამოიძახება იმ შემთხვევაში, როდესაც INT0 / INT1-ზე სიგნალის მნიშვნელობა შეიცვლება. ვნახოთ ქვემოთ მოცემული სურათი და მასზე მწვანედ აღნიშნული ორი პინი</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="imagesB5812G0S.jpg" height="185" src="https://lh4.googleusercontent.com/EqIK4Wg-j013_oJLTwcEJm2xHg-l3D8upPlQf1vUZEWIADPR-D7wVyS_NHiCLHnuN-gkfxsl0vEISNXhQR_Kelviu6cAq9QVxv6D3CV1hEbsVL7MXoimXnma-o_GvMJINQ" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="272" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">გარე ინტერაპტები საკმაოდ მძლავრი იარაღია ჩვენს ხელში, მათი კონფიგურაცია ისე შეიძლება, რომ ინტერაპტის კოდი გამოძახებული იქნას ოთხ გარემოებაში, ესენია:</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1. როდესაც პინი წაიკითხავს ლოგიკურ ნულს (LOW)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">2. როდესაც ერთი ლოგიკური სიგნალი შეიცვლება მეორეთი </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">3. როდესაც მაღალი (HIGH) სიგნალიდან გადადის დაბალ (LOW) სიგნალზე</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">4. როდესაც დაბალი (LOW) სიგნალიდან გადადის მაღალ (HIGH) სიგნალზე</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">გარე ინტერაპტები იყენებენ 3 რეგისტრს, რომლებიც შეგიძლიათ იპოვოთ “external interrupts” სექციაში, მიკრო კონტროლერის მონაცემთა ფურცელში. პირველი რეგისტრია </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">EICRA (External Interrupt Control Register A). </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">და მასში, ჩვენთვის საინტერესოა მხოლოდ პირველი 4 ბიტი.</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="EICRA Register.PNG" height="129" src="https://lh4.googleusercontent.com/ZMTm57zjNBL1irr1h0DvLxvTcIyP2sYr7KAMU8nw2SuGyz8z3hn3j2PQ7htKI3_ggyQCwd4pWaTm-BHTQPIciCroBsaikXF7V02cX6sYMk2D3o7sMbUvUHVyp1TMwz6Ccg" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISCnn-ის მნიშვნელობების ცვლით “ვეუბნებით” მიკრო კონტროლერს, რა გარემოების დროს უნდა შეასრულოს ინტერაპტის კოდი:</span></div>
<br />
<br />
<br />
<div dir="ltr" style="margin-left: 0pt;">
<table style="border-collapse: collapse; border-image: none; border: currentColor;"><colgroup><col width="64"></col><col width="59"></col><col width="501"></col></colgroup><tbody>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISCn1</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISCn0</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><br /></td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">0</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">0</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">როდესაც პინზე არის ლოგიკური ნულიანი</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">0</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">როდესაც პინზე არსებული სიგნალი შეიცვლება</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">0</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">როდესაც სიგნალი იცვლება ‘1’-დან ‘0’-კენ</span></div>
</td></tr>
<tr style="height: 0px;"><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1</span></div>
</td><td style="border: 1px solid rgb(0, 0, 0); padding: 7px; vertical-align: top;"><div dir="ltr" style="line-height: 1; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">როდესაც სიგნალი იცვლება ‘0’-დან ‘1’-კენ</span></div>
</td></tr>
</tbody></table>
</div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ჩვენი მეორე რეგისტრია </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">EIMSK (External Interrupt Mask Register)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"><img alt="EIMSR.PNG" height="125" src="https://lh6.googleusercontent.com/g10O0-krDFyJw3dQUUEymZ1bxa6AAcu7kpy0j7_rxghYbkTh-p3i3sok5K3iBl0F86wW632sqsbT3bhG1g9FCrtF4RxxL1dvgW46IV0mrYwzOdi67SGEWqQbeHYXFHoYVA" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ხოლო მესამე რეგისტრია </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">EIFR (External Interrupt Flag Register)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="EIFR.PNG" height="139" src="https://lh6.googleusercontent.com/zq6SiwmljCECQxb4UAO3eZ2CMJL4jOeEj5iIHwl02eUE3acrBDgdLAxEIkLtb1GuBbowUbt9fHCi-WyYN_8RrMnhUaKhPYMKqWKFQIUBXFYhvufw5A7iVZ4jftUXOwh-wg" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ამ სამი რეგისტრის გამოყენებით კი ქვემოთ არის მოცემული კოდი:</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr/io.h></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr/interrupt.h></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">int IntPin = 2; </span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//PCINT0</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void setup()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> DDRD |= (0<<IntPin); </span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//PD2 is Input</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> PORTD |= (1<<IntPin); </span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//Pulled-up</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> EIMCRA |= (1<<ISC00); </span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//Any Logic Change</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> EIMSK |= (1<<INT0); </span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//Turn On INT0</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> sei(); </span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//Turn On Global Interrupts</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void loop()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISR(INT0_vect)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">//TODO</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">PIN Change Interrupts </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ერთ-ერთი სიახლე Atmega88-დან Atmega328-მდე მიკრო კონტროლერებში არის პინის მდგომარეობის ცვლილების ინტერაპტი. აქაც მოცემულია რამდენიმე რეგისტრი და მათი კონტროლი საშუალებას გვაძლევს (მაგალითისთვის ავიღოთ Atmega168/328) ყველა პინი გავაკონტროლოთ და მათზე ლოგიკური დონის შეცვლის თანავე შევასრულებინოთ კონტროლერს რაღაც კოდი. თუ დააკვირდებით, ყველა პინი მონიშნულია PCINTxx ნომრით მიკრო კონტროლერზე რაც ნიშნავს - Pin Change INTerrupt xx. ვნახოთ სურათი, მხოლოდ აქ მწვანე ხაზებს არ მივაქციოთ ყურადღება, უბრალოდ შევნიშნოთ, რომ PCINTxx იარლიყით არის მონიშნული თითქმის ყველა პინი (კვების გარდა). </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="imagesB5812G0S.jpg" height="185" src="https://lh4.googleusercontent.com/EqIK4Wg-j013_oJLTwcEJm2xHg-l3D8upPlQf1vUZEWIADPR-D7wVyS_NHiCLHnuN-gkfxsl0vEISNXhQR_Kelviu6cAq9QVxv6D3CV1hEbsVL7MXoimXnma-o_GvMJINQ" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="272" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ამ შემთხვევაში ჩვენს განკარგულებაშია 5 რეგისტრი, რომლიდანაც იმართება ამ ინტერაპტების ქცევა. ესენია</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Pin Change Interrupt Control Register</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"><img alt="PCICR.PNG" height="145" src="https://lh3.googleusercontent.com/T-yETUrrJew7dnbhKt2C6Vi1pvk5UDKNlJOghc79NhDteX05AU8rDUtlcDLNPI8T_dgXI3kCkDuWGDGVsG1m8qn8rxmtEzgiYAFZBh6GfcZG8xhQBauquXn5Idc6YSLP6A" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Pin Change Interrupt Flag Register</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"><img alt="PCIFR.PNG" height="151" src="https://lh5.googleusercontent.com/epmaAd4G9nzuthIC0nmXvAElkYhcTQEwBw0NSqGLSyM3qitK9GY3XYQlc391_1r8kyFTdSmLMAYVZUFeSa6PHIJNURXGZCph4M7ghi_sZkGOTi7qOp7BMcrVDYV1cF_-gg" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Pin Change Mask Register 0</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"><img alt="PCMSK0.PNG" height="132" src="https://lh3.googleusercontent.com/3dHXCpsdTO613SGgE9_eHuVIN3qg6SfZoTfIQcQd38R7g_2DzAh8yHpxc193MAAbcVB-RbFbFMVFu31cWgatqnLUF3gZ43PDrzhzJpnzdfjF1TKwd3lHqdCDZIiPrvpO8A" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Pin Change Mask Register 1</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"><img alt="PCMSK1.PNG" height="139" src="https://lh5.googleusercontent.com/gCmaSBSYx64DXCVX7Bvq5JoMPxaczZZ_bv3F2RVMZUtExgL4lNrAtMZkeoKaH7Lua4pRfNEGdUGvqRfg0S5KPRUjs0Fyu9MGMM0vACsB53nHNb9Sp5yIwoNejjROoum10Q" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Pin Change Mask Register 2</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;"><img alt="PCMSK2.PNG" height="144" src="https://lh5.googleusercontent.com/AfyC2W2vvtEdB5QhWRiDqIuYgyEgxhWH90hpfbw8k_CNrSfOGGhfKBfIEHBuorFsq6kL_RjkIKomSDSVF8N-tvZTgd2mUnVcKrBREVpHYyoXscnAH3AxQ2rGstAz9AMhRA" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></div>
<br />
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">PCINTxx სერვისის გამოყენებისას გვაქვს ორი შეზღუდვა</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">1. არ შეგვიძლია გარემო პირობების წინასწარი კონფიგურაცია, როგორც INTx-ის სერვისის შემთხვევაში, რაც იმას ნიშნავს, რომ ვერ შევძლებთ გავიგოთ სიგნალი პინზე ნულიდან ერთიანით შეიცვალა თუ პირიქით, ამიტომ მოგიწევთ პინის წინა მდგომარეობის დამახსოვრება, რომ შესაბამისი დასკვნები გააკეთოთ პინის მდგომარეობის შეცვლის დროს ინტერაპტის კოდის შესრულებისას. </span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">2. რადგან 8 პინი ინაწილებს ერთ PCINTx ვექტორს ( /რეგისტრს), ინეტრაპტის დაფიქსირებისას მოგიწევთ მოძებნა იმ გარემოების, თუ რომელმა მოვლენამ გამოიწვია ამ რეგისტრის ინტერაპტის გააქტიურება. გამოსავალი აქაც იგივეა - დაიმახსოვროთ პინების სტატიკური მდგომარეობა და შემდეგ ინტერაპტის გააქტიურებისას შეადაროთ ახალი მდგომარეობა ძველს. </span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">თუ ეს ყველაფერი ცოტა (ან ძალიან) გაუგებარია, იქნებ კოდი დაგეხმაროთ ამ ყველაფრის გაგებაში. </span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr/io.h></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">#include <avr/interrupt.h></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void setup()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> DDRD = (0<<PD2) | (0<<PD3) | (0<<PD4); </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> DDRB = (1<<PB0) | (1<<PB1) | (1<<PB2);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> PORTD = 0b11111111;</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> PCICR |= (1<<PCIE2);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> PCMSK2 |= (1<<PCINT18) | (1<<PCINT19) | (1<<PCINT20); </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> sei();</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">void loop()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ISR(PCINT2_vect)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> byte pat1 = 0b11111011;</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> byte pat2 = 0b11110111;</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> byte pat3 = 0b11101111;</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> if(PIND == pat1)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">PORTB |= (1<<PB0);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> if(PIND == pat2)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">PORTB |= (1<<PB1);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> if(PIND == pat3)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">PORTB |= (1<<PB2);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ახლა დავიწყოთ კოდის გარჩევა და ვფიქრობ ყველაფერი ნათელი გახდება. პირველ სამი ხაზი გასაგები უნდა იყოს. თუ არა მაშინ იხილეთ ეს </span><a href="http://avrcontrollers.blogspot.com/2014/08/blog-post_13.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">ტუტორიალი</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">. PORTD რეგისტრის PD2, PD3 და PD4 პინებს ვიყენებთ ინტერაპტის სერვისის დემონსტრაციისთვის, ხოლო PB0, PB1 და PB2 რეგისტრებს შესაბამისი LED-ის ასანთებათ. როგორც ქვემოთ მოცემულ სურათზეა მოცემული, თუ დააკვირდებით, ღილაკების უკან თითოეულ ღილაკს შეესაბამება (მარჯვნიდან) წითელი, ცისფერი და ყვითელი სადენი. როდესაც ღილაკს დავაჭერთ ხელს ინტერაპტი აქტიურდება და ინთება შესაბამისი ფერის დიოდი. მარჯვენა პლანზე.</span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><img alt="IMG_20140909_195015.jpg" height="468" src="https://lh5.googleusercontent.com/gdLFNpOTg-lZ_vYtlxUlM_HbwCfhRzgR6ic4oejSP9R1Q0ZrOAo_1FV4_ES0tmh-g1kusPeGkE6taEw_gF2wfaVNAxV3TWc5WmP7LsOqLRxt_OCFWcKnleBH1KWv0IE5lQ" style="-webkit-transform: rotate(0.00rad); border-image: none; border: currentColor; transform: rotate(0rad);" width="624" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">მესამე ხაზზე საკონტროლო რეგისტრში ვუთითებთ, რომ PCMSK2 რეგისტრში არსებული პინებისთვის გვინდა ინტერაპტის სერვისი. შემდეგ PCMSK2 რეგისტრში ვუთითებთ კერძოდ რომელი PCINTx პინისთვის გვინდა ამ სერვისის გააქტიურება. </span></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ამის შემდეგ კი განვსაზღვრავთ კოდს, რომელიც ინტერაპტის გააქტიურებისას ამოქმედდება. ბოლოს კი ვიდეო დემონსტრაცია</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/g7wl0-EmpYI?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">საერთო ჯამში ინტერაპტი საკმაოდ მოქნილი იარაღია. ეს სერვისი არამარტო პინების მდგომარეობის ცვლილების დროს შეიძლება იქნას გამოყენებული, არამედ კიდევ ბევრ სხვა პერიფერიებთან საურთიერთობოდ. ჩემს მიერ მოყვანილ კერძო მაგალითში კი loop ში აღარ მოგვიწევს კოდის დაწერა, რომელიც გამუდმებით შეამოწმებს ღილაკების მდგომარეობას. უბრალოდ ინტერაპტი იზრუნებს ამაზე!</span></div>
<br />
<br /></div>
</b><br /></textarea>Jambazishvilihttp://www.blogger.com/profile/18313944956706696794noreply@blogger.com0tag:blogger.com,1999:blog-4951152045946376109.post-23813453293936111162014-08-31T23:39:00.001+04:002014-08-31T23:39:14.839+04:00ტაშით გააქტიურებადი განათება<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="download.jpg" height="244px;" src="https://lh3.googleusercontent.com/CbFceNjB2r9j8_Atyu14CbEc9OlmvfN2K5HAtZkvrKeHRLscz6KM9Jpc-RW6IJVhWtZwwFFNVs1GvuZ_7ex1H_5--_gc0FX8NMSXzS_tvrvhMzJO2gJHLzJB8dMqZFFa9A" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="206px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">პროექტი LC (Light Control), ჩემი აზრით არის ძალიან მაგარი, ვისაც სურს, რომ უბრალოდ ტაშით გააკონტროლოს ოთახში შუქი - აანთოს ან ჩააქროს. ამ ყველაფრის განხორციელება კი მომიწია რელეს გამოყენების გარეშე, რადგან უბრალოდ არ მქონდა, და გადავწყვიტე ჩემს ხელთ არსებული რესურსებით გამეკეთებინა ეს. </span></div>
<a name='more'></a><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">თავიდან დავიწყე შუქის მექანიკური ჩამრთველის დაშლით, ამ შემთხვევაში ფრთხილად იყავით, რადგან დენის დარტყმისგან არ ხართ დაცული. კარგი იქნება თუ კვებას ოთახში ან სახლში მაინც გათიშავთ, ცოტა ხნით მაინც, სანამ ამ საქმეს აკეთებთ. ჩემს შემთხვევაში ჩემი ჩამრთველი ისე გამოიყურება, როგორც ქვემოთ მოცემულ სურათზეა წარმოდგენილი</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="sc1.png" height="140px;" src="https://lh3.googleusercontent.com/FXEVUr4N1Pcxp7lsUvae1NJEkIm6dSCXbYhXloe-NHaXAv1sFtElhjY7-zbgdiix0JdUm2Io2RdCzHi2wC96lxp4e00oGmPYbpC-o47i-ijiINhunlJEZsAE1kq8InZZ7g" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="333px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">სურათზე მოცემული დეტალი არის 90 გრადუსით ამოტრიალებული. წითელი ხაზი, წარმოადგენს ღერძზე მიმაგრებულ გამტარს, რომელიც მცირეოდენი ბიძგის დროსაც კი იცვლის მდგომარეობას. და ერთმანეთთან აკავშრებს პირველ და მეორე სადენს, რომლებიც მართკუთხედების ადგილას არიან შეერთებული. თუ წითელი ღერძის ზემოთ დავამატებთ პატარა ელ. ძრავას, რომელსაც არაგამტარი ექნება და იმოძრავებს ძრავის ბრუნვისას, მაშინ შეგვეძლება წითელი ღერძის - წრედის შეკვრის კონტროლი. </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="sc1.png" height="140px;" src="https://lh5.googleusercontent.com/M4j5jLWiO2Aw8_dDR09TL7TzXlQzEfTcFoH4HwiJJDmpHSzMfgmoQWsLngi2I2Yk5aHaEERHq9-je5PXpTrEdNjEfx4sSRyBg4cZ5-Lo5D9IL1YejpLJmkCYuWG7WsSJwQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="333px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ეს ელ. ძრავა კი შეგიძლიათ იპოვოთ ამ </span><a href="http://www.ebay.com/itm/10pcs-New-4x12mm-DC3V-0-068A-Micro-Coreless-Vibrating-Vibrator-Vibration-Motor-/231214886317?pt=LH_DefaultDomain_0&hash=item35d57b2dad" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">ლინკზე</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">. ქვემოთ მოცემულია ამ ყველაფრის რეალიზაციის სურათი</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_20140831_181649.jpg" height="832px;" src="https://lh5.googleusercontent.com/EuUp4kzDSkvHpzHHlENKut5USR_WYPm_kreNsO9FFRO7minAxnXyv6TzGp9lZdR7_qhBfrEXPkLvxRuffEazVjHAAA4cdGrTQdMKxf1V7I2ZyRJ_FYhercW-YZnwnbGrpw" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ამ ყველაფრის განხორციელების შემდეგ უკვე ყველაფერი გაცილებით მარტივია. საჭიროა ხმის დაფიქსირება და მიკრო კონტროლერის ისე დაპროგრამება, რომ ხმაზე მან მოახდინოს რეაგირება. მიკროფონის სიგნალის გამაძლიერებლის აწყობა შეგიძლიათ ჩემი ძველი პლოგის ერთ-ერთი </span><a href="http://p11mb.blogspot.com/2014/03/cl.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">ტუტორიალის </span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">გამოყენებით.</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">მიკროფონის გამაძლიერებლის აწყობის შემდეგ, დაგჭირდებათ პროგრამა, რომელიც იქნება მაქსიმალურად დამოუკიდებელი და მარტივი. ექსპერიმენტებზე დაყრდნობით შემიძლია ვთქვა, რომ მომიხდა ავტომატური კალიბრაციის ფუნქციის დაწერა მიკროფონიდან წამოსული სიგნალისთვის, რადგან სხვადასხვა ძაბვაზე მუშაობისას მიკროფონიდან წამოსული ძაბვდა სხვადასხვანაირად იცვლება. მოკლედ ფუნქცია AutoCalib(), უზრუნველყოფს იმას, რომ ტაშის დაკვრის დროს გამაძლიერებლის გამოსასვლელ პინზე სიგნალი / ძაბვა მკვეთრად იცვლება. რადგან ეს ვიცით და გვაქვს უპირატესობა ეს ყველაფერი პროგრამაში უნდა გამოვიყენოთ, ამიტომ ფუნქციის გამოძახების დროს ფუნქცია კითხულობს ანალოგურ პინს და გლობალურ ცვლადებში (Min & Max) აახლებს ინფორმაციას წაკითხულ ძაბვაზე დაყრდნობით. თუ წაკითხული ძაბვა ნაკლებია მინიმალურ მნიშვნელობაზე, მაშინ პროგრამა იმახსოვრებს ამ მნიშვნველობას. იგივე პრინციპით ხდება მაქსიმალური მნიშვნელობის განახლებაც. </span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">მთავარ პროგრამაში, რომელიც loop შია მოთავსებული, 5 წამის განმავლობაში ხდება მაქსიმალური და მინიმალური მნიშვნელობის განახლება. სწორედ ამ დროს საჭიროა, რომ დაუკრათ ტაში 1 / 2-ჯერ და პროგრამა დაახლოებით “გაიგებს” როდის უნდა ჩართოს სინათლე და როდის გამორთოს. ამის შემდეგ, როდესაც უკვე მონაცემები დამახსოვრებულია ხდება LightControl() ფუნქციის მოქმედების დრო, როდესაც პროგრამა გამუდმებით ამოწმებს ანალოგურ პინს - გამაძლიერებიდან გამოსულ სიგნალს, რომელსაც მიკროფონიდან ვაძლიერებთ. როდესაც ტაშს დავუკრავთ, სიგნალი დაახლოებით ისე იცვლება, როგორც მონაცემების ჩაწერის დროს და სწორედ ამ დროს მიკრო კონტროლერმა უკვე “იცის”, რომ რაღაც ტაშის დაკვრის მაგვარი მოხდა, ამიტომ საჭიროა მოქმედება. ქვემოთ კი არის ვიდეო, რომელიც ამ ყველაფერს ასახავს მოქმედებაში</span></div>
<b style="font-weight: normal;"><br /></b>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/Rk7Ps7DBoyY?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
რაც შეეხება პროგრამულ <a href="https://drive.google.com/file/d/0B8INmvEfFu2zNThSRUlRWkVUbUk/edit?usp=sharing">კოდს</a>, გთავაზობთ არდუინოს ვერსიას, რომელიც არ იყენებს პირდაპირ რეგისტრებით მანიპულაციას. ხოლო რაც შეეხება იმ ვერსიას, რომელიც გამოიყენებს რეგისტრების პირადაპირ მანიპულაციას და მთელ "ამბავს" ავტვირთავ დატესტვის შემდეგ.</div>
<br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">ეს პროექტი რა თქმა უნდა აქ ვერ გაჩერდება და საჭიროა, რომ უფრო დაიხვეწოს.პროგრამა. ვფიქრობ კარგი იქნება რაიმე უკუკავშირის სახით დამატებითი სენსორის დამატება, რომ სინათლის ანთება და ჩაქრობა უფრო ოპტიმალური იყოს. ასევე ვაპირებ, რომ პროცესორი დავუკავშირო ინფრაწითელ სენსორს, რომელიც ადამიანის ოთახში შემოსვლის თანავე და სინათლის სენსორიდან მიღებულ ინფორმაციაზე დაყრდნობით გადაწყვეტს აანთოს თუ არა სინათლე.</span>Jambazishvilihttp://www.blogger.com/profile/18313944956706696794noreply@blogger.com0tag:blogger.com,1999:blog-4951152045946376109.post-52380919497760907372014-08-19T10:13:00.000+04:002014-08-23T02:47:51.237+04:00შიფტ რეგისტრები და 7 სეგმენტიანი დისპლეი<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="seq15a.gif" height="237px;" src="https://lh5.googleusercontent.com/hro4v6A-X9SEby4bnYs2jnKqUEGClgFR27oWk-fVznB_pY4Zawwn3tsrSwoWmnL9JeVhPHk85FhUr20WusJ6-_Y7oEDdc5ZKmDCIRglY_VB2Drw1wxpglxllJvWd91URrA" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="370px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ეს არის მეორე ტუტორიალი. მას შემდეგ რაც დავდე პირველი ტუტორიალი მიკრო კონტროლერის პინების მანიპულაციის შესახებ, ახლა დროა, ცოტა გავერთოთ და განვიხილოთ ისეთი ელექტრონული ელემენტი, როგორიცაა შიფტ რეგისტრი. ტუტორიალის დაწყებამდე კი დიდ მადლობას ვუხდი bildr.org-ის ადმინისტრაციას ვიზუალური ელემენტების გამოყენების ნების დართვისთვის.</span></div>
<a name='more'></a><br />
<b id="docs-internal-guid-069d91b2-ef2e-3c9b-234e-3e714109a9b0" style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">რა არის Shift Register</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">შიფტ რეგისტრი არის ინტეგრირებული მოწყობილობა, რომელიც სერიულ სიგნალს გარდაქმნის პარალელურად. ეს ძალიან მნიშვნელოვანი ელემენტია იმ მომენტში, როდესაც მიკრო კონტროლერის პინების დაზოგვა არის საჭირო და პროექტისთვის მნიშვნელოვანი. ხშირად მას იყენებენ დიოდების (დიოდში ვგულისხმობ შუქდიოდს) სამართავად. </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">სანამ მაგალითზე გადავიდოდეთ, აგიხსნით, როგორ მუშაობს ეს ელექტორნული ელემენტი. ახსნა რომ მარტივი გახდეს, მაგალითისთვის ავიღებ M74HC595 შიფტ რეგისტრს, რომელიც საკმაოდ გავრცელებული და პოპულარული მიკრო სქემაა და ფართოდ გამოიყენება სხვადასხვა ელ. მოწყობილობებში. თუ მონაცემთა ფაილს განვიხილავთ, მეორე გვერდზე გვექნება ასეთი სქემატური ნახაზი და პინების სახელები</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="574px-SN74HC595-pinout.png" height="599px;" src="https://lh6.googleusercontent.com/XmXiYxGDP1gzzaniDqDbKCr5FZIf7vwjSdjFnDRRrWmgzo-HsGt2F3PoaDYPqpTtPWWlpkGzmq4xwQMjhL00CoZdeic6-tnTktFROVeDQCQzxvc-8YV5iGqQAp8HQ0epVw" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="574px;" /></span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="595-logic-diagram.png" height="300px;" src="https://lh5.googleusercontent.com/LkUUJbwO4zV-WEreDa73cnAhKnDQ3DpVloTNV9uXNkRl7EWVo4cYGZ6hzzPHvKTOWcIyPhxupOE96Jh_VfRoKB3Kcz0bTnRXl4NY3jdXDyQyad76Zmd8ZL-Axw7FiIaoNg" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="389px;" /></span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">სადაც მოცემულია შიფტ რეგისტრის სამი ძირითადი შემადგენელი ელემენტი, რომლებსაც წარმოადგენენ მართკუთხა ყუთები. ზედა არის თვით შიფტ რეგისტრი, რომელიც ატარებს 1 ბიტს, ერთ სიგნალზე. ეს სიგნალი კი მოდის Serial In პინიდან. როდესაც 8 ბიტი შეივსება, QH’-დან გამოდის სიგნალი. SCK პინი კი, განსაზღვრავს როდის ხდება შიფტირება, ანუ ბიტების წინ წაწევა. როდესაც გვინდა 8 ბიტის შიფტ რეგისტრიდან კოპირება Storage Register-ში, საჭიროა RCK პინის შესავამისი კონტროლი. </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">როდესაც 8 ბიტი შენახულია მახსოვრობის რეგისტრში, ეს ინფორმაცია გადაეცემა მესამე შემადგენელ საფეხურს, რომლის “ჩართვასაც” უზრუნველყოფს G პინზე დაბალი (ლოგიკური ნულიანი) სიგნალის მიწოდება. ასევე მონაცემთა ფაილში მოგვეპოვება ასეთი ცხრილიც, რომელიც მთლიანად აღწერს შიფტ რეგისტრის მუშაობის პრინციპს.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="595-truth-table.png" height="299px;" src="https://lh3.googleusercontent.com/NNMBkrvqW5I8XWwYfbLz-quoZcZHize1NmCEekVhSc3jC5cX0fDxiltX_Ay2qbgm_FC8xw575dcLw67dFK5Kl6WOEyhSlU37pw3_lyiwz-rCeq3PSAeKVn4qn-jIlx31Pw" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">უფრო გარკვევით რომ ვთქვათ ეს შიფტ რეგისტრი (595) არის 8ბიტიანი და მის ადგილას წარმოვიდგინოთ ერთმანეთზე მიწყობილი ოთახები, რომლებიც ჰორიზონტალურად არის განლაგებული. ეს ოთახები ერთმანეთთან არიან დაკავშირებული კარებებით და ბოლო ოთახს ორი კარები, აქვს: შესასვლელი მეორე ოთახიდან და გარეთ გასასვლელი. ხოლო პირველ ოთახს 2 კარები აქვს: 1 მეორე ოთახში შესასვლელი, მეორე გარედან შესასვლელი, რომ ხალხი შევიდეს (სინამდვილეში ორობითი ინფორმაცია). SCK-ის სიგნალზე (მაღალ სიგნალზე) რეგისტრში იწერება ის ინფორმაცია, რაც არის SI პინზე (ა). როდესაც SCK მიიღებს დაბალ მნიშვნელობას (ლოგიკური ნულიანი), ამ დროს არაფერი ხდება, ხოლო როდესაც SCK-ის მდგომარეობა ისევ ლოგიკურ ერთიანს გაუტოლდება, მაშინ უკვე იმავე რეგისტრში იწერება ის ინფორმაცია რაც SI პინზეა, ხოლო ძველი ჩანაწერი (ა) ინაცვლებს ერთი რეგისტრით მარჯვნივ. თუ დავუშვებთ იმას, რომ ოთახში მხოლოდ ერთი ადამიანი უნდა იყოს, მაშინ როდესაც გარედან შემოვა სხვა ადამიანი პირველ ოთახში მყოფი ადამიანი ვალდებულია გადაინაცვლოს შიგნით, ანუ ერთი ოთახით წინ. როდესაც ოთახებში ადამიანის საერთო რიცხვი აღემატება 8-ს და მეცხრე ადამიანი ცდილობს შესვლას, მაშინ ბოლო ოთახში მყოფი ადამიანი იძულებულია გავიდეს გარეთ, ასე ემართება ინფორმაციასაც, მხოლოდ იმ განსხვავებით, რომ ის კარებით არ გამოდის გარეთ, არამედ Serial Out პინით. ეს ყველაფერი კი კარგად არის გამოსახული ქვემოთ მოცემულ სურათზე.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="shiftRegister.png" height="657px;" src="https://lh3.googleusercontent.com/gt6kRbmPA8lG6cm6vUezlhU3VH6K3Y7yKZY61p6Bv6HhMa5Mvafv14fmlMVDDPaFf713PiJ7eRE1-LwOC3HsMnG3m_vu7GZMY7TvN46H58l3lRlLR4n6rUGEzrLbLZke1w" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="500px;" /></span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ახლა დროა ვნახოთ კოდი, რომლითაც მარტივად შეგვძლია შიფტ რეგისტრთან კომუნიკაციის დამყარება და მისი მართვა. პირველ რიგში კი ქვემოთ მოცემული სურათი გვიჩვენებს რომელიც პინი, რომელ პინს უკავშირდება (მიკრო კონტროლერიდან 595 ჩიპს).</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="74HC959_right_2.png" height="456px;" src="https://lh5.googleusercontent.com/cxq2K6JrNHxoeZ1M8dkeLr7URaBe_A8gG7MKakiKby1I5_WsKZFzR9CW0KsU2-n6ONcMrTebwL7LH1SYv5Zf5zjBBCKAhRJbB0S2WfyHkkFoK3u555vj59LR6-1VnhcdYQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ეს მაგალითი გვიჩვენებს LED-ის კონტროლს შიფტ რეგისტრის გამოყენებით, ხოლო კოდი კი შემდეგია.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">boolean _buffer[8];</span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">//</span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">გლობალური ცვლადი</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">int8_t DataCap = 8;</span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">//</span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">გლობალური ცვლადი, აღწერს რამდენი ერთეული ინფორმაციის </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">// </span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">დატევა შეიძლება რეგისტრში</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">...</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">void WriteReg()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTB = (0<<RCLK);</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">for (int8_t i = 0; i < DataCap; i++)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTB = (0<<SRCLK);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTB = (_buffer[i]<<SER);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTB = (1<<SRCLK);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">}</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTB = (1<<RCLK);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">}</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">...</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">void RegPinInit()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">int8_t SER = 0;</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">int8_t RCLK = 1;</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">int8_t SRCLK = 2;</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">DDRB = (1<<SER) | (1<<RCLK) | (1<<SRCLK);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">}</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">აქვე მინდა ერთი რამ აღვნიშნო - რატომ ხდება for ციკლში დეკრემენტაცია და რატომ არა ჩვეულებრივ ინკრემენტაცია. ვნახოთ ქვემოთ მოცემული სურათი, რომელზეც მწვანე ფერით აღნიშნული რიცხვები გვიჩვენებს ინფრომაციის ნომერს და არა მათ მნიშვნელობას, რადგან მნიშვნელობები არ შეიძლება იყოს სხვა რამ ერთიანის და ნულიანის გარდა.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="shiftRegister.png" height="657px;" src="https://lh5.googleusercontent.com/HZw6VGkbjcU51PZ_dLCkO_ERVYhKNjq5Mq__QntMRfT5gaCzL7t_WnZGFgDyGHNSXQybLXHL_AR_NTqHg1o-b5KU89KGZdgNenuC3zJBaeCt8VWYNuhku2HicXcT_33L5A" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="500px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">_buffer მასივში თუ არის ჩაწერილი შემდეგი ბაიტი </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">0b10110110 </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">და გვინდა ამ ინფორმაციის რეგისტრში ჩაწერა ვიყენებთ დეკრემენტულ for ციკლს, რადგან მენულე ადგილას უნდა მოხვდეს მენულე ელემენტი (მოცემული ბაიტის 0b1011011</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">0</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">), რომელიც _buffer მასივის მეშვიდე ელემენტია (თვლა იწყება ნულიდან და სწორედ ამიტომ მეშვიდე და არა მერვე). შემდეგ უნდა ჩავწეროთ მეექვსე ელემენტი და ასე შემდეგ. საბოლოოდ კი მივიღებთ შემდეგს</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="shiftRegister (1).png" height="657px;" src="https://lh4.googleusercontent.com/b-UFuuZ1vmPrzwom8pCyApbpK_PIOn6OiOY2tbmiHLHtJWbkzUK614vu2ufi3SdD36sqUFyt1wiPMGi3V6fJ1AQsNDt86eLdZM880X7g0_urZFDAC-hRhk-qCQcPUeihSg" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="500px;" /></span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">რეგისტრის “გაწმენდა შესაძლებელია შემდეგნაირად. ჯერ გავანულოთ _buffer მასივში არსებული ელემენტები და შემდეგ ჩავწეროთ. ეს თავიდან აგვაცილებს დამატებითი კავშირის შექმნას ჩიპთან. </span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">არსებობს სიტუაციები, როდესაც საჭიროა ერთის ნაცვლად ორი, სამი ან ხუთი რეგისტრის გამოყენება. ამ დროს საჭიროა, რეგისტრების ერთმანეთთან “გადაბმა”. თუ ზემოთ მოცემულ სურათს დააკვირდებით (სადაც რეგისტრი არდუინოზეა მიერთებული), შეამჩნევთ ყვითელ ხაზს. ეს არის Serial In ხაზი, საიდანაც მოედინება ინფორმაცია. ხოლო რეგისტრის შევსების შემთხვევაში ინფორმაცია გამოდის QH’ პინიდან. რამდენიმე რეგისტრის გამოყენებისას პირველი რეგისტრის QH’ პინი უკავშირდება მეორე რეგისტრის Serial In პინს, საიდანაც ხდება ინფორმაციის გადინება. ქვემოთ მოცემული სქემატური ნახაზი კი გამოიყენება ორი რეგისტრის შემთხვევაში</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="74HC595_4.png" height="561px;" src="https://lh6.googleusercontent.com/1IXtLfGjHfyAEvVnojLGN-INIhQnjuvUjNrbRjzn8u_ZULvO_aFpB2XvKI5NHulpxiHVlr3FuNSP4oFSdHbc3Byrq-GtP6rgfFkb5_UlFz8BjH4By9941igJg7GPBukoEg" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">სადაც QH’ პინი შეერთებულია SI პინზე. ამ შემთხვევაში ასევე მოგვიწევს პროგრამის მოდიფიკაციაც, რადგან ახლა 8 ბიტის ნაცვლად გვაქვს 16 ბიტი და რამდენ რეგისტრსაც გამოვიყენებთ იმდენჯერ 8 ბიტი (ორის ნაცვლად ენ რაოდენობის რეგისტრის გამოყენების შემთხვევაში). პროგრამაში (ორი რეგისტრისთვის) შევა შემდეგი ცვლილებები</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">boolean _buffer[16];</span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">//</span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">გლობალური ცვლადი</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">int8_t DataCap = 16;</span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">//</span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">გლობალური ცვლადი, აღწერს რამდენი ერთეული ინფორმაციის </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">// </span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">დატევა შეიძლება რეგისტრში</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">//ან შეიძლება ისეთი კონტსტრუქციის მოფიქრება, სადაც მხოლო რეგისტრის ოდენობის </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">//შეცვლა გახდება საჭირო, კერძოდ</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">//</span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">#define RegNum 2</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">//</span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">boolean _buffer [ (RegNum * 8) ];</span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">//</span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">int8_t DataCap = RegNum * 8;</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">//ახლა მხოლოდ RegNum ცვლადის შეცვლით შეიცვლება ყველა ინფორმაცია შესავამისად</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">...</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">void WriteReg()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTB = (0<<RCLK);</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">for (int8_t i = 0; i < DataCap; i++)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTB = (0<<SRCLK);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTB = (_buffer[i]<<SER);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTB = (1<<SRCLK);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">}</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt; text-indent: 36pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTB = (1<<RCLK);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">}</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">...</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">void RegPinInit()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">int8_t SER = 0;</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">int8_t RCLK = 1;</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">int8_t SRCLK = 2;</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">DDRB = (1<<SER) | (1<<RCLK) | (1<<SRCLK);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">}</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ამდენი ინფორმაციის შემდეგ უკვე შეგვიძლია გადავიდეთ მაგალითის განხილვაზე, სადაც გამოვიყენებ 7 სეგმენტიან დიოდს (ჩემს შემთხვევაში ეს არის რუსული დიოდი - ALC338A1). ჩვენი პრობლემა კი შემდგომში მდგომარეობს:</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">პრობლემა - </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ხშირად გვინახავს შუქნიშნები, რომლებსაც აქვთ ციფერბლატი და გამოიყენება დროის ვიზუალურად გამოსახვისთვის, რაც ძალიან მოხერხებულია მომხმარებლისთვის. ჩვენი მთავარი მიზანია, რომ გავაკეთოთ სწორედ ასეთი ციფერბლატი, რომელიც იქნება 2 პოზიციანი. მოგვიანებით კი შემოგთავაზებთ ჩემს მიერ გაკეთებულ </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">საათს,</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> რომელიც დაფუძნებული იქნება ამ პროექტსა და მომავალ ტუტორიალზე.</span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">პრობლემის გადასაწყვეტად საჭიროა გავარჩიოთ 7 სეგმენტიანი დისპლეი, რომელიც ინდივიდუალური LED-ებისგან შედგება და მათ გასაკონტროლებლად საჭიროა შიფტ რეგისტრის გამოყენება, რადგან ეს პინებს დაგვიზოგავს მიკრო კონტროლერზე. ქვემოთ მოცემულია პინების შეერთების გეგმა, რომლითაც ვისარგებლებ ჩემს დემო ვერსიაში.</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="ShiftReg_Tutorial.png" height="398px;" src="https://lh3.googleusercontent.com/vqWdDU5d8iSa8M2EnlqA4PjwzASLmaxmrnTcGzKKKx8297oSO9u1AJ1aj4x2Grvv1ndBDi-PO6fvYOgYJ2BHhGolEFGl_tU0wWJ5arwj_Gp2k07aaatIFoOoee8iSPg8mg" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="509px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ჩვენი კოდისთვის დაგვჭირდება ის, რომ მიკრო კონტროლერს “ვასწავლოთ” თვლა, მხოლოდ ცხრამდე. ამის შემდეგ კი მხოლოდ მარტივი პროგრამული ტექნიკით შეგვიძლია 100-მდე დავითვალოთ. პროგრამაში არის ფუნქცია SetNum, რომელიც იღებს ორ არგუმენტს: num და RegID. პირველი პარამეტრი რეგისტრში იმ ბიტებში წერს ერთიანებს, რომლებიც შესაბამის ციფრს გამოსახავს. თუ num = 9, მაშინ რეგისტრში ჩაიწერება 9-ის შესაბამის პინებში ერთიანი, და აინთება ეს ციფრი დისფლეიზე. მეორე მხრივ კი RegID პარამეტრი უზრუნველყოფს რომელ რეგისტრს მიმართოს პროგრამამ, პირველს (ათეულების რეგისტრს) თუ მეორეს (ერთეულების რეგისტრს). ასევე არის მეორე ფუნქციაც, რომელშიც ინტეგრირებულია როგორც ციფრის, ისე რიცხვის გამოსახვა, რომლის სახელია SetNum_TPS, რომლის პარამეტრიც არის num, და ეს პარამეტრი შეიძლება იცვლებოდეს 0-დან 99-მდე. ასევე კოდში არის საათის ფუნქციაც, რომელიც რეალურ საათს წარმოადგენს და ეყრდნობა AtMega328P-PU-ს ტაიმერს, რომელზეც მოგვიანებით გავაკეთებ ტუტორიალს. პროგრამის კოდი შეგიძლიათ იხილოთ ქვემოთ. ასევე გთავაზობთ სურათებსა და ვიდეოს.</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_20140814_215846.jpg" height="468px;" src="https://lh6.googleusercontent.com/P32qn_nmKWV8F6ymoLkvFzzae4uZwwAuyjGnBkb6Ntn4ce-TcqAI4j6Kx-1GceZt2WIxL5ZBOmwIPh0pVzQxjWpv19loetB9aQD9ndjbn4KEBRAFy2nLurNJFheLsOQSTQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="IMG_20140815_001812.jpg" height="468px;" src="https://lh4.googleusercontent.com/9hcaPslmETD0iHQL2Ecgb5JRCjei8KFP3gZ1d_jK1pOGKuG17JASDKwApX3ZaufdOxozL1HzNePctckV5OkNxUigLrh7Gu528WujWwtNVg7itVVj99PsHFGZI2h1C4s8-w" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/HW47QdGpGr4?feature=player_embedded' frameborder='0'></iframe></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<b style="font-weight: normal;"><br /></b>
<br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ეს კი არის კოდის </span><a href="https://drive.google.com/file/d/0B8INmvEfFu2zTWdvbHFjNFd2Zkk/edit?usp=sharing" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">ლინკი</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, რომელიც განთავსებულია ჩემს დრაივზე. ყოველი ცვლილებები ავტომატურად აისახება ამ ფაილზე და შეგეძლებათ გადმოწეროთ პირადაპირ განახლებული და მუშა ვერსიები. ქვემოთ კი მოცემულია ვიდეო, რომელზეც არის საათის ფუნქციის დემო, სადაც 9:40-დან საათის საცდელი ვერსია ინაცვლებს 9:41-მდე.</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/YNbDYyyJcYI?feature=player_embedded' frameborder='0'></iframe></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<br />
<br />
<br />
<br />
<br />
<br />Jambazishvilihttp://www.blogger.com/profile/18313944956706696794noreply@blogger.com0tag:blogger.com,1999:blog-4951152045946376109.post-9934272685091252842014-08-13T21:15:00.001+04:002014-08-13T21:15:14.532+04:00პინების მანიპულაცია<b id="docs-internal-guid-d5062f4c-d2b2-2d96-6f56-dc024009cc07" style="font-weight: normal;"><span id="docs-internal-guid-d5062f4c-d2b2-8650-87a5-e3df97565063"><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><img alt="port-control-register-overview.png" height="380px;" src="https://lh5.googleusercontent.com/8ItEDDo4vjLmSSrTRFYuHt1GaISNO6To2ZWBto79gaVTRoCv4xwRN00godTHVOItLKc1OXlWQE_ltnhUnGO9HjL59CKTF_kQ1y1LIE4V3ITPszf0eYlO1EW1W4cDBcucpA" style="-webkit-transform: rotate(0rad); border: none; transform: rotate(0rad);" width="624px;" /></span></span></b><br />
<b style="font-weight: normal;"><span><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;"><br /></span></span></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ეს არის პირველი ტუტორიალი, რომლის მთავარი მიზანია AVR-ის 8 ბიტიანი მიკროკონტროლერები. ამ ტუტორიალში ვისაუბრებ მიკრო კონტროლერის პორტების ოპერაციებზე და მათ პროგრამულ მანიპულაციაზე. </span></div>
<a name='more'></a><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">პირველად იყო </span><a href="http://wiki.answers.com/Q/What_is_register_in_electronics" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">რეგისტრი</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> (იხილეთ ლინკი), და სანამ ამ ტუტორიალს ბოლომდე წაიკითხავდეთ, გთხოვთ, რომ გაიგოთ რას წარმოადგენს ეს ელექტრონული ერთეული. მოკლედ, რომ ვთქვათ რეგისტრი არის მეხსიერების ერთეული მთავარ პროცესორთან. ამიტომ შესაძლებელია მისი სწრაფი და საჭიროებისამებრ ხშირად წაკითხვა. ეს რეგისტრები პირადაპირ კავშირშია ცენტრალური პროცესორის მოქმედების ხასიათთან. წარმოვიდგენოთ რეგისტრი, როგორც “ყუთების” მასივი, როგორც ქვემოთ, სურათზეა, ნაჩვენები</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="Register-B.jpg" height="164px;" src="https://lh5.googleusercontent.com/D-8YMh1LZepdjPDno9HZabMAuIHuAJkeaZwLr58UYmWGuMGEy2LJ6EfeZU9OT6xNWOlIHhgc7CB1YpWlO40luqvXMCLVtbxMVNIgudVkzaKECVyQhggRo6cRHGQ51Cn8XA" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="567px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ეს სურათი არის ერთ-ერთი მაგალით, რომელიც აღებულია სურათზე მითითებული საიტიდან. როგორც ხედავთ ამ “ყუთების” დანომვრა იწყება მარჯვნიდან მარცხნივ, შესაბამისად ყველაზე პირველ ბიტს ეწოდება LSB - Least Significant Bit, ხოლო ყველაზე ბოლოს - მარცხენა ბიტს MSB - Most Significant Bit. ამ კონცეპტში რომ უკეთესად გაერკვიოთ შემოვიღოთ რამდენიმე შეთანხმება: 0b პრეფიქსი ნიშნავს, რომ 0b ის შემდეგ მოცემული რიცხვი წარმოადგენს რიცხვს ორობით სისტემაში, ხოლო 0x პრეფიქსის შემდგომ დაწერილი რიცხვი, შესაბამისად, თექვსმეტობითში. პრეფისქსის გარეშე დაწერილი რიცხვები ჩვეულებრივ ათობით სისტემას მიეკუთხვნებიან. მაგალითისთვის ავიღოთ X = 0b</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">0</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">110 011</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1 </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">რომელიც ათობით სისტემაში გადაყვანისას (ორობითიდან) არის 103. ჩვენ თუ შევცვლით LSB-ს, მივიღებთ Y = 0b</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">0</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">110 011</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">0</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, რომელიც ათობითში არის 102 და საკმაოდ ახლოს არის A ცვლადის მნიშვნელობასთან. მოდით შევცვალოთ MSB. მივიღებთ Z = 0b</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">110 011</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">, რომლიც 231-ის ტოლია. სწორედ ამიტომ არის რომ LSB ბიტის შეცვლა ნაკლებ მნიშვნელოვანია ვიდრე MSB-სა, რომლის ცვლილება საკმაოდ დიდ სახე სხვაობებს გვაძლევს (Z). </span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">რეგისტრებთან მიმართებაში, ასევე მნიშვნელოვანია ის ფაქტი, რომ თითოეულ მათგანს გააჩნია სახელი, ხოლო მის ყოველ ბიტსაც გააჩნია თავისი ინდივიდუალური დასახელება. მაგალითისთვის ავიღოთ ADCSRA რეგისტრი </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="ADCSRA.png" height="116px;" src="https://lh6.googleusercontent.com/M22fqLimp4aha2iINrP8hW4IigWSiCVgawQsonskLdnHoVQbtVF02xQIL5AbL9-kUoCfH5t5HNOnfTY35S587Fv3IBhmo3dyPMVXpYMzMIXJJhtNMeORVV5BDjKmjsm5RA" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="624px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">რომელიც შედგება 8 ბიტისგან. დააკვირდით, რომ თითოეულ ბიტს გააჩნია საწყისი მნიშვნელობა და, როგორც აღვნიშნე, ინდივიდუალური სახელი. თუ დავწერ შემდეგ ხაზს IDE-ში </span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ADCSRA = 0b01000111;</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ეს იმას ნიშნავს, რომ რეგისტრში შესაბამისად დაიწერება 1 იანები ნულიანების ადგილას, ხოლო სადაც ნულიანები არ შეგვიცვლია უცვლელი დარჩება. ეს ყველაფერი შესაძლებელია ასევე გაკეთდეს მოცემული კოდითაც.</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ADCSRA = (1<<ADCS) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ADCSRA = 0x47;</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ასევე მეორე ხაზში მითითებულია თექვსმეტობითში გადაყვანილი მნიშვნელობა, რაც იგივეა რაც 0b01000111. აქვე დავამატებ, რომ თუ თქვენთვის უცნობია “<<” ან “|” “ნიშანი”, რომელიც ოპერატორს წარმოადგენს C/C++-ში, მაშინ იხილეთ ეს </span><a href="http://www.cprogramming.com/tutorial/bitwise_operators.html" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">ტუტორიალი.</span></a></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ასე, რომ, ვფიქრობ ზოგადი წარმოდგენა მაინც შეგექმნათ, როგორ არიან რეგისტრები მოწყობილი მიკრო კონტროლერში. შესავალ / გამოსავალის გასაკონტროლებლად ახლა გავარჩევ სამ რეგისტრს</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1) </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">DDRx - </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Data Direction Register</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">2) </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTx - </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Pin Output Register</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">3) </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PINx - </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Pin Input Register</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 10pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666666; font-family: 'Trebuchet MS'; font-size: 17px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">DDRx რეგისტრი</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">მიკრო კონტროლერზე I / O პინები შეიძლება იყოს ან შესავალი ან გამოსავალი, მაგრამ საჭიროა, რომ მათ იცოდნენ ამის შესახებ, სასურველი შედეგის მისაღებად. ასევე აქვე თუ ვნახავთ AtMega328 პინებს შევამჩნევთ, რომ გვაქვს PB, PC და PD გამოსასვლელები, რომლებსაც ცალკე საკუთარი ნომრები აქვთ.</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="pinmap.jpg" height="288px;" src="https://lh3.googleusercontent.com/ij51jtzGLrSKlCZDpPt7Bs2l32Q_CzPHeQwcbBGf847QLnR2e-R2Nu6dgGjy4klVp7twanqKIMnpDO00AR5B5_ik1e7ybAY7eDygI6pDj9wCDzBfh2AYJ-51wgHTiE0V-A" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="319px;" /></span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">თუ ავიღებთ PB პინებს, ვნახავთ, რომ ის სულ 8 ცალია, ასევე PD-იც. წარმოვიდგინოთ, ახლა რომ ეს ყველაფერი დაკავშირებულია რეგისტრთან, რომლშიც შეგვიძლია რაღაც მნიშვნელობების ჩაწერა, რაც მიკრო კონტროლერს ეტყვის თუ რომელი პინი უნდა იყოს შესავალი და გამოსავალი (სიგნალის). სწორედ ‘x’ (DDRx, PORTx, PINx) წარმოადგენს ჩვენს შემთხვევაში B ან D რეგისტრს. მაგალითისთვის განვიხილოთ შემდეგი კოდი, რომლის თითოეული ხაზი ერთმანეთის ექვივალენტურია</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">DDRB = 0b10110001;</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">DDRB = 0xB1;</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">DDRB = (1<<0) | (1<<4) | (1<<5) | (1<<7);</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ეს იმას ნიშნავს, რომ ყველა პინი, რომლის სახელია PBn, სადაც n იცვლება ნულიდან შვიდამდე, ჩაიწერა 0b10110001 მნიშვნელობა. ახლა გეტყვით ეს ორობითი კოდი რას წარმოადგენს მიკრო კონტროლერისთვის. </span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ყოველი 1-იანი არის გასასვლელი</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ყოველი 0-იანი არის შესავალი</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ანუ თუ გადავთარგმნით, PB0, PB4, PB5, PB7 არის გამოსასვლელი პინები, ხოლო დანარჩენი შესავალი, რადგან ნულებია მათი მნიშვნელობა.</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">იმ პინებს, რომლებიც არიან მარკირებულები როგორც შესასვლელები, აქვთ უნარი წაიკითხონ ძაბვა, მოდებული მათ პინზე და აღიქვან ის როგორც ლოგიკური ერთიანი, თუ მეტია ეს ძაბვა მათ გამხსნელ ძაბვაზე, ან ნულიანი თუ ნაკლებია მოდებული ძაბვა გამხსნელ ძაბვაზე. ზოგადად, გამხსნელი ძაბვა არის VCC/2 ვოლტი, ანუ კვების ძაბვის ნახევარი. მეორე მხრივ კი პინები რომლებიც მარკირებულები არიან როგორც გამოსასვლელები უნარი აქვთ მიიღონ ლოგიკური ერთიანის ან ნულიანის მდგომარეობა, შესაბამისად მათზე ძაბვა გაუტოლდეს VCC (კვების ძაბვა) ან ნულს.</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 10pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666666; font-family: 'Trebuchet MS'; font-size: 17px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTx რეგისტრი</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">მას შემდეგ რაც განვსაზღვრავთ პინების სტატუსს, საჭიროა მათზე გავანახლოთ ინფორმაცია, ანუ თუ პინი მარკირებულია როგორც გამოსასვლელი, მაშინ საჭიროა გამოსასვლელი არხის მართვა, ანუ პინზე “ჩავწეროთ” ან მაღალი ან დაბალი მნიშნვნელობის ძაბვა, იგივე ლოგიკური 1 ან 0. ამისთვის ვიყენებთ PORTx რეგისტრს. შესაბამისად როდესაც DDRx ით მოვნიშნეთ გამოსასვლელები, იმავე პინებზე შეგვიძლია ლოგიკური მდგომარეობის შეცვლა PORTx რეგისტრით. რაც იმას ნიშნავს, რომ თუ პინების B რეგისტრში პინები, რომელთა ნომრებია 0, 4, 5, 7 (PB0, PB3, PB4, PB7) მათთან შესაძლებელია გამოყენებულ იქნას PORTB რეგისტრის მანიპულაცია, ხოლო დანარჩენ პინების შემთხვევაში ამ რეგისტრის გამოყენება სულ სხვა შედეგს მოგვცემს, რასაც მოგვიანებით განვიხილავ. მაგალითისთვის ავიღოთ შემდეგი კოდის ნაწილი, რომელიც PB0 და PB4 პინს ანიჭებს ლოგიკური 1-იანის მდგომარეობას.</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTB = 0b00010001;</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ახლა ზოგს შეიძლება ეჭვი გაუჩნდეს, რადგან მათი აზრით თუ PB0 და PB4 პინებს მივმართავთ უნდა ყოფილიყო შემდეგი კოდი, </span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1. PORTB = 0b10001000; </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">2. PORTB = 0b10010000;</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ამ ორი პუნქტიდან არც ერთი არ არის სწორი, რადგან ათვლა იწყება მარჯვნიდან მარცხნივ, ანუ ყველაზე მარჯვენა ბიტი შეესაბამება მენულე პინს, ხოლო ყველაზე მარცხენა მეშვიდეს (1). ამის გარდა ათვლა იწყება ნულიდან და არა ერთიდან, როგორც ვართ ძირითადად მიჩვეულები (2). </span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">რაც ზემოთ განვიხილეთ მოგცემთ პატარა ვიდეო დემოს, რომელიც ნათლად დაგარწმუნებთ ამ ყველაფრის მოქმედებაში და მოგიხსნით ყველანარი შეკითხვის და ეჭვს, რომელიც დაკავშირებულია ამ ყველაფერთან. პირველ რიგში დაგვჭირდება ქვემოთ მოცემული სურათზე კარგად დაკვირვება, რადგან ამ ყველაფრისთვის გამოვიყენებთ არდუინოს და რადგანაც არდუინოზე არის მოთავსებული atmega328P-PU მიკროპროცესორი უნდა ვიცოდეთ პინების რუკა, რადგან არდუინოზე პინების რეალური სახელწოდებები არ არის სწორედ აღნიშნული - სიმარტივისთვის</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="arduino_pin_mapping.jpg" height="341px;" src="https://lh6.googleusercontent.com/sqrjompEdCig-HZuC9Tx-1HjEFSnY8UViiX3dBjzx7yZeX8120lm-2a_BBUt-yCdvfUUrv8KJjlhweO5KtBEC52Memeo0RYgMtWXZvODoGcwu9_-QRKIWsKTP5Kaq7crZw" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="524px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">მე ვაპირებ ვიდეოსთვის გამოვიყენო მეცხრე პინი, რომელიც B რეგისტრის მეორე წევრია. ამისთვის კი გამოვიყენებ შემდეგ კოდს, რომელიც არდუინოს IDE ში არის დაწერილი. </span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">#include <util/delay.h></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">#define LED 1</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">void setup() </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> DDRB = 0b00000010;</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> //DDRB = (1<<LED);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">}</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">void loop() </span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">{</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> PORTB = (1<<LED);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> _delay_ms(100);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> PORTB = (0<<LED);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> _delay_ms(100);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">}</span></div>
<b style="font-weight: normal;"><br /></b><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="https://i.ytimg.com/vi/c_E1XnaqIy0/0.jpg"><param name="movie" value="https://www.youtube.com/v/c_E1XnaqIy0?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="https://www.youtube.com/v/c_E1XnaqIy0?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ეს ვიდეო კი კოდის დემონსტრაციაა, სადაც PB1 ზე შეერთებულია LED და შეერთებულია მიწასთან 100ომიანი რეზისტორით, LED ისა და მიკრო პროცესორის უსაფრთხოდ გამოყენების მიზნით. ახლა კი დრო დადგა წავიკითხოთ თუ როგორ ხდება მიკრო კონტროლერის პინებე ინფორმაციის წაკითხვა. მანამდე კი ვნახოთ ერთი ოპერაცია / ტექნიკა, რომლის დახმარებითაც შეგვიძლია ჩავრთოთ pull-up რეზისტორები, რომლებიც AVR ის მიკროკონტროლერების ჩაშენებული თვისებაა. ეს ტექნიკა მდგომარეობს შემდგომში. დავუშვათ გვაქვს ხაზი, რომელსაც ვკითხულობთ, და გვინდა, რომ ამ ხაზზე უნდა დავიჭიროთ დაბალი სიგნალი, ანუ როდესაც ხაზზე მოდებულია ნული, ხოლო როდესაც სიგნალი არ არის არ იყოს განურჩეველი მდგომარეობა და ხაზზე იყოს რაღაც მუდმივი და სანდო სიგნალი, რომელიც დაბალი ვერ იქნება, ამიტომ უნდა იყოს მაღალი. ამას კი უზრუნველყოფს pull-up რეზისტორები, რომლებიც სტანდარტულად გათიშულია. სქემატური ნახაზი კი ქვემოთ არის მოცემული.</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img alt="pull-up-resistor.png" height="326px;" src="https://lh5.googleusercontent.com/PAVuLec38Mcs20JPb5aFWv1e1NHJQxFlvwvaxWcw1ES_38kmH6XZ2QCa2rTuSj8NcOSk6HbJbONmhybrJ23yEVsmFO5g7oJE13GoE6z0-IHPpykLSTEjs5SXJGfoe8yHQQ" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="200px;" /></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">აქ ერთადერთი განსხვავება ის არის, რომ R1 რეზისტორი შეიძლება იქნას პროგრამულად ჩართული, სურვილისამებრ და მოთავსებულია მიკრო კონტროლერის შიგნით. pull-up რეზისტორების გასააქტიურებლად ვნახოთ კოდი</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> DDRB = 0b000000</span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1</span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">0;</span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">//PB1 არის გამოსასვლელი, დანარჩენი შესასვლელი</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTB = 0b</span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">1</span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">0000000;</span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">//ეს კოდი PB7 ზე ააქტიურებს pull-up რეზისტორს</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ამ კოდით შეგვიძლია ვიმსჯელოთ, რომ თუ პინი მონიშნულია, როგორც შესასვლელი და მასში ვწერთ ლოგიკურ ერთიანს, რაც, ერთი შეხედვით დაუშვებელია, რადგან ეს ოპერაცია მხოლოდ მათთვის არის განკუთვნილი, რომელი პინიც გამოსასვლელია. მეორე მხრივ კი, ეს სულ სხვა რაღაცას აკეთებს - რთავს pull-up რეზისტორს. ახლა კი გადავინაცვლოთ მიკრო კონტროლერის პინების წაკითხვაზე და ინფორმაციის დამუშავებაზე.</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 10pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #666666; font-family: 'Trebuchet MS'; font-size: 17px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PINx რეგისტრი</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PINx რეგისტრი იღებს ინფორმაციას მიკრო კონტროლერის პინებიდან. დავუშვათ მიკრო კონტროლერის პროგრამულ მეხსიერებაში შესრულდა შემდეგი კოდი</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">DDRB = 0b11111110;</span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">//PB0 მონიშნულია შესასვლელად</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">PORTB = 0b00000000;</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">ახლა რადგან PB0 არის მონიშნული როგორც შესასვლელად, ჩვენი სურვილია, რომ წავიკითხოთ PB0 ზე მოსული ინფორმაცია. ამისთვის კი უნდა მივმართოთ რეგისტრს, რომელშიც ინახება და ახლდება ინფორმაცია B პინების რეგისტრის შესახებ. შევამოწმოთ თუ PB0 ზე გვაქვს ლოგიკური 1-იანი და PB1 ზე მიერთებულ LED ავაციმციმოთ. </span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">if (PINB == 0b0000001)</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Blink();</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">…</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">void Blink()</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">{</span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span class="Apple-tab-span" style="white-space: pre;"> </span></span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> LED = 0;</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> PORTB = (1<<LED);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> _delay_ms(100);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> PORTB = (0<<LED);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-left: 36pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> _delay_ms(100);</span></div>
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">}</span></div>
<br /><span style="font-family: Arial; font-size: 15px; vertical-align: baseline; white-space: pre-wrap;">აქ ვრჩები პორტზე ოპერაციების მიმოხილვას და იმედია, რომ საინტერესო ტუტორიალი გამოვიდა. მიუხედავად იმისა, რომ ინფორმაცია დამწყებისთვის ბევრია, ეს ყველაფერი არ არის.</span>Jambazishvilihttp://www.blogger.com/profile/18313944956706696794noreply@blogger.com0tag:blogger.com,1999:blog-4951152045946376109.post-39439042044416384262014-08-08T21:47:00.001+04:002014-08-13T21:15:35.993+04:00მიკრო კონტროლერები - შესავალი<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-KmzBxN5RbmA/U-TyC34egnI/AAAAAAAAHec/xlIKad_bDPo/s1600/pl1353984-8051_mcu_32k_flash_40_qfn_programmable_ic_chip_with_ebi_emi_smbus.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-KmzBxN5RbmA/U-TyC34egnI/AAAAAAAAHec/xlIKad_bDPo/s1600/pl1353984-8051_mcu_32k_flash_40_qfn_programmable_ic_chip_with_ebi_emi_smbus.jpg" height="320" width="320" /></a></div>
მოგესალმებით ყველას, მე ვარ გიორგი ჯამბაზიშვილი და ეს არის ჩემი ბლოგი, რომელიც სპეციალურად ეძღვნება AVR ის მიკრო კონტროლერებს, რომლებიც საკმოად პოპულარულები არიან დღებანდელ რეალობაში, სხვა ფირმის მიკრო კონტროლერებთან ერთად. ბლოგზე დადებული ტუტორიალები ითვალისწინებს იმას, რომ თქვენ გაქვთ ISP პროგრამატორი, ან Arduino სატესტო დაფა. ხოლო რაც შეეხება ბლოგზე არსებულ კოდს, ის შემოწმებულია და მუშაობს 100% ით, ასევე თავსებადია Arduino სთან.<br />
<a name='more'></a>მუშაობისთვის გამოვიყენებთ მონაცემთა ფაილს იგივე Datasheet-ს, რომელიც არსებობს ყველა მიკრო კონტროლერზე და მომხმარებელს საოცრად უადვილებს პროდუქტთან მუშაობას. ყველა მიკრო კონტროლერის მონაცემთა ფაილი განთავსებულია atmel-ის ოფიციალურ საიტზე და ხელმისაწვდომია ყველასთვის.<br />
<br />
<b>AVR-ის პერიფერიული მოწყობილობები</b><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-hVwyYkpAw2A/U-T0Fg5GhXI/AAAAAAAAHeo/bDMifn0ibIA/s1600/IC-ATMEGA168A-PU_02_LRG.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-hVwyYkpAw2A/U-T0Fg5GhXI/AAAAAAAAHeo/bDMifn0ibIA/s1600/IC-ATMEGA168A-PU_02_LRG.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
ზემოთ მოცემული სურათი წარმოადგენს AtMega168-ს პინების დანიშნულებას. როგორც სურათზე ჩანს პინების (PD0, PA1, PB5) გარდა მათზე ფრჩხილებში არის მითითებული კიდევ სხვადასხვა რამ (PB5 - SCK). ესენი წარმოადგენენ დამატებით ფუნქციებს, რისი შემოთავაზებაც შეუძლია მიკრო კონტროლერს გარდა ზოგადი დანიშნულების შესასვლელ/გამოსასვლელისთვის. ეს დამატებითი ფუნქციები ჩაირთვება - შეძლებთ მის გამოყენებას, თუ შეცვლით ბიტებს შესაბამის რეგისტრში. ესენია პერიფერიები. მაგალითისთვის ავიღოთ AtMega32, რომელიც გვთავაზობს ქვემოთ ჩამოთვლილ ფუნქციებს:<br />
<br />
<ul>
<li><b>ADC </b>- Analog to Digital Converter - გვხვდება 10 / 12 ბიტიანი, ჩვეულებრვი</li>
<li><b>Timer - </b>8 და 16 ბიტიანი ტაიმერები</li>
<li><b>JTAG - </b>Joint Test Action Group</li>
<li><b>TWI - </b>Two Wire Interface ან I2C - ინტეგრირებული მოწყობილობა</li>
<li><b>USART - </b>Universal Synchronous Asynchronous Receiver Transmitter</li>
<li><b>UART - </b>Universal Asynchronous Receiver Transmitter</li>
<li style="text-align: justify;"><b>SPI - </b>Serial Peripheral Interface</li>
<li><b>WDT - </b>Watchdog Timer</li>
<li>და სხვა</li>
</ul>
<div>
ჩამოთვლილ პერიფერიულ ნაწილებზე შეგიძლიათ დაწვრილებითი ინფორმაცია მიიღოთ მონაცემთა ფაილიდან. შესავალისთვის ვფიქრობ, რომ საკმარისია, ახლა კი მომავალ ტუტორიალებში უფრო ღრმად და დაწვრილებით ვნახავთ თითოეული პერიფერიის მოქმედების პრინციპს. </div>
<br />
<ul>
</ul>
Jambazishvilihttp://www.blogger.com/profile/18313944956706696794noreply@blogger.com0