|
|
  |
падает скорость на rs232 |
|
|
|
Aug 23 2009, 09:27
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 14-07-09
Пользователь №: 51 224

|
здравствуйте! Такая проблема-использую АТ89S52 для чтения информации с мобильника (эрик т28).На коротких посылках всё нормально а свыше 13-15 байт-не успеваю вычитывать похоже.Допустим посылка из 30 байт-меня в ней интересует 25-й для проверки и я в него не попадаю.Если чуть опережаю события(на один вызов getch меньше)-удается попасть в нужный байт-но это ж не дело. В терминальной программе эрик выдает всё как надо.Уровни его на интерфейсе до 5 вольт подтянул. Может кто сталкивался с подобным-буду очень благодарен за совет
|
|
|
|
|
Aug 23 2009, 12:26
|

Местный
  
Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719

|
Была у одного знакомого такая-же проблема. Компьютер читал через СОМ порт промышленный контроллер Дельта Электроникс как часы, а вот МК посредством USART - ну никак ! И кварцев кучу перепробовали, и скорости меняли, короче "танцы с бубнами" были конкретные... А все потому, что USART у МК не имеет в отличие от компьютерной микросхемы ФАПЧ (фазовую автоподстройку частоты) ! Победили написав программный USART через прерывания... Аппаратный отправили "фтоппку"...
--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
|
|
|
|
|
Aug 23 2009, 15:12
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 14-07-09
Пользователь №: 51 224

|
Цитата(AHTOXA @ Aug 23 2009, 14:55)  Кварц какой? Может скорость не совсем точно совпадает? Ну и, если обработка символов занимает какое-то время, можно использовать буферизованный приём по прерываниям. Кварц 11.059 Настроил передатчик на стандартный 2-й режим 10 бит(старт,стоп и 8 бит дата).Скорость 9600 с соотв.перезагрузкой таймера.Никакой обработки символов нет-тупо вычитываю по готовности.проверяю на наличие определенного символа и всё.Там только и есть,что CJNE
|
|
|
|
|
Aug 23 2009, 15:46
|

Местный
  
Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719

|
Цитата(borischi @ Aug 23 2009, 19:12)  Кварц 11.059 Настроил передатчик на стандартный 2-й режим 10 бит(старт,стоп и 8 бит дата).Скорость 9600 с соотв.перезагрузкой таймера.Никакой обработки символов нет-тупо вычитываю по готовности.проверяю на наличие определенного символа и всё.Там только и есть,что CJNE А как организован RS232 в телефоне ? Есть схема ? Возможно у компьютера высокое входное сопротивление и соответственно в "терминалке" все работает гуд. А вот в МК может быть более низкоомная входная цепь, которая в процессе работы медленно подсаживает RS232 схему телефона и она начинает пороть чушь... Это мои догадки...  С телефона идет "чиcтый RS-232" ? Уровни +10, -10 ?
Сообщение отредактировал manul78 - Aug 23 2009, 15:52
--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
|
|
|
|
|
Aug 23 2009, 15:58
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 14-07-09
Пользователь №: 51 224

|
Цитата(manul78 @ Aug 23 2009, 18:46)  А как организован RS232 в телефоне ? Есть схема ? Возможно у компьютера высокое входное сопротивление и соответственно в "терминалке" все работает гуд. А вот в МК может быть более низкоомная входная цепь, которая в процессе работы медленно подсаживает RS232 схему телефона и она начинает пороть чушь... Это мои догадки...  Ну поставил я последовательно резисторы на Rx и Tx.По 100 ом.А как организовано входное сопротивление каналов rs232 контроллера-честно говоря не знаю.Пробовал вписывать 1 в Rx контроллера конечно-не помогло  Цитата(manul78 @ Aug 23 2009, 18:46)  С телефона идет "чиcтый RS-232" ? Уровни +10, -10 ? Нет конечно TTL 0 +- 2.5 V
|
|
|
|
|
Aug 23 2009, 16:35
|

Местный
  
Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719

|
Цитата(borischi @ Aug 23 2009, 19:58)  Нет конечно TTL 0 +- 2.5 V Осциллограф цифровой возможно пролил-бы свет на данную проблему... Попробуйте буферную микросхему чтобы привести уровни в приемлемый вид... Последняя догадка, возможно телефон передает не поток, а пакеты (15 байт данных + 16-тый CRC) ?
--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
|
|
|
|
|
Aug 23 2009, 16:58
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 14-07-09
Пользователь №: 51 224

