Генератор на регистрах, можно ли и на 11 ноге (кроме 9 и 10) получить еще сигнал

Смотрите, тут ничего сверх мудрёного. Результатирующая частота от таймера1 и таймера2 должна быть не обязательно целочисленной, но одинаковой.
FCPU / ICR1 / 2 == FCPU / CLK_div / (OCR2A+1)
Сейчас это в виде таких цифр
16000000 / 3200 / 2 == 16000000 / 32 /(199+1)
и соответссно подставляя другие подбирайте, что б обе части выражения были равны. Я не гений математики, и заранее не могу сказать на каких цифрах всё будет сходится.
На УНО сам я такое бы стессно не стал делать. На stm32 это несравнимо удобнее и проще. Но там всё по другому, и опыт набранный вами на avr вам не особо-то пригодится , придётся начинать с ноля:)

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

Тут и подбирать то особо не надо.
16000000 / 3200 / 2 == 16000000 / 32 /(199+1)
3200 * 2 == 32 * (199+1)
3200 = 16*(199+1)
ICR1 = 16( OCR2A + 1)
(Для прескаллера Таймера2 = 32 )

Но вы это и так знали, а ТС скорее всего это не сильно поможет.
P/S Спасибо вам за пример синхроипульсов.

@dimax
Действительно спасибо.

Не знал про регистр GTCCR

Если использовать прерывания:

  .org  OC1Baddr
  SBIS  PINB,PB2
  RETI
  SBI PINB,PB0
  SBI PINB,PB0
  RETI

5кГц (1600-710-790)


задержка между фронтами - 8 тактов процессора,
сам импульс - 2 такта процессора

Спасибо вам!!! Информация к размышлению получена, буду экспериментировать!

Если прерывания запрещены (совпало с прерыванием Timer0 или RX TX), то задержка увеличится.
Тут зависит, что допустимо а что нет.
Если это не допустимо, но длина импульса может быть до 10 мкс, то можно поставить внешнюю логику, например 2И для выводов PB2 и PB0. Тогда импульс будет начинаться одновременно с основным фронтом, а заканчиваться по прерыванию, и т.к. прерывания Timer0 и RX TX занимают меньше 10 мкс, то задний фронт не должен выйти за это значение.
Хотя если начинать делать внешнюю обвязку, то можно и до мультивибратора дойти, и вообще от прерываний не зависеть.

DIMAX! Появляйся чаще, а то без тебя тут сплошной флуд )))

1 лайк

У меня нет других прерываний:


  .org  0
  JMP Start
.org  OC1Baddr
  SBIS  PINB,PB2
  RETI
  SBI PINB,PB0
  SBI PINB,PB0
  RETI
Start:
  LDI	R16,Low(RAMEND)
  ...

Вы бы хоть посмотрели реальный вывод вашей программы на 9 и 10 пинах. Вы думаете что у вас длительность сигнала на 10 Пине короче чем на 9. В реальности это не так. Сигнал у вас там будет одинаковый, сдвинутый по фазе.