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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Появилась проблема с COM- ортом при работе с mega16+8МГц кварц.
TechMike
сообщение Jul 30 2008, 10:21
Сообщение #1


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

Группа: Свой
Сообщений: 130
Регистрация: 30-07-08
Из: Moscow
Пользователь №: 39 302



МК подключена через классическую схему на MAX232 к COM-порту и с определенного момента, не зависит от прошивки или внешний условий, МК перестает принимать команды по USART, хотя МК данные успешно безошибочно отправляет и в терминале это видно.
Закорачиваю перемычкой RX-TX на шнурке от COM-порта, но в терминали (Hyper Terminal, ZOC и т.д.) все равно не приходит посылаемый символ. Тоже самое делаю после MAX-232, результат тот же, от МК при этом RX-TX отключаю.
Пробовал обрабатывать данные от USART не по прерыванию, а просто в цикле, все равно не возвращает посылаемый с терминала символ.
Пробовал сделать шнурок от ПК как нуль-модем: закоротил ножки на COM-разъеме 1-4-6 и 7-8, остальное, как и было: 2-прием, 3- передача, 5-земля.
Осциллограф вешал на прием, там сигнал от МК есть, а на передачу нет (при наборе символов в терминале).
Пробовал подключить внешний модем, он на все команду откликается и работает без проблем, т.е. порт не горелый.

Настройки порта в windows:
скорость - 9600
биты данных - 8
четность - нет
стоп биты - 1
управление портом - нет

USART у МК сконфигурен также.
Пробовал поставить управление портом - Аппаратное, тоже не помогло.
Что посоветуете еще?

Текс программы WINAVR с прерыванием:
Код
void USART_Init(unsigned int baud )
{
#define UBRRVAL ((F_CPU/(baud*16UL))-1)
//Set baud rate
UBRRL=UBRRVAL;        //low byte
UBRRH=(UBRRVAL>>8);    //high byte
//Set data frame format: asynchronous mode,no parity, 1 stop bit, 8 bit size
UCSRC=(1<<URSEL)|(0<<UMSEL)|(0<<UPM1)|(0<<UPM0)|    (0<<USBS)|(0<<UCSZ2)|(1<<UCSZ1)|(1<<UCSZ0);
//Enable Transmitter and Receiver
UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
}

void USART_Send( unsigned int Txt )
{
  while (!(UCSRA&(1<<UDRE))){};
  UDR=Txt;        //send number to USART
}

SIGNAL (SIG_USART_RECV)
{
char status,data;
status=UCSRA;
data=UDR;
led2_test_on;
_delay_ms(250);
_delay_ms(250);
_delay_ms(250);
_delay_ms(250);
led2_test_off;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
   {
    rx_buffer[rx_wr_index]=data;
    rx_wr_index ++; // инкремент индекса
    if (rx_wr_index == RX_BUFFER_SIZE)
     {
      rx_wr_index=0;
     };
  
    ++rx_counter;
    if (rx_counter == RX_BUFFER_SIZE)
     {
      rx_counter=0;
      rx_buffer_overflow=1;
     };
  
   if (data==13){
   EnterPress=1;
   }
   USART_Send(data);
   };
}
int main(void)
  {
// настраиваем порты(ножки)

DDRB=0b11111110; //делаем выходами все порты PINB кроме 0.
PINB=0b00000001; //выводим на все выходы PORTB 0, кроме 0
PORTB=0b00000001; // и подягиваем на +питания.
//задержка для включения
//dial_nums(DialNumber);

sei(); //разрешаем прерывания глобально
//настраиваем UART
USART_Init(9600);
//настроили UART

while(1)
{ //начало бесконечного цикла
};// конец бесконечного цикла
}// конец main

