გალერეა

UART გადამცემი მიკროკონტროლერში

UART გადამცემი მიკროკონტროლერში.
პუბლიკაციაში  „UART მიკროკონტროლერში“ განხილული იყო მიკროკონტროლერის UART მიმღების მუშაობის პრინციპები, მაგრამ თითქმის არაფერი იყო ნათქვამი UART გადამცემის შესახებ. ამ პუბლიკაციაში შევეცდები გამოვასწორო ეს ხარვეზი.
გადამცემის რეგისტრის როლს, ისევე როგორც მიმღების შემთხვევაში, ასრულებს UDR მონაცემთა რეგისტრი. გადამცემის მუშაობის ნებართვა ხორციელდება UCSRB რეგისტრის  TXEN  ბიტის „1“ -ში დაყენებით. ამ შემთხვევაში, პირველივე ბაიტი, რომელიც ჩაწერილი იქნება UDR რეგისტრში, გადაიწერება გადამცემის წანაცვლების რეგისტრში, საიდანაც   მიმდევრობით გამოვა მიკროკონტროლერის TXD გამომყვანზე (რა თქმა უნდა, შესაბამისი “Start”  და “Stop” ბიტების თანხლებით). თუ გადასაცემი ბაიტის ყველა ბიტი უკვე გადაცემულია, მაშინ ახლი გადასაცემი ბაიტის გადაწერა წანაცვლების რეგისტრში ხორციელდება UDR რეგისტრში ამ ბაიტის გადაგზავნისთანავე. თუ გადასაცემი ბაიტი გადაიგზავნა UDR რეგისტრში მანამ, სანამ წინა ბაიტის მიმდევრობითი გადაცემა ჯერ დასრულებული არ არის, მაშინ მისი გადაწერა წანაცვლების რეგისტრში ხორციელდება წინა ბაიტის გადაცემის დასრულების შემდეგ. გადასაცემი ბაიტის UDR რეგისტრიდან წანაცვლების რეგისტრში გადაწერის ფაქტზე მიუთითებს UCSRA რეგისტრის UDRE ბიტის „1“-ში გადართვა. ეს ბიტი (ალამი) მიუთითებს გადამცემის მზად ყოფნაზე მიიღოს ახალი გადასაცემი ბაიტი. თუ მორიგი ბატის გადაცემის დამთავრების მომენტისათვის UDR რეგისტრი ცარიელი აღმოჩნდება, მაშინ განხორციელდება წყვეტის ალმის  „გადაცემა დამთავრებულია“ გააქტიურება –  UCSRA რეგისტრის TXC ბიტის „1“-ში გადართვა. გადამცემის გამორთვა ხორციელდება UCSRB რეგისტრის  TXEN  ბიტის „0“ -ში დაყენებით.
დაწვრილებითი ინფორმაციისათვის გაეცანით პუბლიკაციას “მიმდევრობითი (Serial) პორტი“.
სურათზე ნაჩვენებია Algorithm Builder -ში შესაბამისი სეტერის დაყენება. განყოფილებიდან “Files” შეგიძლიათ ჩამოტვირთოთ არქივი “UART_Transmitter_receaver.rar”, რომელიც შეიცავს Algorithm Builder -ის პროექტს (.alp) და Proteus -ის პროექტს  (.DSN).  გაუშვით კომპიუტერზე Proteus -ს პროექტი და ვირტუალური ტერმინალის ფანჯარაში ჩაწერეთ ციფრები 0 -დან 7-ჩათვლით. სქემაზე აინთება ციფრის შესაბამისი შუქდიოდები, ხოლო UART გიპასუხებთ “OK”.  ვირტუალურ ტერმინალში სხვა სიმბოლოების ჩაწერისას შუქდიოდების მდგომარეობა არ შეიცვლება, ხოლო UART  შეგატყობინებთ, რომ მონაცემების მნიშვნელობები არასწორია –  “ERROR”.
შეგახსენებთ, რომ თუ მიკროკონტროლერი იმართება პერსონალური კომპიუტერიდან, მაშინ საჭირო იქნება დონეების შემათანხმებელი მოწყობილობის (მაგ. MAXIM MAX232) გამოყენება.
uart-transmitter

7 responses to “UART გადამცემი მიკროკონტროლერში

  1. zalian kargia ,madloba informaciistvis, kargi iqneboda programis patara nawilic rom dagedot vizualurad dzalian dagvexmareba, madloba winaswar.

    • OK.პუბლიკაციაში “UART გადამცემი მიკროკონტროლერში” შევიტანე თქვენთვის სასურველი ცვლილებები.

      • ანონიმური

        შეგიძლიათ modbus პროტოკოლზე დაწეროთ რამე?

  2. თუ რეგისტრს UDR აქვს მხოლოდ ერთი მისამართი მაშინ როგორ უნდა იყოს გამოყენებული ასეთი რეგისტრი როგორც გადაცემისთვის ასევე მიღებისთვის, ან დავუშვად ერთი და იგივე დროს ხდება რიგორც მიღება ასევე
    გადაცემა მონაცემის, როგორ მოიქცევა UDR როცა მივმართავთ მას წასაკითხად მასში იქნება გადასაცემი მონაცემი თუ მიღებული მონაცემი?

    • ყვალა Atmega ტიპის მიკროკონტროლერებში უნივერსალური სინქრონულ/ასინქრონული მიმღებ-გადამცემები (USART) მუშაობენ ნახევრად დუპლექსურ რეჟიმში, ანუ მიღება და გადაცემა ერთდროულად არ ხდება.

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

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