|
Цитата(manul78 @ Aug 23 2009, 19:35)  Осциллограф цифровой возможно пролил-бы свет на данную проблему... Попробуйте буферную микросхему чтобы привести уровни в приемлемый вид... Последняя догадка, возможно телефон передает не поток, а пакеты (15 байт данных + 16-тый CRC) ? Осциллографа пока нету,-но жду его с нетерпением Bus tranceiver ставил-не помогло. А вот насчет пакета поподробнее если можно
|
|
|
|
|
Aug 23 2009, 17:24
|

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

|
Цитата(borischi @ Aug 23 2009, 21:12)  Кварц 11.059 Это гуд. Цитата(borischi @ Aug 23 2009, 21:12)  Настроил передатчик на стандартный 2-й режим 10 бит(старт,стоп и 8 бит дата).Скорость 9600 с соотв.перезагрузкой таймера.Никакой обработки символов нет-тупо вычитываю по готовности.проверяю на наличие определенного символа и всё.Там только и есть,что CJNE Какого таймера? Какое значение перезагружается? Может, приведёте кусочки кода с инициализацией и обработкой? Цитата Нет конечно TTL 0 +- 2.5 V При пятивольтовом контроллере? Я б поставил хоть транзистор для порядка
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 23 2009, 17:43
|

Местный
  
Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719

|
Цитата(borischi @ Aug 23 2009, 20:58)  А вот насчет пакета поподробнее если можно  Вы конечно знаете, что устройства осуществляющие обмен между собой по RS-232 используют протоколы обмена. Протоколов этих масса. Возможно Ваш телефон использует какой-то свой. Как пример, надо например передать 100 байт. Устройства "договариваются" между собой и процесс пошел: Формат пакета: первый байт - количество передаваемых байт данных. следующие байты - собственно данные. последний байт - контрольная сумма. (CRC) Передаем 100 байт пакетами по 15 : Первый пакет: 15, х,х....х,х, CRC - Получив его приемник быстро обрабатывает результат и отвечает передатчику что все гут либо просит повторить первый пакет... Второй пакет: 15,х,х.....х,х, CRC ................................................................................ ..................... ................................................................................ ................................................................................ . Седьмой пакет: 10,х,х.....х,х,CRC - Последний пакет. Используя всевозможные протоколы, устройства "разговаривают" между собой. Динамически меняют скорости обмена при плохом качестве передачи и т.д. Все это делается для точной и быстрой передачи данных. Все это я описал в общих чертах. Кстати, я больше чем уверен, что Ваш телефон использу- ет какой-либо протокол обмена, т.к. просто "сливать" данные как из одного ведра в другое, не контро- лируя результат - это маловероятно...
--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
|
|
|
|
|
Aug 23 2009, 18:02
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 14-07-09
Пользователь №: 51 224

|
Цитата(AHTOXA @ Aug 23 2009, 20:24)  При пятивольтовом контроллере? Я б поставил хоть транзистор для порядка  Уровни на приеме от эрика я подтянул к 5 вольтам-поставил 2 инвертора на транзисторах.
Причина редактирования: Урезание цитаты.
|
|
|
|
|
Aug 23 2009, 18:15
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(manul78 @ Aug 23 2009, 17:51)  Обоснуйте ? В каком месте ? Если совсем откровенно - во всех. Для начала: "компьютерная микросхема" - 16550 и ее более продвинутые версии. Найдите в ее даташите хотя бы упоминание о ФАПЧ. Цитата(manul78 @ Aug 23 2009, 20:43)  Вы конечно знаете, что устройства осуществляющие обмен между собой по RS-232 используют протоколы обмена. Протоколов этих масса. Возможно Ваш телефон использует какой-то свой. Телефоны используют протокол, унаследованный от модемов Hayes. Обычный текст, текстовые же команды, начинающиеся с AT. Отсюда название - AT-команды. Никаких CRC. borischi: лучше покажите код. Телепатией заниматься просто лень. Последняя попытка телепатии: У вас в системе используются прерывания? Если да, то нет ли где-то в прерываниях больших участков кода, время исполнения которых больше времени приема символа? Цитата(borischi @ Aug 23 2009, 21:02)  Уровни на приеме от эрика я подтянул к 5 вольтам-поставил 2 инвертора на транзисторах. А инверторы там как раз и не нужны. Если у вас нет ничего, кроме инверторов - поставьте их два последовательно. И инверторы лучше взять интегральные. Что-то вроде 74HCT14.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|