Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
ru:avr:usart [2013/08/14 16:29] – создано eduardtlmkru:avr:usart [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== USART ====== ====== USART ======
  
-USART on universaalne sünkroonne jadaliides, UART aga selle lihtsustatud variant - universaalne asünkroonne jadaliidesVahe seisneb selleset USART kasutab peale andmeliinide ka taktsignaali liini, millega andmeid sünkroniseeritakse, UART aga mitteAVR-i USART võimaldab täisduplekssidet, 5- kuni 9-bitiseid andmesõnu (8 biti puhul sõna bait), 1 või stoppbittikolme paarsuse režiimi ja laia boodikiiruste valikut. AVR mikrokontrolleritel on üldiselt kuni 2 USART liidestkuid mõnel puudub USART üldseAndmete edastamine toimub sõna kaupaehk AVR teeb riistvara tasandil kasutaja edastatud sõna bittideks ja edastab selle iseseisvalt ning vastupidiKasutaja juhib USART tööd seade-oleku- ja andmeregistreid kirjutades ning lugedes.+USART – это универсальный синхронный последовательный интерфейс, UART же является его облегчённым вариантом – универсальным асинхронным последовательным интерфейсомРазница состоит в томчто USART, в отличии от UART, использует, помимо линий данных, так же линию тактового сигнала, с которыми синхронизируются данные. USART микроконтроллера AVR позволяет использовать одновременную двухстороннюю связьот 5- до 9-битные информационные слова (в случае с битами слово байт), 1 или стоп-битатри режима чётности и широкий выбор скоростей передачи данных в бодахВ микроконтроллерах AVR обычно до двух USART интерфейсовно у некоторых AVR USART отсутствуетПередача данных происходит по одному слову за разт.е. AVR переводит переданное пользователем слово в биты на уровне аппаратного обеспечения и передаёт его самостоятельно и наоборотПользователь руководит работой USART, записывая и считывая регистры данных, конфигурации и состояния.
  
-Kõikide seadistuste jaoks on olemas vastavad registridmida on üsna lihtne andmelehe abil seadistadaNatuke keerulisem on boodikiiruse seadmineTaktsignaal andmete edastamiseks genereeritakse töötaktist ja kasutaja saab valida teguri 1-st 4096-nimillega töötakt läbi jagatakseTäiendavalt jagatakse saadud taktisignaali olenevalt režiimist veel 2, 8 või 16-gaProbleem on selleset kõiki taktsagedusi ei saa jagada niiet tekiks standardne boodikiirusMõnede mikrokontrolleri taktsageduste puhul on boodikiiruse erinevus soovitust ligikaudu 10%. AVR andmelehtedes on toodud tabelid tüüpilistest taktsagedustestboodikiirustest ja nende saamiseks vajalikust jagamistegurist ning tekkida võivast veast.+Каждый параметр конфигурации имеет соответствующий регистркоторый легко настроить с помощью спецификацииНемного сложнее настроить скорость передачи в бодахТактовый сигнал для передачи данных генерируется из рабочего такта, и пользователь может выбрать коэффициент от до 4096, на который будет поделен рабочий тактПолученный сигнал дополнительно делится на 2, 8 или 16, в зависимости от режимаПроблема состоит в томчто все тактовые частоты нельзя поделить такчтобы получилась стандартная скорость передачи в бодахСкорость передачи в бодах некоторых тактовых частот микроконтроллера отличается от стандартной на 10%. В спецификациях AVR приведены таблицы, в которых указаны тактовые частоты, стандартные скорости передачи данных в бодах и делитель, необходимый для их полученияа так же возможные ошибки.
  
-Kuna andmete edastus toimub protsessorist sõltumata ja oluliselt aeglasemalttuleb enne saatmist veendudaet liides on valmis uut sõna edastamaSelleks tuleb jälgida saatepuhvri valmisoleku olekubittimis näitab, kas sinna võib saatmiseks uue sõna kirjutada või mitteKui mikrokontroller käivitadaon see luba vaikimisi kohe olemasNiipea kui sõna on saadetud ja puhvrisse pole uut sõna saatmiseks kirjutatudmuudetakse saatmise õnnestumise olekubitt kõrgeks.+Так как передача данных происходит в независимости от процессора и значительно медленнееследует перед передачей убедитьсячто интерфейс готов к передаче нового словаДля этого следует следить за битом готовности буфера передачкоторый показывает готовность буфера принять новое словоПри запуске микроконтроллерабит готовности включен по умолчаниюКак только слово отправлено, и в буфер не записано новоебит готовности устанавливается высоким.
  
-Sõna saabumist tähistab samuti spetsiaalne olekubittLisaks on olekubitid vastuvõtmisel tekkiva kaadri veapaarsuse vea ja vastuvõtja puhvri ületäitumise tähistamiseksPuhvri ületäitumine tekib näiteks siiskui eelmist saabunud sõna pole vastuvõtu puhvrist välja loetud - seepärast ongi oluline saabuvad sõnad kiiresti programmi lugedakasutades selleks näiteks katkestustKokku on kolm võimalikku katkestuse põhjustsaatepuhvri valmisoleksaatmise õnnestumine ja vastuvõtmise õnnestumine.+Поступление слова обозначается так же специальным битом состоянияВдобавок к этомусуществуют биты состояния, которые обозначают ошибки кадрирования и чётности, а так же переполнение приёмного буфераПереполнение буфера происходит, например тогда, когда предыдущее слово не было считано с буфераа новое уже пришло – поэтому очень важно быстро считывать входящие слова в программуиспользуя например прерываниеВсего существует три возможных причины прерыванияготовность буфера передачиуспешная передача и успешный приём.
  
-Muidesaatepuhver ja vastuvõtupuhver on füüsiliselt küll erinevad registrid, kuid jagavad sama mäluaadressi ja neil on ühine nimiÜhine andmeregister toimib niiet sellesse kirjutades jõuab sõna saatepuhvrisse ja sellest lugedes tuleb see vastuvõtupuhvrist. Veel ühe täpsustusena tuleks arvestadaet 9-bitiste andmesõnade puhul edastatakse ja loetakse üheksandat bitti hoopis ühe seaderegistri kaudu.+Буферы передачи и приёма в физическом смысле разные регистрыно имеют один адрес блока памяти и имяПри записи в совместно используемый регистр данныхданные сохраняются в буфере передачи, а при чтении из негоданные считываются из буфера приёма.
  
-~~PB~~+<pagebreak>
  
-<box 100% round #EEEEEE|Näide>+<box 100% round #EEEEEE|Пример>
  
-Seadistada 8 MHz taktsagedusel töötav ATmega128 USART0 liides boodikiirusel 9600 bps asünkroonselt edastama 8-bitiseid sõnu stop-bitiga ja ilma paarsuse bititaSaata märk "X".+Настроить интерфейс USART0 ATmega128, работающий на тактовой частоте 8 MHz, с бодовой скоростью 9600 bps, асинхронно передавать 8-битные слова, стоп-бит и ни одного бита чётностиОтправить знак „X.
  
 <code c> <code c>
Line 22: Line 22:
 int main() int main()
 { {
- // Boodi kiiruseks 9600 bps seadmineValem+ // Установление скорости передачи в бодах на 9600 bps. Формула
- //   Jagamistegur taktsagedus / 16 / boodi kiirus - 1+ //   Делитель тактовая частота / 16 / скорость в бодах - 1
  //   UBRR = 8000000 / 16 / 9600 - 1 = ~51  //   UBRR = 8000000 / 16 / 9600 - 1 = ~51
  UBRR0H = 0;  UBRR0H = 0;
  UBRR0L = 51;  UBRR0L = 51;
  
- // Saatja lubamine+ // Разрешение передачи
  UCSR0B = (1 << TXEN0);  UCSR0B = (1 << TXEN0);
  
- // Asünkroonse režiimi seadistamineandmesõna pikkuseks bitti + // Настройка асинхронного режимадлина слова бит 
- // 1 stop-bittkeelatud paarsuse bitt.+ // 1 стоп-битзапретить бит чётности.
  UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);  UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
  
- // Ootamekuni andmepuhver on tühi ehk eelmine sõna on saadetud + // Ожидание опустошения буфера данных,  
- // Selles näites ei oma see küll mõtetsest saadetakse alles + // т.е. предыдущее слово отправлено 
- // esimest märkiküll tasub seda teha rohkemate märkide korral.+        // В данном примере ожидание не требуется,  
 + // так как отправляется первый знакно  
 +        //следует выполнять это при передаче большего количества знаков.
  while (!(UCSR0A & (1 << UDRE))) continue;  while (!(UCSR0A & (1 << UDRE))) continue;
  
- // Märgi kirjutamine puhvrissekust see ka teele saadetakse+ // Записывание знака в буфероткуда он и будет отправлен
  UDR0 = 'X';  UDR0 = 'X';
   
- // Lõputu tsükkel+ // Бесконечный цикл
  while (1) continue;  while (1) continue;
 } }
ru/avr/usart.1376497788.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0