Перейти к содержанию
    

Пришелец

Участник
  • Постов

    186
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Пришелец


  1. Да это само собой разумеется - пропускаться могут.

     

    насчёт перелопатить - согласен но на арме

     

    авр себя исчерпал

     

    посудите сами

     

    мега32(кварц 14.7456) -

    уарт на 115200

    два программных уарта 19200 и 9600

    вывод звука 16 кгц

    интерфейс с точ мемори (эл ключи)

    измерение частоты аналоговых сигналов (т.е. постоянно прерывания по окончанию измерения АЦП)

    ДТМФ декодер программный

    на SPI висят dataflash и fram (постоянный обмен и параллельно считывание звука)

     

    памяти давно не осталось - приходится ужиматься - код переписывать выбрасывать ненужное

    а данные засовывать в fram

     

     

    думаю давно пора менять процессор :crying:

    Ваше мнение?

  2. непонятно :biggrin:

     

    в том то и вопрос:

     

    значит может всё-таки

     

    долго и недолго относительные понятия

     

    например если по таймеру прерывания с периодом 64 мкс

     

    на их фоне разрешаются другие прерывания

     

    сейчас прерывания от этого таймера на время обработки его прерывания запрещаю - вот думаю можно ли не запрещать

    (если задерживаются некоторые прерывания таймера - некритично)

     

     

    из Вашего ответа понял, что обработчик таймера может вызваться повторно если его индивидуально не запретить при разрешении всех прерываний

  3. а может ли при разрешении вложенных прерываний из прерывания вызваться то же самое прерывание котрое в данный момент обрабатывается?

     

    Другими словами надо ли при разрешении разрешении прерываний запрещать обрабатываемое прерывание?

     

    в даташите написано, что флаг вызывающий прерывание сбрасывается аппаратно при выполнении прерывания т.е. в прерывании он видимо уже сброшен и может вновь установится вызвав то же прерывание.

  4. интересно: т.е. дтмф генерируется последней сотой перед передачей на телефон, при передаче ат командой. Логично. Спасибо за информацию.

     

    Насчёт поддержки нарушенного формата contact id - это понятно что может не работать (зависит от пульта и его алгоритма). Вопрос в том: что наверняка люди делали подобные вещи и сталкивались с такой же проблеммой. Может знают какие пульты примут это а какие нет. А может все примут :rolleyes:

  5. Реализовываем протокол Ademco Contact Id (передающую часть т.е. охранная панель)

    - протокол обмена сообщениями между охранной панелью и пультом. (в охранных системах)

     

     

    сделали всё по протоколу сначала - не очень работает

    для тестирования используем пульт фирмы Ритм Контакт GSM

     

    так вот пульт при этом не принимает дтмф (точнее принимает примерно 14 из 16 цифр - цифра это дтмф сигнал длительностью 50 мс)

    целиком посылка принимается очень редко.

     

    для передачи дтмф использовали свой "генератор" и вводили сигнал в модем сим300 через микрофонный вход.

     

    --------

     

    попробовал использовать АТ команду модема AT+VTS

    при этом пульт принимает сообщения успешно все цифры. Но при этом конечно же длительность передачи больше

    - модем почему-то не передаёт короткие ДТМФ сигналы (установка длительности не помогает хоть там и можно установить по формату команды 0,1 сек на самом деле длительность больше)

     

     

     

    Вопрос - может кто знает об особенностях передачи DTMF сигналов по GSM (может есть какое-то описанное ограничение по длительности сигнала???)

    Вопрос2 - как к такому нарушению формата (увеличению длительности посылки) отнесутся пульты разных производителей.

     

    понимаю что вопрос очень прикладной (но может кто сталкивался?)

     

     

    Заранее спасибо!

     

     

    спасибо модератору за перемещение поста в нужную тему :-)

  6. Добрый день!

     

     

    Может кто сталкивался:

     

    gps приёмник leadtek выдаёт координаты, анализируем данные RMC

     

    и иногда он сообщает о том, что находится в дифференциальном режиме - последний признак = D

     

    хотя никто его в этот режим не включал (режим сам включается и выключается непредсказуемо)

    вообще в сторону приёмника ничего не передаётся.

     

    при этом видимо, возникает неточность определения координат порядка 100 метров.

     

    PS (данная проблемма проявилась или усугубилась на приёмниках серийный номер которых стал состоять из 11 цифр раньше он был из 10ти)

  7. Да согласен у меня даже на 32МБ READ_BL_PARTIAL=0 :crying:

     

     

    Но вот про SD прочитал вот что!!!

     

    "

    READ_BL_PARTIAL— READ_BL_PARTIAL is always set to 1 in the SD Card. Partial Block Read is always

    allowed in the SD Card. It means that smaller blocks can be used as well. The minimum block size is one byte.

    "

    ProdManualSDCardv1.9.pdf

     

     

    Может ещё есть надежда? :08:

     

     

     

     

    :08: :08: :08: :08: :08: :08: :08: :08:

     

     

    Кажись работает!!!!!!!!!!!!!

    SD

     

    и говорят они дешевле MMC 1 ГБ около 100 р - ОБАЛДЕТЬ

     

     

    :08: :08: :08: :08: :08: :08: :08: :08:

  8. ХМ...

     

    А на каких картах не работало случайно размером не более 2Гб?

     

    "

    NOTE 1. Data address for media =<2GB is a 32bit byte address and data address for media > 2GB is a 32bit sector (512B)

    address.

    "

     

    Хотя о явной связи этого примечания и READ_BL_PARTIAL ничего не говорится.

  9. Спасибо!!!!!!!

     

    т.е. можно для карт меньше 2 Гб

     

     

    по времени конечно да немного накладно получится

     

    1. Установка длины блока (т.к. в других ф-циях длина нужна512)

    2. CMD17 чтение одного ну или двух байт

     

    в среднем если на команду допустить передачу 10ти SPI байт

     

    то опять с запасом передать для доступа к байту нужно 30 байт

    при spi clock = CLC/2 при 16 МГЦ общее время получится примерно 15 мкс

     

    при прерываниях порядка 64 мкс вполне приемлимо!!!

     

    Может можно обойтись и без установки длины блока просто останавливать приём байт по SPI ???

    - нужно будет почитать :)

     

     

    Ещё раз спасибо!

  10. Была такая мысль.

     

    Но это уже больно накладно.

     

    При выводе звука 16 кгц каждые 64 мс по spi читать 512 байт не получится

     

     

    интересно всё таки. при длине блока 1 байт как вычисляется адрес блока?

     

    приёдтся экспепримент наверное ставить :wacko:

  11. Ха в том то и вопрос.

     

    Пример:

    Вывод звука

    Вывод графики на дисплей

    Ну и работа с каким то файлом

     

    одновременно.

     

    т.е. требуется 512 *3 полтора килобайта.

     

    Это много для микроконтроллера.

     

    Работать с линейной памятью удобнее в моём случае.

     

    А скорость очень уж высокая и не требуется - готов пойти на потери скорости при побайтном считывании.

  12. Добрый день! :)

     

    Может кто в курсе?

     

    Можно ли читать MMC по одному байту с любого адреса.

     

    Можно установить длину блока - есть такая команда.

    Вопрос в том адрес блока в этом случае считается с учётом установленной длины или он всё равно всегда кратен 512 байт?

     

     

     

    А то уж больно геморно с ней работать буфферы по 512 байт отводить.

  13. Т.е. Вы ходите сказать, что приёмник UART слишком долго включается? Т.е. пока он включается успевают 2 байта проскочить? А кстати, и правда интересно. Через какое время после включения приёмник UART "приходит в полную боеготовность".. Что то в даташифтах по этому поводу вроде ничего нет.. Или я ошибаюс ?

    Да.. Только "остался за кадром" вопрос, а через какое время после включения приёмник UART начинает сэмплировать линию на предмет обнаружения фронта СТАРТ-бита? Ведь у автора похоже и проблема как раз в том, что слишком большое время проходит от включения приёмника UART до начала сэмплирования им линии

    Хотя нет.. Скорей всего слишком большое время проходит от момента окончания собственно передачи, до момента включения приёмника..

    Автор.. Обратите на это внимание.. Скорей всего проблемв в этом

     

     

    да проблема в задержке между последним стопбитом и включением приёмника я думаю

    а uart думаю включается сразу после установки соотв бита

  14. Решение есть техническое и организационное.

    1) Техническое обеспечивается постоянным приемом и флагом состояния.

    2) Организационное обеспечивается созданием документа под громким названием "Спецификация протокола обмена с пришлыми мирами " и приведением всех устройств в соответствии со спецификацией.

     

     

     

    Спасибо. За ответ.

     

    похоже проблема в небольшой задержки включения приёмника которая получается вследствии задержки обработки прервания конца передачи. Вследствие этого рассинхронизация приёмника

    1 - думаю поможет

    2 - не пойдёт :) это мы должны придерживаться спецификаций.

     

    и есть ещё

    3 - убрать эту задержку.

     

    А ещё может кто по памяти скажет приёмник начинает принимать байт

    по фронту старт бита или по уровню (если при включении приёмника уже идёт старт бит)

  15. Может кто сталкивался:

     

    По уарту отправляется посылка по прерываниям UDRE

    при завершении посылки прерывания UDRE запрещаются и разрешаются TXC прерывания

    При окончании передачи последнего байта запрещаются все прерывания передатчика и

    включается приёмник и его прерывания RXC. (во время работы передатчика он был выключен)

     

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

     

    Кто что думает по этому поводу? :wacko:

     

    и ещё сканирование компьютером показывает что ответ и запрос не накладываются т.е. правильны все байты запроса и ответа

×
×
  • Создать...