Страница 1 из 1

[atmega UART] Помеха при работе

Добавлено: Чт май 07, 2009 11:54:54
zi4rox
Всем добрый день,

Пытаюсь заставить корректно работать UART на меге для связи с компьютером, и вот что получается:

Исходные данные:


1. Схема по которой это все работает:
Изображение

* Вот здесь брал описание: http://easyelectronics.ru/svyaz-mikroko ... rs232.html

2. Прошивка для мк:
* Она сгенерирована CodeWizard'ом в CVAVR на такие параметры:

Код: Выделить всё

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;
Добавленная строчка в основном цикле:

Код: Выделить всё

UDR = 'R';
т.е - постоянно посылаем символ R

Вот что получаю на самом деле в терминале:

Код: Выделить всё

%%%%%%%%%%%

Т.е. - как видно символ 'R' он таки передаёт, но помимо него шлется ещё куча всякого мусора. [u]Откуда он берется и как главное с ним бороться?[/u]

[b][color=darkblue]Что уже попробывал:[/color][/b]

1. Протестил саму прошивку в VMLAB - все четко, без ошибок, работает как часы.

2. Без контроллера, просто замкнул выводы TxD и RxD, и подал питание на схему - в терминале все тоже работает - переданные байты тутже возвращаются эхом назад.

3. Пробывал менять кварц 8мгц/4мгц, игрался с разными значениями бодрейта - не помогает.

Комбинация фьюзов что на меге сейчас (под кварцы 3-8мгц): 
CKSEL0-3: 1111 SUT0-1: 11 CKOPT 1
(вообще, если это вдруг поможет - сейчас у меня все фьюзы выставлены в 1)

4. Монтаж проверял неоднократно - все в порядке

5. Пробывал также запускать UART использую бит паритета четный/нечетный - все равно мусор не уходит

Помогите пожалуйста побороть злостную помеху

Добавлено: Чт май 07, 2009 12:17:41
uk8amk
max232 имеет различные буквы в своем названии. Есть экземпляры которые работают с кондерами 1мкф, есть те что с 0.1мкф. Посмотрите в ДШ на какие кондеры рассчитана ваша ИМС. Хотя у меня работала и с 0.1мкф, но вдруг поможет.
Еше вопрос каким терминалом пользуетесь и смотрели ли настройки порта в нем?

Добавлено: Чт май 07, 2009 12:27:11
zi4rox
max232 ACSE

В ДШ - указано и 1мкф и 0,1 мкф (я думаю если бы 0,1 не подошли то проверку что номер 2 не прошла бы)

Терминалом пользуюсь:
1. Terminal v1.9b
2. COM Port Toolkit 3.9

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

Добавлено: Чт май 07, 2009 13:43:39
zi4rox
Я не знаю как это получилось, но решил руководствуясь замечанием поменять местами RxD TxD (от max232 до меги) - и что самое интересное оно заработало! (Хотя я был уверен что при неправильном подключении просто ничего не будет происходить)

Как всегда - все оказалось банально до немогу. Постейшая невнимательность. Всем ОГРОМНОЕ спасибо.
Буду разбираться ещё немного и писать код под свою задачу - если что обязательно спрошу. Ещё раз всем спасибо

Добавлено: Пн май 11, 2009 16:06:52
zi4rox
Обнаружилась следующая нехорошая вещь:

При таком соединении:
T2IN - TxD
R2OUT - RxD


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

Удалось установить, что:
Если я поменяю местами
T2IN - RxD
R2OUT - TxD


то перестает греться, но и уарт не работает как надо (куча мусора лезет - то что в начале было)

В каком направлении искать сие загадочную пакость?

Добавлено: Пн май 11, 2009 19:20:23
Aheir
И больше ничего не греется, кроме КРЕНок? Возможно внутреннее замыкание в MAXe из-за Ваших экспериментов.

Добавлено: Пн май 11, 2009 20:52:31
zi4rox
Да, греются только кренки и больше ничего. Попробую достать новый макс

Добавлено: Вт май 12, 2009 08:54:20
asteroid7
zi4rox писал(а):...
Удалось установить, что:
Если я поменяю местами
T2IN - RxD
R2OUT - TxD
...
Так как у вас сейчас соединено? На схеме первого поста - неправильно.
Свободные входы MAX подтяните к общему.
Не фиг использовать не UART-овский кварц. На приведённом вами ответе "в терминале" без программ видно, что не ловится стартовый бит.
После каждого отправленного байта поставьте задержку в 2 бита. Если не поможет - меняйте кварц.

Добавлено: Вт май 12, 2009 11:37:22
BCluster
бодрейт с 8Мгц кварцем без error rate 600 бод...
9600 - там эррор рэйт какой у вас?