Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

ATMEGA простой UART (RS232) без max232

Непрочитано 06.12.2010, 00:14  
EXIS
Прописка
 
Регистрация: 20.02.2006
Сообщений: 283
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
EXIS на пути к лучшему
По умолчанию ATMEGA простой UART (RS232) без max232



1) Кто-нибудь пробовал подключать ATMEGA к Com порту по такой схеме?
Я понимаю что Com имеет логику на 12В, но говорят что современные com'ы и пяти вольтовые сигналы ловят.
https://kazus.run/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);	
	}

 }
Реклама:
EXIS вне форума  
Непрочитано 06.12.2010, 00:24  
_guardianangel
Почётный гражданин KAZUS.RUN
 
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,138
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
_guardianangel на пути к лучшему
По умолчанию Re: ATMEGA простой UART (RS232) без max232

Бред. У RS232 и USART сигналы взаимно инвертированы. Читай даташит на мегу, раздел иде пишут про допустимые уровни на портах. У RS232 лог 1 - это идето от -5В до -12В (это я в реале мерил, в идеале -15В). Мега такое врятли переварит. Если жаба душит купить MAX или нет такой возможности - делай преобразователь на транзисторах.
_guardianangel вне форума  
Непрочитано 06.12.2010, 00:34  
EXIS
Прописка
 
Регистрация: 20.02.2006
Сообщений: 283
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
EXIS на пути к лучшему
По умолчанию 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.
EXIS вне форума  
Непрочитано 06.12.2010, 01:23  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
nml на пути к лучшему
По умолчанию 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.
nml вне форума  
Непрочитано 06.12.2010, 01:28  
Cybermaker
Вид на жительство
 
Регистрация: 21.08.2007
Сообщений: 318
Сказал спасибо: 12
Сказали Спасибо 67 раз(а) в 61 сообщении(ях)
Cybermaker на пути к лучшему
По умолчанию Re: ATMEGA простой UART (RS232) без max232

Уважаемый ТС, можно уточнить - какую именно цель вы приследуете уже во втором топике ? Если Вы более чётко опишите задачу - Вам раскажут о всех плюсах и минусах всех возможных методов сопряжения.
Cybermaker вне форума  
Непрочитано 06.12.2010, 01:29  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: ATMEGA простой UART (RS232) без max232

Если пулять одиночными пакетами, точность в 10% вполне допустима.
Easyrider83 вне форума  
Непрочитано 06.12.2010, 01:49  
EXIS
Прописка
 
Регистрация: 20.02.2006
Сообщений: 283
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
EXIS на пути к лучшему
По умолчанию Re: ATMEGA простой UART (RS232) без max232

Сообщение от Cybermaker Посмотреть сообщение
Уважаемый ТС, можно уточнить - какую именно цель вы приследуете уже во втором топике ? Если Вы более чётко опишите задачу - Вам раскажут о всех плюсах и минусах всех возможных методов сопряжения.
Отправить сообщение через UART от мк атмега8535 в COM порт и поймать его в терминале. Без мах232. Можно с применением транзисторов например кт315. По гуглу вроде для этих целей подходит.
EXIS вне форума  
Непрочитано 06.12.2010, 02:00  
Cybermaker
Вид на жительство
 
Регистрация: 21.08.2007
Сообщений: 318
Сказал спасибо: 12
Сказали Спасибо 67 раз(а) в 61 сообщении(ях)
Cybermaker на пути к лучшему
По умолчанию Re: ATMEGA простой UART (RS232) без max232

Сообщение от EXIS Посмотреть сообщение
Отправить сообщение через UART от мк атмега8535 в COM порт и поймать его в терминале. Без мах232. Можно с применением транзисторов например кт315. По гуглу вроде для этих целей подходит.
С какой целью затевается подобный эксперимент: посмотреть получится или нет, или же вы выбираете решение для массового производства ?

Суть в том, что выше приведенная вами схема с вероятностью 99% будет работать на вашем компе. Но для производства всё это не годится: если вдруг найдётся комп, на котором работать она не будет (а такой всё таки найдётся) - переделывать уже разведённую плату будет значительно труднее.

P.S. Если вы по природе своей склонны к извращениям - возьмите одну К155ЛА3 - она будет сильно греться но хрен когда сгорит. И будет работать как приведённая выше схема

Последний раз редактировалось Cybermaker; 06.12.2010 в 02:12.
Cybermaker вне форума  
Непрочитано 06.12.2010, 12:10  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,394
Сказал спасибо: 2,016
Сказали Спасибо 1,356 раз(а) в 591 сообщении(ях)
nml на пути к лучшему
По умолчанию Re: ATMEGA простой UART (RS232) без max232

Сообщение от Easyrider83 Посмотреть сообщение
Если пулять одиночными пакетами, точность в 10% вполне допустима.
Интересно, что такое "одиночный пакет". И неплохо бы обочновать эти 10% - откуда циферки? В даташите на АВРку для 8 битного режима - максимальная погрешность - 5%, рекомендуемая - 2%.

Да и максимальные 5% легко обосновать - 8 бит, реально передается 10 бит (+ старт + стоп). Ошибка в 10% - это уже полная потеря одного бита, одибка в 5% - потеря половины бита. И это уже ошибка, так как USART производит измерение в середине битового интервала (это если упрощенно). Так что 5% - уже нельзя. И если не нужен геморрой, то лучше соблюсти требования даташита - 2%.
__________________
[ жизнь приятна и красива, если выпить литр пива ]
nml вне форума  
Непрочитано 06.12.2010, 14:35  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: ATMEGA простой UART (RS232) без max232

Количество пакетов не имеет значения. Т.к. по старт-биту КАЖДОГО нового байта заново синхронизируется USART
niXto вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 09:58.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.