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

ESN

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

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

  • Посещение

Сообщения, опубликованные ESN


  1. Вот, поисковик выдал:

    Скорость передачи в бодах - это число изменений состояния сигнала последовательной связи за одну секунду; состоянием сигнала может быть напряжение, частота или фаза.

    Если сигнал меняет состояние один раз для каждого бита данных, то один бит/с равен одному боду. Например, модем с быстродействием 300 бод меняет свое состояние 300 раз в секунду.

  2. Из современной тематики. Возьмем сигнал Caller_ID FSK из телефонии - импортный АОН. Его скорость передачи 1200 бод/c. и его формат  - 1 start bod, 8 data bods, 1 stop bod. Сравним его с сигналом UART - 1 start bit, 8 data bits, 1 stop bit  с такой же скоростью передачи  1200 бит/c. 1 бод информации по длительности равен 1 биту информации.  Как из cигнала UART мысленно получить сигнал Caller_ID FSK? Там, где в сигнале UART присутствует 1, заполняем фрагментом синуса частотой 1200Hz/1300Hz. Соответственно, отрезки 0 - уровня сигнала в UART - это фрагмент синуса частотой 2200Hz/2100Hz. Терминология Bit против Bod - сводится к форме сигнала заполнения...? 😳      

  3. Разобрался с "непоняткой" - неправильно отсылал 18 байт $ff, соответствущих Mark Signal ( то что в литературе встречается, как ETSI 180+/-25 mark) Там ведь не должно быть Space -бод (никаких старт-бит), только Маrk-боды: 1 бод Mark, 8 информационных бод - 1, 1 бод Mark. В общем, на выходе HT9032C получил: 28 байт $55, 1 байт $f5 и Саller ID message, которое формировал посредством микроконтроллера AVR.

  4. Тема старая, но ,на мой взгляд, не получившая логического завершения в части формирования сигнала caller FSK. Как частный случай, возьмем кварц частотой 3 686 400 Гц = 1200 (бит или бод -скорость передачи данных в формате FSK) *256 (ШИМ PWM 0-255) *12 (количество точек синуса при формировании бода Маrk или Space) и таблицу sin[] состоящую из 144 восьми разрядных значений. Для получения частот FSK используем ШИМ в который будут заноситься значения из таблицы sin с разными соответствующими частотам шагами: Шаг_Mark(1200)=12, Шаг_Mark(1300)=13, Шаг_Space(2100)=21, Шаг_Space(2200)=22. 12 последовательных значений с одинаковым шагом сформируют сигнал Mark или Space. Меняя значения кварца и длину таблицы sin[] можно сформировать эти сигналы более точно.

    Решил дописать это свое сообщение, вместо нового. Недавно раздобыл микросхему HT9032C - демодулятор V.23 (1300-2100 Герц) и Bell 202 (1200-2200 Герц), на которую подавал сигнал FSK по правилам изложенным выше. Правда, Atmega тактировалась кварцем 11 059 600 Герц и данные из табл. синуса по переполнению таймера выдавались в Port, cоединенный через ЦАП R/2R (10K) c HT9032C. Все замечательно работает, но осталась одна "непонятка". На демодулятор посылались следующие данные: заголовок(preamble) cостоящий из 30 байт $55 и 18 байт $ff и произвольные байты(сaller ID message). Каждый байт информации передавался так: 1 бод Space, 8 информационных бод соответствующих битам передаваемого байта,1 бод Mark, т.e. чтобы передать один байт информации нужно сформировать 10 бод. "Непонятка" заключается в том, что HT9032C выдает несколько искаженный заголовок: 28 байт $55, 1 байт $d5, 18 байт $ff. Если же эти данные заголовка разместить в информационном поле несколько раз, то никаких искажений при приеме в информационном поле не наблюдается, строго принимаются 30 байт $55 и 18 байт $ff. ??? В присоединенном файле хранятся таблицы синуса для ряда кварцев, частоты которых кратны числу 1200*256. Можно работать не по переполнению таймера микроконтроллера, а по совпадению, тогда номинал кварца можно понизить в несколько раз.

     

    sinus_caller_ID.txt

  5. Тема старая, но ,на мой взгляд, не получившая логического завершения в части формирования сигнала caller FSK. Как частный случай, возьмем кварц частотой 3 686 400 Гц = 1200 (бит или бод -скорость передачи данных в формате FSK) *256 (ШИМ PWM 0-255) *12 (количество точек синуса при формировании бода Маrk или Space) и таблицу sin[] состоящую из 144 восьми разрядных значений. Для получения частот FSK используем ШИМ в который будут заноситься значения из таблицы sin с разными соответствующими частотам шагами: Шаг_Mark(1200)=12, Шаг_Mark(1300)=13, Шаг_Space(2100)=21, Шаг_Space(2200)=22. 12 последовательных значений с одинаковым шагом сформируют сигнал Mark или Space. Меняя значения кварца и длину таблицы sin[] можно сформировать эти сигналы более точно. Поправьте меня, если я где-то ошибся в своих "умозаключениях" по формированию cаller FSK.

     

    ;------------------------------------------------------------------
    ;   1200(бод) * 12(точек синуса) * 256 (циклов ШИМ) = Кварц 3 686 400 Герц
    sinus_144:
    .db 128,133,139,144,150,155,160,166,171,176,181,186,191,196,201,205
    .db 209,214,218,222,225,229,232,235,238,241,243,245,247,249,251,252
    .db 253,254,255,255,255,255,255,254,253,252,251,249,247,245,243,241
    .db 238,235,232,229,225,222,218,214,209,205,201,196,191,186,181,176
    .db 171,166,160,155,150,144,139,133,128,122,116,111,105,100,95,89
    .db 84,79,74,69,64,59,54,50,46,41,37,33,30,26,23,20
    .db 17,14,12,10,8,6,4,3,2,1,0,0,0,0,0,1
    .db 2,3,4,6,8,10,12,14,17,20,23,26,30,33,37,41
    .db 46,50,54,59,64,69,74,79,84,89,95,100,105,111,116,122

  6. Может кому любителю пригодится :

    В погоне за сокращением потребления полез в регистр PRR (CPU) и установил "экономию" на USART и TWI - естественно "навернулся" обмен по последовательному протоколу, в том числе ISP.

    Если установить в PRR бит PRSPI в программе или через фьюзы в Studio, то чип не будет соединяться с отладочным устройством через ISP интерфейс. Оживить чип можно только через HVP, сбросив этот фьюз.

     

    • Bit 2 - PRSPI: Power reduction serial peripheral interface

    If using debugWIRE On-chip Debug System, this bit should not be written to one.

    Writing a logic one to this bit shuts down the Serial Peripheral Interface by stopping the clock to

    the module. When waking up the SPI again, the SPI should be re initialized to ensure proper

    operation.

     

  7. Руки бы поотрывал ...

    Мозги лучше иногда включить... После деления частоты кварца для экономии потребления камень начинает работать на 2457600/16=153600 Гц( если изначально ХТАL=2,457мГц) или 3579545/8=447443Гц (если ХТАL=3,579 мГц). После этого нужно сформировать одну из синусоид верхних частот: 1209Гц, 1336Гц,1477Гц или 1633Гц и сверху наложить с фазовой задержкой одну из синусоид нижних частот: 697Гц, 770Гц,852Гц,941Гц, чтобы получить сигнал DTMF. На эти операции уходит ровно 153600/1209=127, 153600/1336=115, 153600/1477=104, 153600/1633=94 машинных цикла при частоте 153600 Гц (в знаменателе генерируемая частота) или 447443/1209=370, 447443/1336=335, 447443/1477=303, 447443/1633=274 при частоте 447443Гц. Так формируется сигнал DTMF c помощью ЦАПа R/2R. При XTAL=2,457мГц DTMF-сигнал, содержащий частоту 1209 Гц, строится по 20 точкам, 1336Гц-18 точкам, 1447Гц-16 точкам, 1633Гц-14 точкам за период. И какие могут быть таймера при таком решении задачи, если команда возрата из прерываниея (таймерного в частности) reti съедает 4 машинных цикла + 2 цикла на сохранение и восстановление слова-состояния. Замечу, когда кнопка тастатуры нажата - сигнал формируется непрерывно! Все это ради экономии потребления тока. Частоты этих кварцов делятся на верхние частоты почти без остатка - нацело, поэтому погрешности при формировании сигналов DTMF таким способом - нет или 1 Гц.

    P.S. Лучше эту тему убрать или перенести.

  8. Вообще-то в ногомахании описанного Вам типа просто НЕЛЬЗЯ засыпать, иначе ногами махать будет НЕКОМУ.

     

    Вообще-то она потребляет его в РАБОЧЕМ режиме, то есть пока пересчитывает и загружает PWM. Между этими загрузкам спит. Средний ток уже МЕНЬШЕ.

     

    Это НЕ заслуга ногомахания, а заслуга появление дополнительного железа - внешнего DAC. Ушла необходимость поддерживать высокую тактовую ядра ради PWM.

     

    С цифрами что-то совсем не то. Было 0.45, после улучшения стало 0.68mA

     

    Задач? Задач - нет, поскольку я сам прошел долгий путь от ASM-ов до сегодняшнего понимания. На ASM только отдельных кусочков в десятки команд максимум. О чем собсвенно уже не раз писал.

    В первом случае, где упоминается I=0,45 mA речь шла о реализации программным путем 6-разрядного шима для DTMF набора на частоте вчетверо меньшей XTAL=3,579мГц. Конечно, что-то добавит периферия, возражений нет. Цифры 0,68mA и 0,8mA были получены на реальном образце в комбинации Atmega48+R/2R. Возможно, я сумбурно изложил предыдущее сообщение и это пояснение внесет ясность в его содержание.

  9. То есть была произведена замена режима проснулся, загрузил, спать... контроллера на на все время работает, но на 4 раза меньшей тактовой. Поскольку фаза сна все-же есть, то уменьшение потребления в 4 раза таки не будет.

    Нет смысла засыпать при ногомахании, т.к. CPU Atmega48 при 3V и XTAL=3579545/4 потребляет 0,45mA. В несколько иной парадигме ногомахания, имея Atmega48 и ЦАП R/2R шестиразрядный, удалось, деля частоту кварца, получить электрические характеристики аналогичные микросхемы KP1008ВЖ7 (номеронабиратель): ток потребления при непрерывном формировании сигнала DTMF при ХTAL=3,579/8 мГц I=0,8mA (при ХTAL=2,457/16 мГц I=0,68mA), импульсном наборе - I=0,05mA. Режим сна тоже использовался. Погрешности по частоте - нет. Надеюсь, что убедил Вас - имеется класс задач исключительно для ASMa. :rolleyes:

  10. Написание программы на ASMe не самоцель. Если частота процессора позволяет (потребление тока), то можно и поспать в перерывах между загрузками ШИМ-таймера, формируя DTMF-набор в частности. Иначе, бесконечный цикл из 64 фрагментов (6 разрядный ШИМ) каждый из которых отрабатывает 64 машинных цикла, в которых происходит смена 0 и 1, строго отслеживая по циклам их начало(0), конец(1),длительность импульса(0-1),плюс анализ критерий выхода из цикла. На Си написать такой цикл вряд ли получится: представляется,что будут проблемы с формированием начала импульса и собственно с формированием импульсов малой длительности. Т.е имея изначально XTAL=3,579 мГц, можно примерно тоже самое (погрешность 2 младших разряда) реализовать на частоте в 4 меньше.

  11. На самом деле это НЕ надо было делать на AVR, но уж больно знакомые заказчики поросили - типа у них есть специалисты по AVR - они потом сопровождать будут, да и заказ был "закрытый" и им проще для AVR замену протащить. После, кстати, никаким специалистам ничего "cопровождать" не пришлось.

    Это была "дембельская" работа. С тех пор все, AVR для меня вообще умер. Амен!

    Если это был номеронабиратель, то результат работы был неубедительным. Некоторые задачи можно решить только на АSMе. Например, вместо 8-разрядного аппаратного ШИМа, можно написать программу на ASMe, реализующую 6-разрядный ШИМ. Этим самым достигается уменьшение потребление тока в 4 раза.

  12. При F_PER =12 000 000 Гц и F_Baud=9600 bit/s чтобы минимизировать ошибки обмена следует положить регистр BSCALE=-3 , тогда BSEL станет равным $0269 - целым числом, что делает обмен стопроцентным. Вообще, следует сделать расчеты для всех значений BSCALE (от -7 до 7) и выбрать тот вариант, где BSEL имеет минимальную дробную часть. При записи в регистры управления вместо -3 следует писать $0d. Т.о получаем: USART_BAUDCTRLA=$69 и USART_BAUDCTRLB=$d2 - параметры задающие скорость.

  13. - Проблема в уровне шумов (конкретно нелинейные искажения/гармоники), что требует современный стандарт - где-то -33дБ. Дык вот - 16 кГц маловато для ШИМ. Мы делали 32кГц. Второе - простой RC фильтр не пройдет, нужно 3/4-й порядок.

    Добрый день. Вы делали контрольно-измерительную аппаратуру или обычный телефон? При ШИМе в 32кГц синусоида частотой 1633Гц будет строится по 20 точкам(выборкам), а сигналы более низкой частоты и того больше. Нет ли здесь избыточности? В справочнике "Интегральные микросхемы" издательство "Додека" приводятся картинки с сигналами частот DTMF, которые выдают номеронабиратели(UM91531,UM1260,UM1261): там (стр.57,64) количество выборок равно 10. Хочу повторить номеронабтратель КР1008ВЖ27 на Attiny2313, но чтобы "влезть" по энергопотреблению нужно частоту поделить на 4 и сделать ШИМ 6-разрядным. Тогда синус 1477Гц (1633Гц у этого номеронабирателя нет) "нарисуется ШИМом по 9,5 точкам. Вроде, должны получиться характеристики, как у серийных номеронабирателей...

  14. Спасибо. Глядя на Figure 10-1. The clock system,clock sourse, and clock distribution. в Manual Xmega интуитивно соглашаюсь с Вами. Как-то этот случай , запуск от внешнего генератора на частотах > 16 Мгц, неявно описан в руководстве. Уважаемый модератор, может стоит изменить в названии темы слово "таймера" на "генератора"?

  15. Александр_в, спасибо за звуковой файл. Только у меня данные несколько отличаются от приведенных Вами:

    $80,$1d,$01,$08,$30,$38,$30,$34,$31,$37,$33,$32,$02,$07,$37,$38,$32,$30,$33,$39,$39,$03,$05,$34,$35,$30,$38,$33,$08,$01,$4f,$de

     

    Дополнительный код (инверсия суммы +1) совпал с контрольной суммой. ($80+$1d+$01+$08+$30+$38+$30+$34+$31+$37+$33+$32+$02+$07+$37+$38+$32+$30+$33+$39+$39+$03+$05+$34+$35+$30+$38+$33+$08+$01

    +$4f)+1=$de

     

  16. Александр_в, спасибо за звуковой файл. Только у меня данные несколько отличаются от приведенных Вами:

    $80,$1d,$01,$08,$30,$38,$30,$34,$31,$37,$33,$32,$02,$07,$37,$38,$32,$30,$33,$39,$39,$03,$05,$34,$35,$30,$38,$33,$08,$01,$4f,$de

     

    Дополнительный код совпал с контрольной суммой($80+$1d+$01+$08+$30+$38+$30+$34+$31+$37+$33+$32+$02+$07+$37+$38+$32+$30+$33+$39+$39+$03+$05+$34+$35+$30+$38+$33+$08+$01

    +$4f)+1=$de

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