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

back1981

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

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

  • Посещение

Репутация

0 Обычный

Информация о back1981

  • Звание
    Частый гость
    Частый гость
  1. Суть вопроса - это преобразовать пакет байтов FF FF FF FF (пример) в пакет вида HDLC протокола, далее с полученными данными произвести шифрование NRZI и какими нибудь аппаратными средствами вывести сигнал посредством Bell202. Начальный пакет до Bell202 можно собрать и ручками это не есть проблема, но как полученные данные, скажем, вида 11111111101111100101111111110011101101111111111111111110011110101111001001110000 11111111111001110000000110101011111101110111110100111110 вывести на устройство(контроллер,принимающий данные по bell202 1-1300Гц,0-2100Гц 1200бит/сек). Существует ли возможность передачи этих данных через обычный аналоговый модем или звуковую карту?
  2. До конца не разобрал код. Меня смутило то что в счетчике учитывается изменение сигнала т.е. счетчик покажет 10 уже после 5 импульсов, вот это и смутило. Теперь после Ваших недоумений, еще раз пересмотрел код и понял что вот это OUTi= ~OUTi; будет менять выход на 10 импульсе в обратное состояние. Разница в моем и вашем коде в том, что у Вас он сделан рациональнее, а я не усмотрел алгоритма. Вот и все. void main(void) { // Инициализация xi= INi; ci=0; OUTi= 0; //................... for(;;) { // Делитель на 10 if(xi != INi) { xi= INi; if((++ci) == 10) { ci= 0; OUTi= ~OUTi; } } //................ } }
  3. Я наверное изначально неправильно вопрос поставил, считать надо не количество изменений на входе а именно количество импульсов, т.е. физического как он есть и соответственно событие либо по переднему либо по заднему фронту. Если выбрать по переднему фронту то код надо менять так. Далее импульс на выходе будем формировать скажем после прихода 6, а скидывать с 10 т.е. ширина импульса на выходе будет всегда в диапазоне времени от 1-го до 10-го импульса вне зависимости от частоты и если вдруг питание пропадет то округление будет типа математичского (практически если брать 5 а не 6). Если неправ поправьте. void main(void) { // Инициализация x1= IN1; c1=0; OUT1= 0; x2= IN2; c2=0; OUT2= 0; x3= IN3; c3=0; OUT3= 0; x4= IN4; c4=0; OUT4= 0; //................... // Делитель на 10 if(x1 != IN1)&(IN1==1) { x1= IN1; ++c1; if(c1 == 6) { OUT1=1; } if(c1 == 10) { c1= 0; OUT1=0; } } if(x2 != IN2)&(IN2==1) { x2= IN2; ++c2; if(c2 == 6) { OUT2=1; } if(c2 == 10) { c2= 0; OUT2=0; } } if(x3 != IN3)&(IN3==1) { x3= IN3; ++c3; if(c3 == 6) { OUT3=1; } if(c3 == 10) { c3= 0; OUT3=0; } } if(x4 != IN4)&(IN4==1) { x4= IN4; ++c4; if(c4 == 6) { OUT4=1; } if(c4 == 10) { c4= 0; OUT4=0; } } //................ }
  4. Нужен простой декадный делитель на 4 канала, входная частота максимум 5 Гц, так как на выходе нужен импульс пошире, чем ширина входного импульса, то формировать его надо с приходом 10-го импульса и держать скажем 1 сек. Это маленько выбивается из понятий обычных счетчиков, но таковы условия задачи.
  5. Это для того, чтобы прибор перед которым, будет ставиться делитель, смог стопроцентно захватить импульс.
  6. Например на первый счетный пришло 10 импульсов, следовательно на выходе формируем единицу с задержкой Nмсек. В следующий момент скажем через Kмсек на второй счетный пришел 10-ый импульс, формируем единицу на нем, но время выходного импульса на обоих выходах должны быть одинаковы, а события происходят в разное время т.е. не получится сделать set gpio5=1; delay (1000); Или применить простые счетчики и считать в процессе иттерации какой выход сколько был в состоянии 1 т.е. output1++; if output>1000 set gptio5=0; Далее опытным путем или дизассемблировав посчитать потактово время выполнения иттерации, ну это я так по ламмерски рассуждаю.
  7. Спасибо. Еще один небольшой вопрос. Как сделать по простому задержку на выходе на определенное количество сек,мсек, ведь выходов будет четыре, следовательно во времени эти задержки будут смещены?
  8. Понятно, что на асме быстрее будет в плане выполнения программы, но мне хотелось бы while do, тем более скорость не критична т.к. речь идет о герцах. Для ламера сомое то :)
  9. Спасибо. Скачал AVR32Studio и AVRStudio 4.13, на чем лучше начать и если можно скиньте пожалуйста исходник пустышку, куда я смогу вставить свои while(1) { if gpio1=1 {i1++} if gpio2=1 {i2++} if gpio3=1 {i3++} if gpio4=1 {i4++} if i1=10 {gpio5=1 } ........... }
  10. На каком самом простом AVR можно организовать, так чтобы с внутреним генератором т.е. минимум железа, простой делитель, на входе 5в на выходе 5в
  11. Понимаю, что старо, как мир. Может есть готовые примеры на базе суперпростого TINY? Погуглил ничего не нашел, знаю плохо искал, но уже забадался :). Посоветуйте дайте ссылку. Спасибо.
  12. Кстати про защиту входа, можно ли обойтись предохраниетелем и защитным диодом супрессором например P4KE36.
  13. Самый доступный я думаю MC34063A (нашел даже онлайн калькулятор http://www.nomad.ee/micros/mc34063a/index.shtml) -вопрос в моем случае греться будет или нет? Если использовать готовые DC/DC как у них с этим?
×
×
  • Создать...