Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Генератор 36kHz

Сообщений 1 страница 13 из 13

1

Всем привет. Хочу на ATTINY2313 генерить 36кгц. Но ничего не работает. Подскажите в чем ошибка? Проверяю в протеусе. Но осциллограф молчит... Да и portd.5 почему то имеет высокий уровень. О_О

$regfile = "attiny2313.dat"
$Crystal=8000000
$hwstack=40
$swstack=16
$framesize=32

Config Timer1 = Counter , Edge = Rising , Prescale = 8 , Compare A = Toggle

Compare1a = 111

Config Pinb.3 = Output

Start Timer1

Отредактировано Atmel (2014-05-31 18:04:22)

0

2

Вы читаете ответы на свои сообщения?

Atmel написал(а):

Хочу на ATTINY2313 генерить 36кгц. Но ничего не работает. Подскажите в чем ошибка?

Ссылка по теме  -  схема, исходник (Bascom), симуляция (Proteus), плата.

0

3

Спасибо. Я в этом исходнике генератора буду 2 месяца разбираться. Мне то нужен совсем простой генератор, частота у которого никогда не меняется. Просто 36кгц всегда и все на этом. Мне не нужен полнофункциональный генератор...

Отредактировано Atmel (2014-05-31 19:18:21)

0

4

Прицепив на свободные выводы микроконтроллера ATTINY2313 дисплей в протеусе, начал разбираться. Timer1 не считает, он просто стоит, а вот Timer0 считает. Что то от 160 до 190 что ли, не успеваю разглядеть. При этом шим как я понял беспорядочно выдает импульсы...

0

5

А все! Спасибо! Все придумал! Код что я выкладывал, хлам для школьников!)))) Я придумал гениально)))) Получилась отличная тема! Сейчас допишу код и испытаю в железе! Устройство получается лучше чем я даже мог себе представить!))))

0

6

Ну кабы простой код для школьников, это запустить таймер на нужную частоту (добавить делитель, если надо) и обычным дерганьем ноги довольствоваться результатом. :)

0

7

Atmel написал(а):

Хочу на ATTINY2313 генерить 36кгц. Но ничего не работает. Подскажите в чем ошибка?

1 вариант, аппаратная реализация генератора, частота 35,710 кГц

$regfile = "attiny2313a.dat"
  $crystal = 8000000
  $framesize = 32
  $hwstack = 40
  $swstack = 16

  Ddrb.3 = 1
  Ddrb.4 = 1

  Tccr1a.wgm11 = 1
  Tccr1a.Com1a1 = 1
  Tccr1a.Com1b1 = 1

  Tccr1b.Cs11 = 1
  Tccr1b.wgm12 = 1
  Tccr1b.wgm13 = 1

  Icr1 = 27

  End

http://sc.uploads.ru/t/HXpnW.jpg

Отредактировано sasha_1973 (2014-06-01 20:58:48)

+1

8

Всем огромное спасибо все равно. До встречи)))

0

9

Atmel написал(а):

Хочу на ATTINY2313 генерить 36кгц. Но ничего не работает. Подскажите в чем ошибка?

2 вариант, аппаратная реализация генератора, частота 36,036 кГц

$regfile = "attiny2313a.dat"
  $crystal = 8000000
  $framesize = 32
  $hwstack = 40
  $swstack = 16

  Config Portb.3 = Output

  Config Timer1 = Counter , Compare A = Toggle , Prescale = 1

  Tccr1b.wgm12 = 1
  Tccr1b.wgm13 = 1

  Icr1 = 110

End

http://sa.uploads.ru/t/dkIuT.jpg

Отредактировано sasha_1973 (2014-06-01 20:55:55)

+1

10

Более шустрый вариант, аппаратная реализация генератора, частота 4 МГц

$regfile = "attiny2313a.dat"
  $crystal = 8000000
  $framesize = 32
  $hwstack = 40
  $swstack = 16

  Config Portb.3 = Output

  Config Timer1 = Counter , Compare A = Toggle , Prescale = 1

  Tccr1b.wgm12 = 1
  Tccr1b.wgm13 = 1

  Icr1 = 0

End

http://sb.uploads.ru/t/4XVUn.jpg

Отредактировано sasha_1973 (2014-06-01 20:59:59)

+2

11

Вариант, ещё быстрее, аппаратная реализация генератора, частота 10 МГц

$regfile = "attiny2313a.dat"
  $crystal = 20000000
  $framesize = 32
  $hwstack = 40
  $swstack = 16

  Config Portb.3 = Output

  Config Timer1 = Counter , Compare A = Toggle , Prescale = 1

  Tccr1b.wgm12 = 1
  Tccr1b.wgm13 = 1

  Icr1 = 0

End

http://sa.uploads.ru/t/40jqH.jpg http://sb.uploads.ru/t/3XPnD.jpg

Отредактировано sasha_1973 (2014-06-01 21:00:24)

+2

12

Саша, спасибо за раскрытие темы.

0

13

Формула для расчёта значений частоты и делителей находится на стр. 124 документации Atmel

Кому лень качать и читать:

Частота генератора = частота МК / ((2 * Prescale(1, 8, 64, 256, 1024)) * ( 1 + значение в регистре "Icr1"))

Значение в регистре "Icr1" = (частота МК / требуемая частота генератора) / (2 * Prescale(1, 8, 64, 256, 1024)) - 1

Отредактировано sasha_1973 (2014-06-01 16:54:41)

+2