Форум разработчиков электроники ELECTRONIX.ru: ATtiny13 растягивает импульсы в 3 раза - Форум разработчиков электроники ELECTRONIX.ru

Jump to content

Рекламный блок

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

ATtiny13 растягивает импульсы в 3 раза

#1 User is offline   SAVC Icon

  • Частый гость
  • PipPip
  • Group: Участник
  • Posts: 185
  • Joined: 29 января 07

Posted 24 сентября 2018 - 11:19

В схеме установлен микроконтроллер ATtiny13
Прошита следующая программа:
CODE


.include "tn13def.inc"

.cseg
.org 0

ldi r16,0b00011000
out ddrb,r16

ldi r16,0b00010000
ldi r17,0b00001000

fr:
out portb,r16
out portb,r17

out portb,r16
out portb,r17

out portb,r16
out portb,r17

out portb,r16
out portb,r17

out portb,r16
out portb,r17

out portb,r16
out portb,r17

out portb,r16
out portb,r17

out portb,r16
out portb,r17

rjmp fr

Которая просто переключает биты в порту ввода-вывода на рабочей частоте микропроцессора.
Согласно документации тактовая частота 9.6МГц
То есть, длительность импульса и паузы должна быть около 100нс
Но осциллограф показвает 300нс (!)
Уже поменял микроконтроллер, ситуация та же.
Что это? У кого-нибудь есть идеи?
0

#2 User is offline   adnega Icon

  • Гуру
  • PipPipPipPipPipPip
  • Group: Свой
  • Posts: 2 724
  • Joined: 14 мая 07

Posted 24 сентября 2018 - 11:27

Цитата(SAVC @ Sep 24 2018, 11:19) <{POST_SNAPBACK}>
Что это? У кого-нибудь есть идеи?

Что насчет CKDIV8 в Fuse Low Byte ?
0

#3 User is offline   SAVC Icon

  • Частый гость
  • PipPip
  • Group: Участник
  • Posts: 185
  • Joined: 29 января 07

Posted 24 сентября 2018 - 11:32

Цитата(adnega @ Sep 24 2018, 13:27) <{POST_SNAPBACK}>
Что насчет CKDIV8 в Fuse Low Byte ?




CKDIV сброшен в ноль.

This post has been edited by SAVC: 24 сентября 2018 - 11:33

0

#4 User is offline   adnega Icon

  • Гуру
  • PipPipPipPipPipPip
  • Group: Свой
  • Posts: 2 724
  • Joined: 14 мая 07

Posted 24 сентября 2018 - 11:47

Цитата(SAVC @ Sep 24 2018, 11:32) <{POST_SNAPBACK}>
CKDIV сброшен в ноль.

Сброшен в ноль - это "запрограммирован".
Цитата
CKDIV8 - 4 - Divide clock by 8 - 0 (programmed)

У AVR с этим не так просто разобраться.
Попробуйте установить его в "1".

Цитата
The calibrated internal oscillator provides a 4.8 or 9.6 MHz clock source. The frequency is nominal
at 3V and 25°C. If the frequency exceeds the specification of the device (depends on VCC),
the CKDIV8 fuse must be programmed so that the internal clock is divided by 8 during start-up.

0

#5 User is offline   SAVC Icon

  • Частый гость
  • PipPip
  • Group: Участник
  • Posts: 185
  • Joined: 29 января 07

Posted 24 сентября 2018 - 13:17

Цитата(adnega @ Sep 24 2018, 13:47) <{POST_SNAPBACK}>
Сброшен в ноль - это "запрограммирован".

У AVR с этим не так просто разобраться.
Попробуйте установить его в "1".


Попробовал - действительно, частота выросла в 8 раз.
Только теперь по моему осциллографу период тактовой частоты получается 35нс.
Спасибо за подсказку, дело было в этом.

Всё, с осциллографом тоже разобрался - была накручена ручка подгона развёртки.
Теперь всё правильно - 100нс

Спасибо.

This post has been edited by SAVC: 24 сентября 2018 - 13:28

0

#6 User is offline   adnega Icon

  • Гуру
  • PipPipPipPipPipPip
  • Group: Свой
  • Posts: 2 724
  • Joined: 14 мая 07

Posted 24 сентября 2018 - 14:54

Цитата(SAVC @ Sep 24 2018, 13:17) <{POST_SNAPBACK}>
Спасибо за подсказку, дело было в этом.

Дополню: ничего не мешает в начале программы делать так
Код
        ldi        temp, (1 << CLKPCE)
        out        CLKPR, temp
        ldi        temp, 0
        out        CLKPR, temp

        ldi        temp, 0x61
        out        OSCCAL, temp

для точной установки частоты. При этом CKDIV8 fuse вам уже не важен будет.
Тут на форуме много раз темы с CLKPR поднимались (1, 2, 3, 4).
0

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1
0