Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.12.2010, 00:14
|
#1
|
Прописка
Регистрация: 20.02.2006
Сообщений: 284
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
ATMEGA простой UART (RS232) без max232
1) Кто-нибудь пробовал подключать ATMEGA к Com порту по такой схеме?
Я понимаю что Com имеет логику на 12В, но говорят что современные com'ы и пяти вольтовые сигналы ловят.
https://kazus.ru/shemes/showpage/0/860/2.html.
Я подключал, и отсылал данные с контроллера на COM порт, терминал ловит данные, но ловит кракозябры. Хотя в proteus все эмулируется отлично.
2) Можно ли при работе с UART использовать внутренний тактовый генератор, хотябы на малых скоростях 2400-4800 бод? Или нужен кварц по любому?
3)Проверьте код может где ошибся в инициализации например:
СКОРТ установил на 1Мгц
Контроллер ATMEGA8535
Код:
|
#define F_CPU 1000000UL // 1 MHz
#include ‹avr/io.h›
#include ‹stdio.h›
#include ‹avr/delay.h›
void usart_ini(void);
int putcharm (int c);
// Процедура инициализации USART
void usart_ini()
{
// USART initialization
// Communication Parameters: 8 Data, No Parity, 1 Stop 8N1
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
// USART Baud rate: 4800 для частоты 1 МГц не в HEX
UBRRH=0;
UBRRL=12;
}
// Функция передачи символа в порт
int putcharm (int c)
{
while((UCSRA&(1‹‹UDRE))==0);
UDR = c;
}
int main( void )
{
//Небольшая задержка
_delay_loop_2(1000);
// Инициализация USART
usart_ini();
// объявление пеерменных
unsigned char temp = 0;
int i;
//Небольшая задержка
_delay_loop_2(100);
//Раздел сообщений
unsigned char* strm = " USART ATMEGA8535";
DDRB |= _BV(PB0); // назначить ножку PB0 ВЫХОДОМ
//Основной цикл программы
while(1){
PORTB |= _BV(PB0); // светодиод включен
//Вывод текста в терминал
for(i=0;i‹41;i++)putcharm(strm[i]);
putcharm(0x0D);
_delay_ms(500);
PORTB &= ~_BV(PB0);
_delay_ms(500);
}
} |
|
|
|
|
06.12.2010, 00:24
|
#2
|
Почётный гражданин KAZUS.RU
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
|
Re: ATMEGA простой UART (RS232) без max232
Бред. У RS232 и USART сигналы взаимно инвертированы. Читай даташит на мегу, раздел иде пишут про допустимые уровни на портах. У RS232 лог 1 - это идето от -5В до -12В (это я в реале мерил, в идеале -15В). Мега такое врятли переварит. Если жаба душит купить MAX или нет такой возможности - делай преобразователь на транзисторах.
|
|
|
|
06.12.2010, 00:34
|
#3
|
Прописка
Регистрация: 20.02.2006
Сообщений: 284
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: ATMEGA простой UART (RS232) без max232
Сообщение от _guardianangel
|
У RS232 лог 1 - это идето от -5В до -12В (это я в реале мерил, в идеале -15В).
|
Ну да где-то так
http://www.gaw.ru/html.cgi/txt/inter...s232/start.htm
Для данных:
Уровень Передатчик Приемник
Логический 0 От +5 В до +15 В От +3 В до +25 В
Логический 1 от-5 В до -15 В От -3 В до -25 В
Не определен От -3 В до +3 В
Последний раз редактировалось EXIS; 06.12.2010 в 01:19.
|
|
|
|
06.12.2010, 01:23
|
#4
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,954
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
|
Re: ATMEGA простой UART (RS232) без max232
Насчет встроенного генератора - тут надо плясать от того, что для RS232 точность времянок, если не путаю, 2.5% или где-то около. Если ваш МК такую точность даст - бога ради. Но по опыту - пытался как-то управлять авиамодельной сервомашинкой с тини2313, со встроенным тактовым. Сигнал управления делался ШИМом, аппаратно. Так вот, в OCR задал число, а серва - елозит туда-сюда. И все потому, что тактовая встроенного RC генератора зависит и от питания, и от температуры, и от пролетающей над МК мухи.
IMHO - не хотите глюков - поставьте кварц. Цена-то ему три копейки.
ЗЫ Кстати, как вариант - если напрягает ставить MAX232. Берется дата-кабель от мобилки, не самый старый, а который уже USB - но в системе определяется как виртуальный КОМ-порт. Процентов на 90 это переходник на PL2303. И либо разъем подбираете ответный, либо отрезаете нафиг штатный - и получаете именно USART с напряжениями сигнала 3.3в. На практике - работает прек расно и с АВРкой, питаемой от 5в.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
Последний раз редактировалось nml; 06.12.2010 в 01:27.
|
|
|
|
06.12.2010, 01:28
|
#5
|
Вид на жительство
Регистрация: 21.08.2007
Сообщений: 318
Сказал спасибо: 12
Сказали Спасибо 67 раз(а) в 61 сообщении(ях)
|
Re: ATMEGA простой UART (RS232) без max232
Уважаемый ТС, можно уточнить - какую именно цель вы приследуете уже во втором топике ? Если Вы более чётко опишите задачу - Вам раскажут о всех плюсах и минусах всех возможных методов сопряжения.
|
|
|
|
06.12.2010, 01:29
|
#6
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: ATMEGA простой UART (RS232) без max232
Если пулять одиночными пакетами, точность в 10% вполне допустима.
|
|
|
|
06.12.2010, 01:49
|
#7
|
Прописка
Регистрация: 20.02.2006
Сообщений: 284
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: ATMEGA простой UART (RS232) без max232
Сообщение от Cybermaker
|
Уважаемый ТС, можно уточнить - какую именно цель вы приследуете уже во втором топике ? Если Вы более чётко опишите задачу - Вам раскажут о всех плюсах и минусах всех возможных методов сопряжения.
|
Отправить сообщение через UART от мк атмега8535 в COM порт и поймать его в терминале. Без мах232. Можно с применением транзисторов например кт315. По гуглу вроде для этих целей подходит.
|
|
|
|
06.12.2010, 02:00
|
#8
|
Вид на жительство
Регистрация: 21.08.2007
Сообщений: 318
Сказал спасибо: 12
Сказали Спасибо 67 раз(а) в 61 сообщении(ях)
|
Re: ATMEGA простой UART (RS232) без max232
Сообщение от EXIS
|
Отправить сообщение через UART от мк атмега8535 в COM порт и поймать его в терминале. Без мах232. Можно с применением транзисторов например кт315. По гуглу вроде для этих целей подходит.
|
С какой целью затевается подобный эксперимент: посмотреть получится или нет, или же вы выбираете решение для массового производства ?
Суть в том, что выше приведенная вами схема с вероятностью 99% будет работать на вашем компе. Но для производства всё это не годится: если вдруг найдётся комп, на котором работать она не будет (а такой всё таки найдётся) - переделывать уже разведённую плату будет значительно труднее.
P.S. Если вы по природе своей склонны к извращениям - возьмите одну К155ЛА3 - она будет сильно греться но хрен когда сгорит. И будет работать как приведённая выше схема
Последний раз редактировалось Cybermaker; 06.12.2010 в 02:12.
|
|
|
|
06.12.2010, 12:10
|
#9
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,954
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
|
Re: ATMEGA простой UART (RS232) без max232
Сообщение от Easyrider83
|
Если пулять одиночными пакетами, точность в 10% вполне допустима.
|
Интересно, что такое "одиночный пакет". И неплохо бы обочновать эти 10% - откуда циферки? В даташите на АВРку для 8 битного режима - максимальная погрешность - 5%, рекомендуемая - 2%.
Да и максимальные 5% легко обосновать - 8 бит, реально передается 10 бит (+ старт + стоп). Ошибка в 10% - это уже полная потеря одного бита, одибка в 5% - потеря половины бита. И это уже ошибка, так как USART производит измерение в середине битового интервала (это если упрощенно). Так что 5% - уже нельзя. И если не нужен геморрой, то лучше соблюсти требования даташита - 2%.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
06.12.2010, 14:35
|
#10
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: ATMEGA простой UART (RS232) без max232
Количество пакетов не имеет значения. Т.к. по старт-биту КАЖДОГО нового байта заново синхронизируется USART
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:28.
|
|