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

 
 
> Появилась проблема с 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
 
Start new topic
Ответов
Nanobyte
сообщение Jul 30 2008, 14:48
Сообщение #2


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

Группа: Свой
Сообщений: 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
Сообщение #3


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

Группа: Свой
Сообщений: 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
defunct
сообщение Jul 30 2008, 17:18
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 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
TechMike
сообщение Jul 31 2008, 16:48
Сообщение #5


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

Группа: Свой
Сообщений: 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

Сообщений в этой теме
- TechMike   Появилась проблема с COM- ортом при работе с mega16+8МГц кварц.   Jul 30 2008, 10:21
- - Палыч   Цитата(TechMike @ Jul 30 2008, 13:21) Зак...   Jul 30 2008, 10:38
- - defunct   ЦитатаЗакорачиваю перемычкой RX-TX на шнурке от CO...   Jul 30 2008, 10:41
- - MrYuran   Hyper Terminal к тому же такое г... просто удивите...   Jul 30 2008, 10:44
|- - defunct   Цитата(MrYuran @ Jul 30 2008, 13:44) Hype...   Jul 30 2008, 10:47
- - AHTOXA   Цитата(TechMike @ Jul 30 2008, 16:21) Что...   Jul 30 2008, 10:50
|- - defunct   Цитата(AHTOXA @ Jul 30 2008, 13:49) Может...   Jul 30 2008, 10:51
|- - TechMike   Цитата(defunct @ Jul 30 2008, 14:51) Нет,...   Jul 30 2008, 10:58
||- - defunct   Цитата(TechMike @ Jul 30 2008, 13:58) Сей...   Jul 30 2008, 11:28
||- - Палыч   Цитата(TechMike @ Jul 30 2008, 13:58) Раз...   Jul 30 2008, 11:59
|- - AHTOXA   Цитата(defunct @ Jul 30 2008, 16:51) Нет,...   Jul 30 2008, 11:10
- - _shef_   У нас было, что слетали дрова на COM порт. Я чуть ...   Jul 30 2008, 11:26
|- - TechMike   Цитата(_shef_ @ Jul 30 2008, 15:26) У нас...   Jul 30 2008, 11:48
- - mdmitry   Настройки управления потоком (программные и аппар...   Jul 30 2008, 13:12
|- - TechMike   Цитата(mdmitry @ Jul 30 2008, 17:12) Наст...   Jul 30 2008, 13:56
|- - mandrew   Цитата(TechMike @ Jul 30 2008, 17:56) Уже...   Jul 31 2008, 06:16
|- - Т.Достоевский   Цитата(TechMike @ Jul 30 2008, 20:13) Как...   Jul 30 2008, 17:02
|- - defunct   Цитата(TechMike @ Jul 31 2008, 19:48) На ...   Jul 31 2008, 17:34
|- - TechMike   Цитата(defunct @ Jul 31 2008, 21:34) +11....   Jul 31 2008, 18:47
- - SysRq   Скачайте PortMon (фриварный), и захватите в лог по...   Jul 31 2008, 04:05
- - sensor_ua   http://www.serial-port-monitor.com/ это чтобы подс...   Jul 31 2008, 05:26


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

 


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


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