реклама на сайте
подробности

 
 
> USART на ATMega 16, На комп выдает непонятные символы
ILYCHOFF
сообщение Feb 3 2006, 13:32
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 78
Регистрация: 5-07-05
Из: Великий Новгород
Пользователь №: 6 536



Пытаюсь передать на комп информацию, а передаются какие-то непонятные символы. С железом вроде все нормально. Спаяно правильно. Прием передача рааботает. На компе использую прогу RS 232 Pro, но пробовал и другие тоже самое. Помогите пожалуйста разобраться в чем причина. Проц мега16, кварц 4 МГц.
Вот прога:

#include <mega16.h>

// Standard Input/Output functions
#include <stdio.h>
#include <delay.h>
// Declare your global variables here

void main(void)
{
PORTA=0xFF;
DDRA=0x00;

PORTB=0xFF;
DDRB=0x00;

PORTC=0x00;
DDRC=0xFF;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x19;

for (;;)
{
putsf("RT000");
delay_ms(500);
};
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex3742
сообщение Jun 30 2006, 05:48
Сообщение #2





Группа: Новичок
Сообщений: 5
Регистрация: 22-02-06
Пользователь №: 14 590



Я тоже пытался связаться по 232, правда МК у меня AT90S2313, микросхема МАХ 232. Использовал
Advanced Serial Port Monitor и RS232pro, и еще что-то(не помню). Если я правильно помню, то в ДШ
на конкретный МК есть таблицы ошибок скоростей передачи при стандартных частотах кварца.
Кварц у меня 3.579545Mhz, по ДШ и Applicatiom Builder-у это ошибка в 1.3%, однако у меня данные передавались и принимались без ошибок. Затем я поставил кварц (в ту же схему) на 4Mhz, и уменя
пошли всякие кракозябры... ХОТЯ по ДШ и Апп Билдеру ошибка составляет 0.2%...странно
Я сам новичок, но мне кажется что дело может быть в кварце. Я думаю что огромное значение
имеет производитель. (кварц с которым все работало стоил 15р, а скоторым нет-2р biggrin.gif )
Может быть поможет замена кварца? Удачи!
Go to the top of the page
 
+Quote Post
IEC
сообщение Jun 30 2006, 09:05
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Цитата(Alex3742 @ Jun 30 2006, 08:48) *
Я тоже пытался связаться по 232, правда МК у меня AT90S2313, микросхема МАХ 232. Использовал
Advanced Serial Port Monitor и RS232pro, и еще что-то(не помню). Если я правильно помню, то в ДШ
на конкретный МК есть таблицы ошибок скоростей передачи при стандартных частотах кварца.
Кварц у меня 3.579545Mhz, по ДШ и Applicatiom Builder-у это ошибка в 1.3%, однако у меня данные передавались и принимались без ошибок. Затем я поставил кварц (в ту же схему) на 4Mhz, и уменя
пошли всякие кракозябры... ХОТЯ по ДШ и Апп Билдеру ошибка составляет 0.2%...странно
Я сам новичок, но мне кажется что дело может быть в кварце. Я думаю что огромное значение
имеет производитель. (кварц с которым все работало стоил 15р, а скоторым нет-2р biggrin.gif )
Может быть поможет замена кварца? Удачи!

Может меня специалисты поправят, но RS протокол работает сносно и при 3% ошибки (где-то когда-то прочитал)! А от кварца требуется стабильность выдаваемой частоты. А для отладки обмена предлагаю следующий метод (сам периодически пользуюсь):
Приемник и передатчик постоянно передает по своей линии байт 0х55 (или 0хАА) и двухлучевым осциллографом сравниваются длительности и количество стартовых и стоповых бит. Все наглядно!
Go to the top of the page
 
+Quote Post
Alex3742
сообщение Jun 30 2006, 10:48
Сообщение #4





Группа: Новичок
Сообщений: 5
Регистрация: 22-02-06
Пользователь №: 14 590



Цитата(IEC @ Jun 30 2006, 15:05) *
Цитата(Alex3742 @ Jun 30 2006, 08:48) *

Я тоже пытался связаться по 232, правда МК у меня AT90S2313, микросхема МАХ 232. Использовал
Advanced Serial Port Monitor и RS232pro, и еще что-то(не помню). Если я правильно помню, то в ДШ
на конкретный МК есть таблицы ошибок скоростей передачи при стандартных частотах кварца.
Кварц у меня 3.579545Mhz, по ДШ и Applicatiom Builder-у это ошибка в 1.3%, однако у меня данные передавались и принимались без ошибок. Затем я поставил кварц (в ту же схему) на 4Mhz, и уменя
пошли всякие кракозябры... ХОТЯ по ДШ и Апп Билдеру ошибка составляет 0.2%...странно
Я сам новичок, но мне кажется что дело может быть в кварце. Я думаю что огромное значение
имеет производитель. (кварц с которым все работало стоил 15р, а скоторым нет-2р biggrin.gif )
Может быть поможет замена кварца? Удачи!

Может меня специалисты поправят, но RS протокол работает сносно и при 3% ошибки (где-то когда-то прочитал)! А от кварца требуется стабильность выдаваемой частоты. А для отладки обмена предлагаю следующий метод (сам периодически пользуюсь):
Приемник и передатчик постоянно передает по своей линии байт 0х55 (или 0хАА) и двухлучевым осциллографом сравниваются длительности и количество стартовых и стоповых бит. Все наглядно!



То есть все-таки стабильность частоты?
Go to the top of the page
 
+Quote Post
_Ie0nid
сообщение Sep 30 2008, 02:35
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 20-09-08
Пользователь №: 40 344



Добрый день. Кто может помочь?
Пользуюсь терминалом версии 1.9 Б. Пытаюсь организовать кольцо, чтобы сигнал с компьютера дошел до меги16, и обратно в терминал. Столкнулся с рядом трудностей. Первое когда пишешь программу типа
с = UDR
PORTA = 55
ОНа работает, светодиоды горят как надо.
КОгда пишешь что-то типа
С = UDR
UDR = C
ТЕрминал коннектиться и постоянно получает <0>, не остановить, ни чего сделать не реально.
И наконец когда приводишь что ни будь типа этого:
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h> // для доступа к функции сей
#include <avr/signal.h> // для доступа к макросу интерупт
#include <stdio.h>
#include <string.h>
int c;

INTERRUPT(SIG_UART0_RECV)
{
c = UDR;
PORTB = c;
}

int main (void) //начало программы
{
DDRB = 0xFF; // все выводы порта B - выходы
UBRRH = 0;
UBRRL = 71;
UCSRA = 0x00;
UCSRB |= (1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<TXEN);// прерывание на прием, прием
UCSRC |= (1<<URSEL); // асинхронный,
UCSRC |= (1<<UCSZ1)|(1<<UCSZ0);

sei();
c = 0;
while (1);
}
Терминал так же конектиться, и получает тот же символ <0>, но в момент отправки символа останавливается. Однако светодиоды, подключенные к порту, свое состояние не меняют.
И потом, АВРстудия, вообще отказывается толково реагировать на флаг "Прием завершен", перескакивает в самое начало программы и начинает заново - это ненормально потому как нарушается вообще принцип прерывания.
И что насчет инверсии, МАХ правда инвертирует сигнал, или нет?
Заранее спасибо.
Go to the top of the page
 
+Quote Post
smac
сообщение Sep 30 2008, 07:33
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 2-06-08
Из: Москва
Пользователь №: 38 003



Цитата(_Ie0nid @ Sep 30 2008, 06:35) *
Добрый день. Кто может помочь?
...

Может быть проблема в том, что у вас не описан обработчик прерывания по завершению передачи байта? Судя по настройкам у вас включены и приемник и передатчик, и разрешены прерывания от них. Насколько я помню у М16 отдельный адрес для прерывания по событию прием байта завершен и отдельный адрес для прерывания по событию передача байта завершена в векторе прерывания. Также есть адрес по событию пуст регистр УДР.

Если АВР студия некорректно симулирует прерывания, то скорее всего это ваша недоработка, вроде переход по вектору должен осуществляться правильно.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Sep 30 2008, 07:59
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(smac @ Sep 30 2008, 10:33) *
Может быть проблема в том, что у вас не описан обработчик прерывания по завершению передачи байта?
Именно - поэтому! Некоторые трансляторы заполняют неиспользуемые программой вектора командами перехода на адрес 0 - "мягий" рестарт. Другие - этого не делают, и программа попадает на "чужой" обработчик прерывания, или на какой-то "левый" участок кода...

Необходимо следить, чтобы всем разрешенным прерываниям был бы свой обработчик. В данном случае: разрешение прерывания по окончанию передачи небходимо убрать!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ILYCHOFF   USART на ATMega 16   Feb 3 2006, 13:32
- - kay   могу и ошибаться, но настроен ли дефолтный выход н...   Feb 3 2006, 14:25
- - ILYCHOFF   какой выход дефолтный???   Feb 3 2006, 14:35
- - ilya514   У меня та же самая проблема, только с Atmega8   Feb 3 2006, 14:40
- - ILYCHOFF   И как ее устранить я уже чего только не пробовал.....   Feb 3 2006, 14:44
- - Harvester   Возможные причины: 1. в терминалке на ПК установле...   Feb 3 2006, 15:01
- - defunct   по программной части вроде бы все верно. тут тольк...   Feb 3 2006, 18:15
- - ILYCHOFF   Пробовал отправлять константу, тот же самый резуль...   Feb 6 2006, 06:28
- - kay   макс232 инвертит инвертированную логику, чтобы её ...   Feb 6 2006, 06:36
- - ILYCHOFF   А что нужно делать в данном случае. я проверяю в п...   Feb 6 2006, 06:53
|- - BVU   Цитата(ILYCHOFF @ Feb 6 2006, 09:53) А чт...   Feb 6 2006, 07:16
- - ILYCHOFF   Я не могу понять что я делаю не так, объясните нег...   Feb 6 2006, 09:17
- - Sergio66   А что именно Вы видите на приемном конце? Есть ли ...   Feb 6 2006, 09:35
- - ILYCHOFF   Вот прога #include <mega16.h> // Standard ...   Feb 6 2006, 09:54
|- - ivan2006   2 ILYCHOFF Цитата(ILYCHOFF @ Feb 6 2006, 12...   Feb 6 2006, 13:15
|- - defunct   Цитата(ILYCHOFF @ Feb 6 2006, 11:54) UDR ...   Feb 6 2006, 22:56
- - BVU   Преобразователи типа: max232 ничего к передаваемой...   Feb 6 2006, 10:05
- - Sergio66   Так вроде бы никаких ошибок в настройках нет. А ка...   Feb 6 2006, 10:35
- - ILYCHOFF   у меня стоит кварц 4 МГц скорость 9600 ошибка сост...   Feb 6 2006, 13:41
|- - BVU   Цитата(ILYCHOFF @ Feb 6 2006, 16:41) у ме...   Feb 6 2006, 14:30
- - kay   попробуй открыть ком порт на разных скоростях, у т...   Feb 6 2006, 14:32
|- - BVU   Цитата(kay @ Feb 6 2006, 17:32) попробуй ...   Feb 6 2006, 14:52
|- - AVR   Где можно скачать программу RS 232 Pro? Существует...   Feb 6 2006, 22:09
- - ILYCHOFF   Разобрался. Всем большое спасибо, особенно defunct...   Feb 7 2006, 07:50
- - AVR   Посоветуйте, пожалуйста, недорогую микросхему в DI...   Mar 14 2006, 23:43
|- - defunct   Цитата(AVR @ Mar 15 2006, 01:43) С другой...   Mar 15 2006, 02:53
|- - AVR   Цитата(defunct @ Mar 15 2006, 05:53) Дума...   Mar 16 2006, 21:02
|- - defunct   Цитата(AVR @ Mar 16 2006, 23:02) в rs232p...   Mar 17 2006, 04:23
|- - AVR   Цитата(defunct @ Mar 17 2006, 07:23) Pull...   Mar 17 2006, 09:49
|- - defunct   Цитата(AVR @ Mar 17 2006, 11:49) У меня в...   Mar 17 2006, 10:42
- - alekseykoj   У тебя не согласована скорость между компьютером и...   Mar 17 2006, 08:46
- - Old1   2 AVR Если нет под рукой преобразователя уровней ...   Mar 17 2006, 21:13
|- - defunct   Цитата(Old1 @ Mar 17 2006, 23:13) то сове...   Mar 17 2006, 21:28
|- - Old1   Цитата(defunct @ Mar 18 2006, 01:28) Цита...   Mar 19 2006, 14:11
- - AVR   Глупый вопрос не по теме (прошу не судить строго н...   Mar 19 2006, 16:12
|- - Shurmas   Цитата(AVR @ Mar 19 2006, 20:12) Глупый в...   Jun 30 2006, 07:36
- - ILYCHOFF   В каталоге фирмы Промэлектроника www.promelec.ru   May 12 2006, 10:01
- - Shurmas   Цитата(ILYCHOFF @ Feb 3 2006, 17:32) Проц...   Jun 30 2006, 07:12
- - ps1x   У меня с преобразователем adm203 заработало только...   Jun 30 2006, 07:22


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th August 2025 - 18:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01436 секунд с 7
ELECTRONIX ©2004-2016