atmega328p SoftwareSerial to 1.8 TTL

kristow
kristow аватар
Offline
Зарегистрирован: 08.08.2013

Всем привет!

atmega328p имеет uart порт с уровнем 5в.

При использовании библиотеки SoftwareSerial получаем виртуальный uart с тем же уровнем 5в.

Мне необходимо получить виртуальный uart для общения с  железкой, у которой uart (TTL) имеет уровень 1.8в.

Подумал что раз есть библиотека, которая отлично эмулирует работу RX и TX с уровнем 5в. можно сделать библиотеку для получения того же виртуального порта, но с уровнем 1.8в. для RX и TX. 

Железный uart я использую для обмена данными с другой железкой, у которой уровень 5в...

Помогите пожалуйста советом или кодом. За рабочую библиотеку, которая сделает виртуальный uart с уровнем 1.8в готов отблагадарить :)

kristow
kristow аватар
Offline
Зарегистрирован: 08.08.2013

Забыл написать, вопрос хотел решить именно программно, т.е. без добавления физических элементов трансляторов уровня напряжения...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Виртуальный на то он и виртуальный ))) ставьте преобразователи уровней

kristow
kristow аватар
Offline
Зарегистрирован: 08.08.2013

ua6em пишет:

Виртуальный на то он и виртуальный ))) ставьте преобразователи уровней

Я расчитываю что "Виртуальный" подразумевает преобразование 5в = 1 и 0в = 0 и так далее получаем и передаем данные. Я хочу на том же принципе только UART логика 1.8 Вольт = единица больше 1.17 вольт, ноль меньше 0.45 вольт. Правильно думаю? или такое нельзя программно сделать?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

виртуальный подразумевает что силами библиотеки реализован ПРОТОКОЛ, а физика за вами

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

В даташите на ATmega328P (Table 29-1. Common DC characteristics):

Входное напряжение на пин: 0,3В и менее будет распознано как лог. 0

Входное напряжение на пин: 0,6В и более будет распознано как лог. 1

Поэтому ножка RX должна нормально работать с TTL 1,8В

Выходное напряжение на пине: лог. 0 может быть в пределах от 0В до 0,6В-1,0В

Выходное напряжение на пине: лог. 1 может быть в пределах от 2,1В-4,2В до напряжения питания (VCC).

Поэтому ножка TX не будет нормально работать с TTL 1,8В. Нужен преобразователь уровней.

P.S. Да, программно нельзя менять уровни напряжения.

kristow
kristow аватар
Offline
Зарегистрирован: 08.08.2013

Jeka_M пишет:

Выходное напряжение на пине: лог. 0 может быть в пределах от 0В до 0,6В-1,0В

Выходное напряжение на пине: лог. 1 может быть в пределах от 2,1В-4,2В до напряжения питания (VCC).

Поэтому ножка TX не будет нормально работать с TTL 1,8В. Нужен преобразователь уровней.

P.S. Да, программно нельзя менять уровни напряжения.

Спасибо за ответ. Жаль что нельзя программно. Я только не пойму почему? SoftwareSerial библиотека же работает с портами дискретными. А если использовать аналоговые порты МК? Написать библиотеку, где будет прописано, что 1 = 1.8в., а 0 = 0.6в. И по такому принципу эмулировать работу виртуального uart порта с уровнем 1.8в...

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

kristow пишет:

Спасибо за ответ. Жаль что нельзя программно. Я только не пойму почему? 

Потому что микроконтроллер физически не может менять уровень выходного напряжения лог. 1

kristow пишет:

А если использовать аналоговые порты МК? Написать библиотеку, где будет прописано, что 1 = 1.8в., а 0 = 0.6в. И по такому принципу эмулировать работу виртуального uart порта с уровнем 1.8в...

У микроконтроллера НЕТ настоящих аналоговых выходов (ЦАП). То, что в Arduino IDE названо аналоговым выходом (функция analogWrite), на самом деле является выходом цифрового ШИМ.

nik182
Offline
Зарегистрирован: 04.05.2015

В этом процессоре нет аппаратного ЦАП. Вы в принципе не можете выставить на ноге 1.8 вольта. Аналоговый выход сделан с помощью ШИМ. Для получения 1.8 вольта его надо сгладить. Т.Е. передать получится, но скорость будет никакая. А вообще проблем не вижу, если в 1.8 вольт устройстве есть защитные диоды на входе, достаточно подать ему на вход пятивольтовый сигнал через 10кОм. , если нет - то организовать. 

kristow
kristow аватар
Offline
Зарегистрирован: 08.08.2013

Ясна, спасибо. Буду иметь в виду :)