Без прерывания:
Код
int main(void)
  {
// настраиваем порты(ножки)

DDRB=0b11111110; //делаем выходами все порты PINB кроме 0.
PINB=0b00000001; //выводим на все выходы PORTB 0, кроме 0
PORTB=0b00000001; // и подягиваем на +питания.
//задержка для включения
//dial_nums(DialNumber);

sei(); //разрешаем прерывания глобально
//настраиваем UART
USART_Init(9600);
//настроили UART
while(1)
{ //начало бесконечного цикла
/*for (;;) // Loop forever
   {
      while ((UCSRA & (1 << RXC)) == 0) {}; // Do nothing until data have been recieved and is ready to be read from UDR
      ReceivedByte = UDR; // Fetch the recieved byte value into the variable "ByteReceived"
led2_test_on;
_delay_ms(250);
_delay_ms(250);
_delay_ms(250);
_delay_ms(250);
led2_test_off;
      while ((UCSRA & (1 << UDRE)) == 0) {}; // Do nothing until UDR is ready for more data to be written to it
      UDR = ReceivedByte; // Echo back the received byte back to the computer
   }
};// конец бесконечного цикла
}// конец main
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 30 2008, 10:38
Сообщение #2


Гуру
******

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



Цитата(TechMike @ Jul 30 2008, 13:21) *
Закорачиваю перемычкой RX-TX на шнурке от COM-порта, но в терминали (Hyper Terminal, ZOC и т.д.) все равно не приходит посылаемый символ. Тоже самое делаю после MAX-232, результат тот же, от МК при этом RX-TX отключаю.
AVR тогда тут при чём? Смотрите документацию на терминал или внимательно проверьте шнурок...
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 30 2008, 10:41
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата
Закорачиваю перемычкой RX-TX на шнурке от COM-порта, но в терминали (Hyper Terminal, ZOC и т.д.) все равно не приходит посылаемый символ.

Сталкивался с таким буквально вчера. Подвисла предача со всех COM портов у меня их 4 (при этом прием работал со всех). WinXP SP2. Терминалы разные пускал - бестолку.
Помогла перезагрузка компа. Причину не установил.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Jul 30 2008, 10:44
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Hyper Terminal к тому же такое г...
просто удивительно, как можно испоганить такую простецкую програмку...


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 30 2008, 10:47
Сообщение #5


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(MrYuran @ Jul 30 2008, 13:44) *
Hyper Terminal к тому же такое г...
просто удивительно, как можно испоганить такую простецкую програмку...

Нормальный терминал. Лично меня в нем все устраивает, плюс это нативный терминал и есть практически всегда.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 30 2008, 10:50
Сообщение #6


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(TechMike @ Jul 30 2008, 16:21) *
Что посоветуете еще?

Меня смущает задержка в целую секунду после приёма байта (особенно в прерывании). За это время компьютер может передать ещё целую кучу символов.
Может от этого сериальный порт компа и виснет.

Цитата(defunct @ Jul 30 2008, 16:47) *
Нормальный терминал. Лично меня в нем все устраивает, плюс это нативный терминал и есть практически всегда.


+1. Есть недостатки, но не смертельныеsmile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 30 2008, 10:51
Сообщение #7


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(AHTOXA @ Jul 30 2008, 13:49) *
Может от этого сериальный порт компа и виснет.

Нет, компу все равно успеет удаленный девайс принять данные или не успеет.
Виснет скорее всего из-за конфликта драверов на компе.

Кстати COM порты родные или используется плата расширения?
Go to the top of the page
 
+Quote Post
TechMike
сообщение Jul 30 2008, 10:58
Сообщение #8


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

Группа: Свой
Сообщений: 130
Регистрация: 30-07-08
Из: Moscow
Пользователь №: 39 302



Цитата(defunct @ Jul 30 2008, 14:51) *
Нет, компу все равно успеет удаленный девайс принять данные или не успеет.
Виснет скорее всего из-за конфликта драверов на компе.

Кстати COM порты родные или используется плата расширения?



com-порт родной, один на мамке безо всяких плат расширения.
ПК перегружал бесчисленное кол-во раз(винда это любит).
Терминалки пробовал тоже разные, даже в t-mail!

Раз модем работает без проблем с com-портом, думаю что то я в шнурке не то сделал, хотя какоето время, все таки, связь с МК была и стабильная, все работало на ура.

Может распаять шнурок к МК как то иначе?
Сейчас
2-прием, 3- передача, 5-земля.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 30 2008, 11:10
Сообщение #9


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(defunct @ Jul 30 2008, 16:51) *
Нет, компу все равно успеет удаленный девайс принять данные или не успеет.


В принципе да, если без контроля конечно. Но я пару раз наблюдал подобный эффект. Именно с гипертерминалом, и именно когда подсоединённое устройство выдавало эхо. Может гипертерминал что-то хитрит там...


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
_shef_
сообщение Jul 30 2008, 11:26
Сообщение #10


Участник
*

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



У нас было, что слетали дрова на COM порт. Я чуть было не разочаровался в своем девайсе. Не общается и все. Хоть ты тресни. Оказалось что просто слетели дрова. Это было видно в диспетчере устройств.


--------------------
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 30 2008, 11:28
Сообщение #11


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(TechMike @ Jul 30 2008, 13:58) *
Сейчас
2-прием, 3- передача, 5-земля.

Все верно, по-другому никак.
Go to the top of the page
 
+Quote Post
TechMike
сообщение Jul 30 2008, 11:48
Сообщение #12


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

Группа: Свой
Сообщений: 130
Регистрация: 30-07-08
Из: Moscow
Пользователь №: 39 302



Цитата(_shef_ @ Jul 30 2008, 15:26) *
У нас было, что слетали дрова на COM порт. Я чуть было не разочаровался в своем девайсе. Не общается и все. Хоть ты тресни. Оказалось что просто слетели дрова. Это было видно в диспетчере устройств.


Нормально все в дровами, попробую переустановить и накрайняк с ноутбука попробую законектиться, может заработает.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 30 2008, 11:59
Сообщение #13


Гуру
******

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



Цитата(TechMike @ Jul 30 2008, 13:58) *
Раз модем работает без проблем с com-портом, думаю что то я в шнурке не то сделал, хотя какоето время, все таки, связь с МК была и стабильная, все работало на ура.

Может распаять шнурок к МК как то иначе?
Сейчас
2-прием, 3- передача, 5-земля.
Проверьте: не оторвался ли случайно земляной провод в шнурке. А, то при такой неисправности наблюдаются очень интересные эффекты...
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jul 30 2008, 13:12
Сообщение #14


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Настройки управления потоком (программные и аппаратные) в терминале убраны? Были грабли из-за настроек терминала.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
TechMike
сообщение Jul 30 2008, 13:56
Сообщение #15


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

Группа: Свой
Сообщений: 130
Регистрация: 30-07-08
Из: Moscow
Пользователь №: 39 302



Цитата(mdmitry @ Jul 30 2008, 17:12) *
Настройки управления потоком (программные и аппаратные) в терминале убраны? Были грабли из-за настроек терминала.


Пробовал и ставить Аппаратное управление и убирать его вообще, не помогало. Когда все работало, управление стояло - нет.
Сейчас с любым управление не работает.

Цитата(Палыч @ Jul 30 2008, 15:59) *
Проверьте: не оторвался ли случайно земляной провод в шнурке. А, то при такой неисправности наблюдаются очень интересные эффекты...


Уже прозвонил все что мог в шнурке и в обвязке МК, ничего не отвалилось. Сейчас смонтировано на макетке без паечной, сделал все соединения надежнее(контакты удлинил), все равно не работает.
Шевеление и дергание всей платы тоже не помогло.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:57
Рейтинг@Mail.ru


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