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

 
 
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
Nanobyte
сообщение Jul 30 2008, 14:48
Сообщение #16


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



У меня были похожие грабли, когда полусдохла микросхема формирователя RS232 на матплате ПК. Причём модем работал нормально, а вот AVR910 отказывался. Перепаял формирователь со старой 486-й матплаты, всё заработало.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
TechMike
сообщение Jul 30 2008, 16:13
Сообщение #17


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

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



Цитата(Nanobyte @ Jul 30 2008, 18:48) *
У меня были похожие грабли, когда полусдохла микросхема формирователя RS232 на матплате ПК. Причём модем работал нормально, а вот AVR910 отказывался. Перепаял формирователь со старой 486-й матплаты, всё заработало.


Как определить что сдох формирователь и какой это чип?
мамка еще на гарантии, есть возможность отремонтировать.
Go to the top of the page
 
+Quote Post
fmdost
сообщение Jul 30 2008, 17:02
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Цитата(TechMike @ Jul 30 2008, 20:13) *
Как определить что сдох формирователь...

Перемкнуть ножки 2-3 на конце воткнутого шнура. Передать любой короткий текстовый файл через гипертерминал(передача-передать текстовый файл), предарительно сняв галочку аппаратного управлния потоком. Если в окошке терминала ничего не написалоь(ответ) заменить шнурок. Если и потом не работает, или винда или порт сгорел фсётаки. Ищите причину порчи формирователя.
В названии микросхемы формирователя должны быть цифры 232. Микросхему порта без надлежащего опыта заенить проблемно, слишком большая теплопроодность платы, и мелкий шаг.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 30 2008, 17:18
Сообщение #19


кекс
******

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



Цитата(TechMike @ Jul 30 2008, 19:13) *
Как определить что сдох формирователь и какой это чип?

Померяйте уровень TX (вывод 3). должен быть в пределах (-7..-15V) если ничего не слать.

Цитата
должны быть цифры 232

не обязательно, например есть max202.
проще посмотреть куда идут дорожки от разъема, но лучше самому не менять ничего если на гарантии.
Go to the top of the page
 
+Quote Post
SysRq
сообщение Jul 31 2008, 04:05
Сообщение #20


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Скачайте PortMon (фриварный), и захватите в лог попытку обмена через порт. Наверняка порт висит в break. Нужна софтина, полностью заполняющая структуру DCB и использующая ее при открытии порта, и чтобы потом она не возвращала порт в исходное состояние.
Как и писали выше, должен помочь снос драйверов порта (с перезагрузкой обязательно после удаления). Либо ищите удачный терминал...
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Jul 31 2008, 05:26
Сообщение #21


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



http://www.serial-port-monitor.com/ это чтобы подсматривать
http://braypp.googlepages.com/terminal это чтобы передавать/принимать

IMNHO, встроенный гипертерминал на мусорник. Но если по функциональности, а не сплошному глюкодрому, он нравится больше брей-терминала, то настоящий производитель - http://www.hilgraeve.com/hyperterminal.html, а не мелкософт - раздавал последнюю бесплатную версию HyperTerminal Private Edition 6.3 (глюков не замечено) фтп://ftp.hilgraeve.com/htpe/htpe63.exe


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
mandrew
сообщение Jul 31 2008, 06:16
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 28-09-05
Пользователь №: 9 021



Цитата(TechMike @ Jul 30 2008, 17:56) *
Уже прозвонил все что мог в шнурке и в обвязке МК, ничего не отвалилось. Сейчас смонтировано на макетке без паечной, сделал все соединения надежнее(контакты удлинил), все равно не работает.
Шевеление и дергание всей платы тоже не помогло.


Пробовали подключаться к другому компу, может на вашем вышел из строя преобразователь уровней на прием или т.п.
Go to the top of the page
 
+Quote Post
TechMike
сообщение Jul 31 2008, 16:48
Сообщение #23


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

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



Цитата(defunct @ Jul 30 2008, 21:18) *
Померяйте уровень TX (вывод 3). должен быть в пределах (-7..-15V) если ничего не слать.
не обязательно, например есть max202.
проще посмотреть куда идут дорожки от разъема, но лучше самому не менять ничего если на гарантии.


На TX шнурка 11.25В
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 31 2008, 17:34
Сообщение #24


кекс
******

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



Цитата(TechMike @ Jul 31 2008, 19:48) *
На TX шнурка 11.25В

+11.25 или -11.25? (если +11 то - вот она проблема).
Go to the top of the page
 
+Quote Post
TechMike
сообщение Jul 31 2008, 18:47
Сообщение #25


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

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



Цитата(defunct @ Jul 31 2008, 21:34) *
+11.25 или -11.25? (если +11 то - вот она проблема).


-11.25 относительно земли на том же кабеле.

ПРИЧИНА НАЙДЕНА, точнее временное решение: После удаление драйвера COM-порта и перезагрузке, где-то минту 7 все работает, потом опять не посылает ничего в порт, и т.д. приходится перезагружаться постоянно.
Go to the top of the page
 
+Quote Post

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

 


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


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