Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

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

Закрытая тема
Опции темы
Непрочитано 06.12.2010, 00:14   #1
EXIS
Прописка
 
Регистрация: 20.02.2006
Сообщений: 284
Сказал спасибо: 9
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
EXIS на пути к лучшему
По умолчанию 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);	
	}

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

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

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

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

Сообщение от Cybermaker Посмотреть сообщение
Уважаемый ТС, можно уточнить - какую именно цель вы приследуете уже во втором топике ? Если Вы более чётко опишите задачу - Вам раскажут о всех плюсах и минусах всех возможных методов сопряжения.
Отправить сообщение через UART от мк атмега8535 в COM порт и поймать его в терминале. Без мах232. Можно с применением транзисторов например кт315. По гуглу вроде для этих целей подходит.
EXIS вне форума  
Непрочитано 06.12.2010, 02:00   #8
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   #9
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,954
Сказали Спасибо 1,327 раз(а) в 578 сообщении(ях)
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   #10
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: ATMEGA простой UART (RS232) без max232

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

Закладки


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

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

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


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot