Например TDA7294

Форум РадиоКот • Просмотр темы - Связь МК с PC по RS232
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 27, 2025 00:28:23

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 40 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Связь МК с PC по RS232
СообщениеДобавлено: Вс фев 01, 2015 22:47:46 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Сб мар 26, 2011 14:17:14
Сообщений: 262
Откуда: Оренбург
Рейтинг сообщения: 0
Здравствуйте!
Написал простейшую программу (непрерывная передача символа) с помощью библиотечных функций, собрал схему на max232, соединил с PC - всё работает: в гипертерминале отображаются полученные символы. Теперь написал ту же самую программу, но не использовал библиотечные функции, а настраивал модуль USART по даташиту. Соединил с РС по той же схеме и ничего, в гипертерминале ничего нет, хотя программа rs232 регистрирует активность порта. В чем может быть дело? Спасибо.
PS: в протеусе работают обе программы.

Программа без библиотечных функций:
Код:
#include <16f877.h>
#use delay(clock=4000000)
#fuses HS,NOWDT

void init_ports()
//Настройка портов
{
   TRISA=0b00000000;
   PORTA=0b00000000;
   
   PORTB=0b00000001;
   TRISB=0b00000000;
   
   TRISC=0b00000000;
   PORTC=0b00000000;
   
   PORTD=0b00000000;
   TRISD=0b00000000;
}

void int_on()
//Настройка прерываний
{
   GIE=1;
   //Глобальное разрешение прерываний
   
   PEIE=1;
   //Разрешение прерываний от периферийных устройств
}

void init_USART()

   BRGH=0;
   //Низкоскоростной режим уарт
   
   SPBRG=51;
   //Скорость передачи 1200 бод
   
   SYNC=0;
   //Асинхронный режим передачи
   
   SPEN=1;
   //Включить усарт
   
   TXIE=1;
   //Прерывание разрешено от уарт
   
   TX9=0;
   //8 разрядная передача
   
   TXEN=1;
   //Разрешить передачу данных по уарт, регистр пуст
   
}

#int_tbe
//буфер передачи пуст
void transmit_usart()
{     
   TXREG='a';
}

void main (void)

   init_ports();
   //Настройка портов
   
   int_on();
   //Настройка прерываний
   
   init_USART();
   //Настройка уарт
   
   //При этом TXIF=1 - буфер передатчика пуст
   
   while (1)
   { 

   }
}

_________________
У радио нет будущего. Летательные аппараты тяжелее воздуха невозможны. Скоро выяснится, что рентгеновские лучи - мистификация.

Лорд Кельвин, физик, 1899 г.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Пн фев 02, 2015 07:00:38 
Грызет канифоль

Зарегистрирован: Вт окт 08, 2013 07:38:59
Сообщений: 256
Откуда: СПб
Рейтинг сообщения: 0
Hispanus писал(а):
непрерывная передача символа
Для начала, так делать нельзя.
Между байтами (или пакетами байт) необходимо вставлять защитный интервал длительностью не менее периода передачи одного байта, включая стартовый и стоповый биты.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Вт фев 03, 2015 05:33:16 
Потрогал лапой паяльник
Аватар пользователя

Карма: -2
Рейтинг сообщений: 20
Зарегистрирован: Сб мар 17, 2012 20:31:44
Сообщений: 306
Откуда: Нью Йорк
Рейтинг сообщения: 0
Это что за среда?
Вот это:
Код:
transmit_usart()
{
  TXREG= 'a';
}


Это обработчик прерывания?
Если да, то он отсюда никогда не выйдет.
В прерывании надо сбрасывать флаг вызвавшего прерывания вручную,
иначе будет крутится в бесконечном лупе.
Код:
transmit_usart()
{
 
  TXREG= 'a';
  TXIF = 0;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Вт фев 03, 2015 14:44:18 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Сб мар 26, 2011 14:17:14
Сообщений: 262
Откуда: Оренбург
Рейтинг сообщения: 0
A. Fig Lee, с битом TXIF как раз всё наоборот. Если он "0", то буфер передачи полон и его содержимое выгружается в сдвиговый регистр. После этого бит TXIF будет равен "1", что означает - буфер передачи пуст. К тому же этот бит сбрасывается и устанавливается аппаратно. Среда программирования - PIC C Compile. В протеусе эта программа работает, а значит МК всё таки выходит из прерывания. Smen, а разве МК не делает это сам, ведь USART аппаратный?

_________________
У радио нет будущего. Летательные аппараты тяжелее воздуха невозможны. Скоро выяснится, что рентгеновские лучи - мистификация.

Лорд Кельвин, физик, 1899 г.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Ср фев 04, 2015 00:41:14 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Сб мар 26, 2011 14:17:14
Сообщений: 262
Откуда: Оренбург
Рейтинг сообщения: 0
Сделал вот так - всё равно не заработало :( (отключил прерывания)

Код:
#include <16f877.h>
#use delay(clock=4000000)
#fuses HS,NOWDT

void init_ports()
//Настройка портов
{
   TRISA=0b00000000;
   PORTA=0b00000000;
   
   PORTB=0b00000001;
   TRISB=0b00000000;
   
   TRISC=0b00000000;
   PORTC=0b00000000;
   
   PORTD=0b00000000;
   TRISD=0b00000000;
}

void init_USART()


   BRGH=0;
   //Низкоскоростной режим уарт
   
   SPBRG=51;
   //Скорость передачи 1200 бод
   
   SYNC=0;
   //Асинхронный режим передачи
   
   SPEN=1;
   //Включить усарт
   
   TXIE=0;
   //Прерывание запрещено от уарт
   
   TX9=0;
   //8 разрядная передача
   
   TXEN=1;
   //Разрешить передачу данных по уарт, регистр пуст
   
   TXREG='f';
     
   while(TRMT==0)
   {
     
   }
}


void main (void)

   delay_ms(10);

   init_ports();
   //Настройка портов
     
   init_USART();
   //Настройка уарт
   
   
   while (1)
   {       
     
   }
}

_________________
У радио нет будущего. Летательные аппараты тяжелее воздуха невозможны. Скоро выяснится, что рентгеновские лучи - мистификация.

Лорд Кельвин, физик, 1899 г.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Ср фев 04, 2015 02:45:42 
Потрогал лапой паяльник
Аватар пользователя

Карма: -2
Рейтинг сообщений: 20
Зарегистрирован: Сб мар 17, 2012 20:31:44
Сообщений: 306
Откуда: Нью Йорк
Рейтинг сообщения: 0
Точно. про аппаратный сброс я и запамятовал


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Пт фев 06, 2015 06:43:26 
Грызет канифоль

Зарегистрирован: Вт окт 08, 2013 07:38:59
Сообщений: 256
Откуда: СПб
Рейтинг сообщения: 0
Hispanus писал(а):
а разве МК не делает это сам, ведь USART аппаратный
И что ж, что аппаратный?
Откуда ему знать, где у Вас пакеты начинаются/заканчиваются, и какую паузу делать?
Его "аппаратность" состоит в том, что он берёт байт из буфера, и помещает его в сдвиговый регистр, который выпихивает это всё в линию, вставляя стартовый и стоповый биты.
И, если Вы будете всё время что-то записывать в буфер, передача так и будет, без пауз.

P.S.: Что-то смотрю, у Вас все порты на выход настроены, а должны быть на вход.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Пт фев 06, 2015 19:47:08 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Сб мар 26, 2011 14:17:14
Сообщений: 262
Откуда: Оренбург
Рейтинг сообщения: 0
Smen, а какие должны быть настроены на вход? я только как передатчик мк использую (но пробовал и так: PORTC=0b10000000) Я кажется понял где может быть проблема-почему то не запускается обработчик прерываний:
Код:
#int_tbe (буфер передачи пуст)
void transmit()
{
   PORTB=0b00000000;
}

или

#int_default
void transmit()
{
   PORTB=0b0000000;
}

то есть порт В не обнуляется (первоначально он 0b00000001). Может я какой то бит забыл?

_________________
У радио нет будущего. Летательные аппараты тяжелее воздуха невозможны. Скоро выяснится, что рентгеновские лучи - мистификация.

Лорд Кельвин, физик, 1899 г.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Сб фев 07, 2015 08:13:07 
Грызет канифоль

Зарегистрирован: Вт окт 08, 2013 07:38:59
Сообщений: 256
Откуда: СПб
Рейтинг сообщения: 0
Hispanus писал(а):
а какие должны быть настроены на вход?
Порты передатчика и приёмника УАРТ.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Сб фев 07, 2015 11:58:11 
Опытный кот

Карма: 4
Рейтинг сообщений: 81
Зарегистрирован: Пн апр 11, 2011 10:08:52
Сообщений: 844
Рейтинг сообщения: 0
Вообще-то оба на выход. Даташиты когда начнем читать?
Setting the SPEN bit of the RCSTA register enables the EUSART and automatically configures the TX/CK I/O pin as an output. If the TX/CK pin is shared with an analog peripheral the analog I/O function must be disabled by clearing the corresponding ANSEL bit.

Вот дернул из рабочего проекта:
Код:
// передача
if( TXEN && TXIF ) { // Если разрешена передача и буфер передатчика пуст
   if( bufCount<=RS485_BUF_SIZE ) { TXREG = bufRS485[bufCount]; bufCount++; }
   else{
      TXEN = 0; // выключим передатчик
   }
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Сб фев 07, 2015 15:06:21 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Сб мар 26, 2011 14:17:14
Сообщений: 262
Откуда: Оренбург
Рейтинг сообщения: 0
-=Vovka=-, а Вы не могли бы также и код инициализации передатчика в асинхроном режиме дернуть? :)) Я подозреваю, что у меня там где то ошибка. Спасибо.

_________________
У радио нет будущего. Летательные аппараты тяжелее воздуха невозможны. Скоро выяснится, что рентгеновские лучи - мистификация.

Лорд Кельвин, физик, 1899 г.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Сб фев 07, 2015 17:11:25 
Грызет канифоль

Зарегистрирован: Вт окт 08, 2013 07:38:59
Сообщений: 256
Откуда: СПб
Рейтинг сообщения: 0
-=Vovka=- писал(а):
Вообще-то оба на выход. Даташиты когда начнем читать?
Всегда умиляет, когда ламеры, не умеющие читать даташиты, с пафосом бывалого знатока, отсылают их читать. :roll:

Цитата:
Bit SPEN (RCSTA<7>) and bits TRISC<7:6> have to be set in order to to configure pins RC6/TX/CK and RC7/RX/DT as the Universal Synchronous Asynchronous Receiver Transmitter.


п 10.0
стр. 95 для 877
стр. 111 для 877a
в самом верху большими буквами.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Сб фев 07, 2015 17:58:37 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Сб мар 26, 2011 14:17:14
Сообщений: 262
Откуда: Оренбург
Рейтинг сообщения: 0
Smen, я читал ДШ в этом месте, но подумал, что здесь что то не так. Зачем настраивать вывод TX передатчика на вход, если он будет только на выход использоваться? Или я что то не так понял?

_________________
У радио нет будущего. Летательные аппараты тяжелее воздуха невозможны. Скоро выяснится, что рентгеновские лучи - мистификация.

Лорд Кельвин, физик, 1899 г.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Сб фев 07, 2015 18:51:47 
Опытный кот

Карма: 4
Рейтинг сообщений: 81
Зарегистрирован: Пн апр 11, 2011 10:08:52
Сообщений: 844
Рейтинг сообщения: 0
Smen писал(а):
-=Vovka=- писал(а):
Вообще-то оба на выход. Даташиты когда начнем читать?
Всегда умиляет, когда ламеры, не умеющие читать даташиты, с пафосом бывалого знатока, отсылают их читать. :roll:

Еще раз глянул, да я неправ, на вход перестраиваются перед началом основного цикла.
По поводу ламера: если я ламер, то какой у тебя опыт в программировании?

ТС, вот тут посмотри: http://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en012073


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Сб фев 07, 2015 19:11:09 
Потрогал лапой паяльник
Аватар пользователя

Карма: -2
Рейтинг сообщений: 20
Зарегистрирован: Сб мар 17, 2012 20:31:44
Сообщений: 306
Откуда: Нью Йорк
Рейтинг сообщения: 0
Я бы ковырял так:
перед входом в main loop
посмотрел бы содержание регистров, которые относятся к портам, настройке частоты и RS232.
Toже самое сделал бы для нерабочей программы. И сравнил.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Вс фев 08, 2015 00:20:51 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Сб мар 26, 2011 14:17:14
Сообщений: 262
Откуда: Оренбург
Рейтинг сообщения: 0
Всем спасибо за ответы и советы! Всё дело было в порте D(наверное сжег его как-то неправильной полярностью подключения). Когда программа доходила до его инициализации, она останавливалась и дальше не шла. Поэтому-то флаг TXIF и не устанавливался. Убрал инициализацию порта D и все заработало. :))

_________________
У радио нет будущего. Летательные аппараты тяжелее воздуха невозможны. Скоро выяснится, что рентгеновские лучи - мистификация.

Лорд Кельвин, физик, 1899 г.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Вс фев 08, 2015 08:47:24 
Грызет канифоль

Зарегистрирован: Вт окт 08, 2013 07:38:59
Сообщений: 256
Откуда: СПб
Рейтинг сообщения: 0
Hispanus писал(а):
Зачем настраивать вывод TX передатчика на вход
Сам не знаю, зачем это так сделано, ведь согласно FIGURE 3-5 (для 877-го, или 4-6, для 877a, кстати, у Вас-то какой) сигналы Peripheral OE и выход защёлки TRIS складываются по "ИЛИ".
Наверное, в этом есть какой-то более глубокий смысл.

Hispanus писал(а):
Когда программа доходила до его инициализации
Что-то не вижу я в Вашей программе никакой инициализации порта D. :roll:
Выдёргиваете куски из контекста? Что там, у Вас, ещё инициализируется? :(



-=Vovka=- писал(а):
если я ламер, то какой у тебя опыт в программировании?
Только ламеры и чайники пишут для 877-го на Сях. :)
Да что там для 877. Тут встретил, для PIC12-го.
Но не в этом суть. Коли так режет слух, выкинь словосочетание про ламеров. Смысл фразы сильно изменился? :wink:
Речь-то о культуре общения.
Надеюсь, ты адекватен, и данный конфуз пойдёт тебе на пользу, и ты больше не будешь уподобляться отдельным личностям, вообразившими себя знатоками электроники, и вообще, "истинной в последней инстанции".
P.S.: А пиписьками мериться я ни с кем не намерен. Коли хочешь, можешь меня тоже ламером считать. :beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Вс фев 08, 2015 09:40:18 
Опытный кот

Карма: 4
Рейтинг сообщений: 81
Зарегистрирован: Пн апр 11, 2011 10:08:52
Сообщений: 844
Рейтинг сообщения: 0
Smen писал(а):
-=Vovka=- писал(а):
если я ламер, то какой у тебя опыт в программировании?
Только ламеры и чайники пишут для 877-го на Сях. :)
Да что там для 877. Тут встретил, для PIC12-го.

И что? Какая разница на чем будет написано? Главное чтобы конечный результат работал правильно и без сбоев!
Помнится в 90-х около недели писал драйвер на асм для 8086-го. А если бы на си то же самое делал, то за пару дней, с перекурами.
Лично я редко пользуюсь асмом, т.к. время дорого. А на си и быстрее напишешь и алгоритм легче отлаживать, т.к. нагляднее.
Может еще на перфокартах "писать" чтобы слыть крутым программером? :)))

Smen писал(а):
Но не в этом суть. Коли так режет слух, выкинь словосочетание про ламеров. Смысл фразы сильно изменился? :wink:
Речь-то о культуре общения.
Надеюсь, ты адекватен, и данный конфуз пойдёт тебе на пользу, и ты больше не будешь уподобляться отдельным личностям, вообразившими себя знатоками электроники, и вообще, "истинной в последней инстанции".
P.S.: А пиписьками мериться я ни с кем не намерен. Коли хочешь, можешь меня тоже ламером считать. :beer:

Я к тому, что и "На старуху бывает...", а сразу рубить "Ламер"- это уже слишком!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Вс фев 08, 2015 10:19:17 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Smen писал(а):
Только ламеры и чайники пишут для 877-го на Сях. :)
Да что там для 877. Тут встретил, для PIC12-го.


Весьма громкое заявление . :)))
Вот это писано в двух вариантах на сях и на асме https://www.youtube.com/watch?v=x4aycNs8J0Q
По быстродействию и по размеру кода практически одинаково.
Реализация BAM c чарлиплексингом на пЫк10F.
Попробуй реализуй ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Связь МК с PC по RS232
СообщениеДобавлено: Вс фев 08, 2015 11:42:01 
Грызет канифоль

Зарегистрирован: Вт окт 08, 2013 07:38:59
Сообщений: 256
Откуда: СПб
Рейтинг сообщения: 0
-=Vovka=- писал(а):
Может еще на перфокартах "писать" чтобы слыть крутым программером?
Бывало и такое.
С перфокартами, правда, не довелось, а вот ассемблерный код, по бинарнику восстанавливать доводилось.
Ну, и не надо путать автоматизацию рутинных процессов с творческими.

-=Vovka=- писал(а):
сразу рубить "Ламер"
Ну, вообще-то фраза была общей.
Никто конкретный в ней не указывался.


dosikus писал(а):
Попробуй реализуй
Сказал же, пиписьками не меряюсь.
Лучше вот объясни, зачем действительно порты надо на вход настраивать, если из схемы в ДШ получается, что их вообще настраивать необязательно?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 40 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y