Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/59: Рейтинг темы: голосов - 59, средняя оценка - 4.88
moxtiom
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 98
1

Проблема с UART

10.10.2011, 04:30. Просмотров 10638. Ответов 13
Метки нет (Все метки)

Здраствуйте!

Хочу общатся с МК через UART, но возникли проблемы...

использую st232bn и МК atmega8.

обвязку st232bn сделал так:

<Изображение удалено>
только вместо електролитических конденсаторов использовал многослойные:

<Изображение удалено>
К som порту подключил как здесь:

<Изображение удалено>
Землю с ком порта подсоединил к 15 ноге микросхемы.
Для питания сикросхемы вывел 5В с USB: +5 v подключил на 16 ногу, а землю с USB на 15 ногу.
Дальше подсоединил к МК: порты PD.0,PD.1. МК питается от 4 АА акумуляторов.

Написал прогу на МК:
Код
....это часть кода
void initUART()
{
UCSRB|=(1<<3)|(1<<4);
UBRRH=0x00;
UBRRL=0x33;
}

void main(void)
{
char mystr[]="Atmega8 UART ready!";
....
initUART();
....
while(1)
{
for (i=0; i < 19; i++)
{
while ( !( UCSRA & (1<<5)) ) {}
UDR=mystr[i];
}

......
};

}
зашил прошивку в МК...

Ком порт настроил как здесь:

<Изображение удалено>

через терминал СodeVision Avr, который настроен так:

<Изображение удалено>
подключаюсь и жду сообщений от МК...но ничего не происходит....
подскажите пожалуйста что я не так сделал...

у меня несколько вариантов:
1) я намутил что то с землей - не нада соединять землю от юсб и ком, или подвести туда еще землю от МК
2) нада фьюзы для юарта запрограммировать, если да то какие
3) я неправильно работаю с юартом програмно....
RXD,TxD я скореее всего не перепутал так как я уже несколько раз менял их местами и на ком порте и на мк...

помогите нубу....
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2011, 04:30
Ответы с готовыми решениями:

Проблема с UART
День добрый. Продолжаю изучать AVR и наткнулся на проблему при изучении UART(работаю с платой...

Проблема с UART
Здравствуйте. Программирую МК не давно, и поэтому столкнулся с проблемой при работе через UART....

проблема с передачей по UART
Добрый день! Сейчас занимаюсь разработкой одного устройства (контроллер ATmega8535). Оно передает...

Проблема с UART на Atmega128
Всем доброго времение суток, надеюсь поможете разобраться с проблемой. Предистория: устройство на...

Странная проблема uart
mega8515, от внутреннего генератора 1MHz, .include &quot;m8515def.yms&quot; ; Internal Hordware...

13
RyshirD
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 574
10.10.2011, 06:44 2
все земли на плате необходимо объединять, но это не основная проблемма видимо

а Rx и Tx должны быть соедененны так

Rx (mk) <----------- Tx (допустим max232)
Tx (mk) -----------> Rx (max 232)
0
Bottti
0 / 0 / 0
Регистрация: 12.06.2011
Сообщений: 74
10.10.2011, 16:03 3
Прерывания разрешены?
0
Bottti
0 / 0 / 0
Регистрация: 12.06.2011
Сообщений: 74
10.10.2011, 16:22 4
И еще:
UBRRH=0x00;
UBRRL=0x33;
Тут скорость расчитана, я так понял, из расчета, что частота 8МГц? атмега8 по дефолту на 1Мгц работает, поэтому либо фьюзы на 8мгц поставить, либо пересчитать из расчета на 1Мц (ну если она не на 8мгц и так работает :))
0
moxtiom
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 98
10.10.2011, 17:53 5
...ща прерывания разрешу)))

атмега8 работает на 16Мгц...
скорость не рассчитал...ща сделаю....

отпишусь
спасибо..
0
moxtiom
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 98
10.10.2011, 18:19 6
cменил код
Код
....
void initUART()
{
// USORT initiotyzotion
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USORT Receiver: Off
// USORT Transmitter: On
// USORT Mode: Asynchronous
// USORT Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x67;
}

void USORT_Transmit( unsykned char data )
{
/* Woyt for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)));
/* Put data into buffer, sends the data */
UDR = data;
}
...

void main(void)
{

init_divices();

initUART();
#asm("sei");

while(1)
{
USORT_Transmit(S);

.....
};
}
разрешать прерывания там вроде не нада...но я разрешил...всеравно не работает...

