Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

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

Автор: SAVC Sep 24 2018, 08: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нс (!)
Уже поменял микроконтроллер, ситуация та же.
Что это? У кого-нибудь есть идеи?

Автор: adnega Sep 24 2018, 08:27

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

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

Автор: SAVC Sep 24 2018, 08:32

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


http://electronix.ru/redirect.php?https://postimages.org/

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

Автор: adnega Sep 24 2018, 08:47

Цитата(SAVC @ Sep 24 2018, 11:32) *
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.

Автор: SAVC Sep 24 2018, 10:17

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

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


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

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

Спасибо.

Автор: adnega Sep 24 2018, 11:54

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

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

        ldi        temp, 0x61
        out        OSCCAL, temp

для точной установки частоты. При этом CKDIV8 fuse вам уже не важен будет.
Тут на форуме много раз темы с CLKPR поднимались (http://electronix.ru/forum/lofiversion/index.php/t132775.html, http://electronix.ru/forum/lofiversion/index.php/t133132.html, http://electronix.ru/forum/lofiversion/index.php/t59905.html, http://electronix.ru/forum/lofiversion/index.php/t66451.html).

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)