Подключаем микросхему ATTiny2313 к ПК через max232 (UART)

Мне нужен был простой способ заставить мой микроконтроллер общаться с моим ПК (и наоборот) с минимальным количеством деталей. Самый простой способ сделать это — использовать возможности UART ATTiny2313 для общения с моим ПК через последовательный порт.

Одна из проблем заключается в том, что ATTiny2313 (как и большинство микроконтроллеров) выдает 5 В для «высокого» (включено) и 0 В для «низкого» (выключено). Стандарт RS-232 (который используют последовательные порты ПК) требует -15 В для высокого и +15 В для низкого! Очевидно, что микроконтроллеру нужна некоторая помощь, чтобы добиться этого. Самый простой способ — использовать преобразователь последовательных уровней MAX232 (микросхема). Обратите внимание, что для правильной работы ему требуется несколько конденсаторов емкостью 10 мкФ.

Вот более общая схема:

Возможно, что приведенная выше схема подключения max232 будет – не работать, тогда попробуйте подключить её следующим образом (в данном примере подключена Atmega88):

Я подключил свой ATTiny2313 к MAX232 очень стандартным способом. (фото) Контакты 13 и 14 MAX232 идут к последовательному порту, а контакты 2 и 3 ATTiny2313 идут к контактам 12 и 11 MAX232 соответственно. Отмечу, что они использовали значение осциллятора (3,6864 МГц), отличное от моего (9,216 МГц).

Важно определить скорость последовательной связи . Это зависит от частоты вашего генератора! Я сказал, что использовал генератор 9,216 МГц. Во-первых, требуется кварцевый или керамический генератор поверх внутреннего RC-генератора, потому что внутренний RC-генератор недостаточно точен для последовательной связи. Выбранный вами генератор должен быть точным кратным 1,8432 МГц. Мой — это 5-кратное значение. Многие используют 2-кратное значение (3,6864 МГц), и это нормально! Вам просто нужно убедиться, что ваш микрочип знает (1) как использовать внешний генератор (найдите в Яндексе, как это сделать) и (2) какова частота вашего генератора и как быстро он должен отправлять данные. Это делается путем установки значения UBRRL. Формула для этого здесь:

В техническом описании вашего микроконтроллера (даташит) может быть указано множество распространенных частот кристалла, полос пропускания и соответствующих им значений UBRR. Однако в моем техническом описании (даташит) не было записи для кристалла 9,216 МГц, поэтому мне пришлось делать расчеты самостоятельно. Я поискал в Яндексе, но никакой «таблицы» не оказалось! Почему бы не сделать ее? (рисунок ниже). В любом случае, для моего случая я определил, что если установить значение UBRR равным 239, то я смогу передавать данные со скоростью 2400 бод (бит/сек). Это достаточно медленно, чтобы обеспечить точность, но достаточно быстро, чтобы быстро выгрузить большой объем текста на терминал ПК.

Калькулятор скорости передачи данных AVR
Это облегчит вам жизнь. На странице wormfood.net/avrbaudcalc.php есть таблица распространенных кристаллов и скоростей передачи данных, с которыми они работают лучше всего! Попробуйте выбрать комбинацию, которая обеспечивает наименьшую возможную ошибку…

Это минимальный код для проверки моей установки. Просто загрузите код (написанный на C, скомпилированный с помощью avr-gcc) на свой чип, и он готов к работе. Убедитесь, что вы настроили биты микроконтроллера на использование внешнего осциллятора и что вы правильно установили значение UBRRL.

#include <avr/io.h>  
#include <avr/interrupt.h>  
#include <util/delay.h>  

int main (void)  
{  
  unsigned char data=0;  
  UBRRL = 239;  
  UCSRB = (1 < < RXEN) | (1 << TXEN);  
  UCSRC = (1 < < UCSZ1) | (1 << UCSZ0);  

  for (;;)  
  {  
    if (data>'Z'||data< 'A')  
    {  
      UDR = 10; UDR = 13; data='A';_delay_ms(100);  
    }  
    
    UDR = data;  
    data += 1;  
    _delay_ms(100);  
  }  
}  

После загрузки он готов к работе! Он непрерывно сбрасывает буквы в последовательный порт. Чтобы их получить, откройте HyperTerminal (в Windows, в разделе «Аксессуары») или minicom (в Linux, посмотрите!). Установите скорость передачи данных на 2400 (или любую другую, которую вы выбрали), и все готово (2400 бит в сек, 8 дата бит, None, 1 стоп бит). Это (изображение ниже) — вывод микроконтроллера в HyperTerminal на моем ПК. Извините за качество изображения, я сфотографировал ЖК-экран, а не делал скриншот.

Это схема , которая генерирует вывод предыдущего изображения. У меня есть несколько дополнительных компонентов. У меня есть светодиод, который я использовал для отладки, а также переключатель (обозначенный как «R»). Переключатель (при нажатии) заземляет контакт 1 ATTiny2313, что сбрасывает его. Если я хочу запрограммировать чип, я удерживаю «R» нажатым, и ПК может запрограммировать его с помощью встроенного программатора «параллельный порт, прямой, стиль DAPA» ). Один кабель, идущий в схему, предназначен для программатора параллельного порта, один кабель — для последовательного порта (передача данных), а один — для питания (5 В, которые я украл из порта USB).

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

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