ща попробую соединить землю от МК с микросхемой..
0
xroymom
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 727
10.10.2011, 18:40 7
Первым делом надо замкнуть RX и TX на микросхеме и отправить данные через терминал. Если вернутся - значит уже ковырять мк, если не вернутся - проблема с микрухой.
0
Bottti
0 / 0 / 0
Регистрация: 12.06.2011
Сообщений: 74
10.10.2011, 18:53 8
действительно, прерывания тут не нужны. Нужно проверить, как сказал xroymom.
0
moxtiom
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 98
10.10.2011, 18:58 9
Цитата Сообщение от xroymom
Первым делом надо замкнуть RX и TX на микросхеме и отправить данные через терминал. Если вернутся - значит уже ковырять мк, если не вернутся - проблема с микрухой.
спасибо за реально полезный совет!!!
замкнул джампером и невернулся байт...проблема с микрухой...а может ли оно не работать потому что я сменил кондеры с електролитических на многослойные?
0
moxtiom
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 98
10.10.2011, 19:21 10
с микрухой разобрался...перепутал RxD,TxD...
ща нада с МК разобратся..
0
moxtiom
0 / 0 / 0
Регистрация: 09.09.2011
Сообщений: 98
10.10.2011, 19:24 11
УРА!!!!!!!!!!!!!!
оно заработало!!!!!!!!11

спасибо всем

п.с. у вас реально полезный форум
0
MSDFV
0 / 0 / 0
Регистрация: 23.07.2010
Сообщений: 75
12.10.2011, 11:05 12
moxtiom в кодевижине поснимай галочки Append LF обе. А то такой глюк слоовиш когда с мк на комп будешь посылать 0x0D будет показываться 2 байта 0x0D 0x0A.
0
R_uro
0 / 0 / 0
Регистрация: 06.04.2010
Сообщений: 1,088
16.10.2011, 00:13 13
Есть два устройства на МК , общающиеся между собой по ЮАРТу. В протеусе тестирую каждую отдельно - все работает, команды отправляются, принимаются, обрабатываются. В железе не работает ничего. Подключил одну плату к КОМ порту. проверил МАХ232, сигнал возвращается в терминал. Стал пробовать с МК. Выставил частоту 8.000.000 мгц ( скомпилировал программу, выставил фьюзы на эту частоту от внутреннего генератора), как и для Протеуса, скорость передачи 9600
Код
 //инициализация usart`a
void USORT_Init(void)
{
UBRRH = 0;
UBRRL = 0x0033; // 51; //скорость обмена 9600 бод для 8 мгц.
UCSRB = (1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<TXEN); //разр. прерыв при приеме и передачи, разр приема, разр передачи.
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); //размер слова 8 разрядов
}
Стал посылать с компа на мк команды. Реакции ноль. С мк на комп вроде отправляются нормально, но только до того момента, как попытаюсь с компа отправить на мк. После этого уже не уходят и на комп.
Дальше. Т.К. кварц стоит на 11.0592 мгц, то изменил инициализацию, выставил фьюзы на внешний кварц :
Код
UBRRH = 0;
UBRRL = 0x0047; //скорость обмена 9600 бод для 11.0592 мгц.
После этого не работает и отправка с мк на пк.
Что здесь не так? Может упускаю какой-то момент? Настройки в терминальной программе?
0
нитнае слава
0 / 0 / 0
Регистрация: 21.08.2011
Сообщений: 47
16.10.2011, 14:34 14
Осциллограф...

... понел. Тогда значит остаётся изъёбываться.

Посылать раз в секунду байт "0b10000000", смотреть, что получается.
Повторить с байтами "0b10001000", "0b10101010", "0b11111111" (заметил догадался, почему именно такие байты? частота следования единичек, ага)...

... не надо никаких "сигналов" и тем более "команд", надо для начала убедиться, что приёмник видит стартовый бит и на более-менее похожей скорости пытается принимать остальные биты.

А потом уже протеусы, шматеусы и пытаться угадывать, что неправильно напечатано в абстрактной какой-то такой простыне из текста.

Цитата Сообщение от R_uro
С мк на комп вроде отправляются нормально, но только до того момента, как попытаюсь с компа отправить на мк. После этого уже не уходят и на комп.
Откуда ж начинать искать-то...
... а в железе и настройках под фонарём ошибку ключи искать удобнее, чем в алгоритме, да ещё и без осциллографа кустах, да ещё и ночью!
0
16.10.2011, 14:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2011, 14:34

Проблема с UART (ATmega88)
Добрый день! Уже долгое время пытаюсь разобраться с работой uart. Наваял программу, по которой мк...

Atmega88 + UART = проблема
Приветствую! Пытаюсь соединить два камня по USORT интерфейсу. Для тактирования в обоих камнях...

AVR GCC проблема с UART
решил вот лампочками помигать - ambilight сделать - и вот на грабли наткнулся -какая то неведомая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru