AVR Урок 14. USART. Связь МК с ПК. Часть 2

 

 

 

 

Урок 14

Часть 2

 

USART. Связь МК с ПК

 

 

Сегодня мы продолжим изучение программирования интерфейса  USART.

Продолжаем изучать регистры микроконтроллера Atmega8, отвечающие за работу данного интерфейса.

У интерфейса USART в контроллере Atmega8 существует целых три регистра управления — UCSRA, UCSRB и UCSRC. Аббревиатуры данных регистров расшифровываются как USART Control and Status Register. Из данной аббревиатуры видно, что это регистры не только управления, но и состояния.

Рассмотрим регистр UCSRA. Оратимся за помощью, как всегда. к технической документации на микроконтроллер

 

image11

 

RXC — это бит состояния приемной шины. То есть передался пакет в шину — флаг установился. Мы его можем ослеживать в цикле, чтобы узнать, пришёл ли пакет в данную шину. Как видно из рисунка, бит этот только для чтения и самостоятельно мы им управлять не можем.

TXC — бит состояния шины передачи. Назначение аналогично вышеуказанному, но только данный бит уже может изменяться программно, то есть он также и на запись.

UDRE — бит освобождения регистра данных. Состояние по умолчанию — 1.

FE — бит также флаговый и устанавливается он в случае ошибки передачи пакета. Пример такой — в приемных данных после истечения времени передачи стопового бита не выставился высокий уровень, что невозможно. Также существуют другие случаи.

U2X — данный бит мы уже видели, он используется для удвоения скорости приёма-передачи данных по шине.

 

Следующий регистр — UCSRB

 

image12

 

В данном регистре также существуют флаги, только они в основном будут использоваться в случае применения прерываний.

Биты данного регистра мы будем изучать по мере их использования при составлении кода программы.

Например бит UCSZ2 — он с цифрой 2. Остальные биты данной настройки находятся в другом регистре. Такое часто бывает, когда не хватает в регистре места для остальных родственных битов.

Следующий регистр — UCSRC

 

image13

 

Данный регистр интересен тем, что бит URSEL у него совмещён с таким же битом в регистровой паре UBRR, отвечающей за скорость. То есть, если данный бит в нуле, то запись будет идти в UBRR, а если в единице, то в UCSRC. Вот такой вот прикол.

Биты UPM используются для организации проверки чётности-нечётности

 

image14

 

Если оба этих бита в нуле, то мы не используем контроль чётности, в случае, если бит UPM1 в единице, мы уже используем различные режимы контроля.

Следующий бит — USBS — это бит количества стоповых битов

 

image15

 

Если мы данный бит не трогаем и оставляем в нуле, то у нас будет 1 стоповый бит, если установим в единицу — два стоповых бита.

Теперь также у нас ещё существуют биты UCSZ. Два из них находятся в рассматриваем регистре, а ещё один — UCSZ2 — в регистре UCSRB. Комбинации данных битов регулируют количество полезных информационных битов для приема-передачи — от 5 до 9. Вот варианты

 

image16

 

Остальные биты данного регистра мы рассмотрим также, когда будем писать код.

Также рассмотрим регистровую пару UBRR, отвечающую за установку скорости. Она состоит из двух регистров UBRRH и UBRRL, Первый отвечает за старшую часть двухбайтовой величины регистра, а второй — за младшую

 

image17

 

О бите URSEL уже было оговорено выше.

Ну и. как и практически у любой шины, у интерфейса USART существует регистр данных. В него мы заносим данные для передачи, либо забираем переданные

 

image18

 

Данный регистр организован хитро. если мы его используем для чтения, то читаем его буфер RXB, а если для записи. то пишем в TXB. То есть обращаемся мы в любом случае к аббревиатуре UDR.

Поэтому сразу появляется автоматически мысль. А куда девается и откуда берётся 9 бит в режиме 9-битного приема-передачи. Оказывается, если мы включаем 9-битный режим, то необходимо перед отправкой такого длинного байта, если можно так сказать, установить или сбросить бит TXB8 в регистре UCSRB, Отсюда он и попадёт в шину установленный или сброшенный, ну а при приёме пользуемся значением бита RXB8 в том же регистре. Вот такие хитрые регистры.

А теперь, так как мы уже слегка подустали от теории, хочется чего-то покравивей. Давайте посмотрим, собственно, переходнички, связывающие наш контроллер с ПК. Их существует немло. Посмотрим некоторые из них

 

image22 image20 image23

 

Данные устройства различаются изготовителем, типом применяемой микросхемы-преобразователя и т.д.

 

 

Также можно изготовить самодельный переходник из дата-кабеля старого мобильного телефона, что я и сделал.

Вот он — мой переходник

 

image24

 

Вот микросхема, установленная на переходнике

 

image25

 

Я вывел наружу необходимые провода с соответствующих контактов и напаял к ним наконечники. Припаял провода я вот таким вот образом

 

image26

 

Назначение проводов мы увидим, когда данный переходник будем подсоединять к отладочной плате с контроллером.

Проект в Atmel Studio был создан стандартным образом, назван Test11. Также был организован заголовочный файл main.h, и также были созданы и присоединены два файла для библиотеки usart.h и usart.c, так как интерфейс USART мы будем в дальнейшем очень часто использовать и нам не придётся писать заново код общения с интерфейсом.

На всякий случай приведу содержание файлов проекта, чтобы не было путаницы

 

Test11.c:

#include "main.h"

//————————————————————

int main(void)

{

USART_Init (8);

  while(1)

  {

 

  }

}

 

main.h:

#ifndef MAIN_H_

#define MAIN_H_

#define F_CPU 8000000UL

#include <avr/io.h>

#include <avr/interrupt.h>

#include <util/delay.h>

#include <stdio.h>

#include <stdlib.h>

#include "usart.h"

#endif /* MAIN_H_ */

 

 

usart.c:

#include "usart.h"

 

usart.h:

#ifndef USART_H_

#define USART_H_

#include "main.h"

#endif /* USART_H_ */

 

В следующей части занятия мы перейдём непосредственно к сочинению исходного кода для использования шины USART.

 

Предыдущая часть Программирование МК AVR Следующая часть

 

Программатор и переходник USB-TTL можно приобрести здесь:

Программатор (продавец надёжный) USBASP USBISP 2.0

Переходник USB-TTL лучше купить такой (сейчас у меня именно такой и он мне больше нравится)

 

 

Смотреть ВИДЕОУРОК (нажмите на картинку)

 

AVR USART. Связь МК с ПК

2 комментария на “AVR Урок 14. USART. Связь МК с ПК. Часть 2
  1. Oleg:

    Здраствуйте. Покажите пожалуйста как настроить USART на arduino pro mini (atmega 328P).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*