Bin-клоки на Attiny2313.

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Аватара пользователя
SeamaNCOS
Встал на лапы
Сообщения: 107
Зарегистрирован: Ср дек 10, 2008 15:10:59
Откуда: KPACHO9PCK
Контактная информация:

Bin-клоки на Attiny2313.

Сообщение SeamaNCOS »

Сделал бинарные часики на Attiny2313 но настроить никак не могу. Число сравнения не работает сколько не меняю все равно отстают на 13 сек за минуту.

http://radiokot.ru/circuit/digital/home/36/
Чем больше думаеш, тем дольше уснуть не можеш...
Аватара пользователя
SeamaNCOS
Встал на лапы
Сообщения: 107
Зарегистрирован: Ср дек 10, 2008 15:10:59
Откуда: KPACHO9PCK
Контактная информация:

Сообщение SeamaNCOS »

Вот исходник
Вложения
code.asm
(6.16 КБ) 1070 скачиваний
Чем больше думаеш, тем дольше уснуть не можеш...
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

SeamaNCOS писал(а):Вот исходник

Бегло просмотрев, заметил следующее:
При входе в прерывание вы не сохраняете в стеке статус-регистр (SREG) и регистры, которые используются не только в прерывании. Совет: лучше настроить таймер в режим CTC, тогда таймер не нужно будет обнулять в прерывании, точность повысится.
Аватара пользователя
SeamaNCOS
Встал на лапы
Сообщения: 107
Зарегистрирован: Ср дек 10, 2008 15:10:59
Откуда: KPACHO9PCK
Контактная информация:

Сообщение SeamaNCOS »

smac писал(а):
SeamaNCOS писал(а):Вот исходник

Бегло просмотрев, заметил следующее:
При входе в прерывание вы не сохраняете в стеке статус-регистр (SREG) и регистры, которые используются не только в прерывании. .

как их настроить??

СТС в смысле писать за место
mov st,temp1
через
.dseg
Digit: .byte 6

sts Digit+1Temp1 и т.д. ????
Чем больше думаеш, тем дольше уснуть не можеш...
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

SeamaNCOS писал(а):как их настроить??

Я вам конечно помогу, но вы литературу почитайте, на этом сайте обучалка есть и в интернете информации полно. Для начала узнайте и что такое стек, что такое указатель стека и для чего они используется.
Объясню кратко: стек - область ОЗУ, организованная по принципу первым вошел-последним вышел.
Теперь собственно по теме.
1. Сохранение регистров общего назначения (r0-r31)

Код: Выделить всё

push r16 ; "заталкиваем" регистр r16  в стек
push r17 ; "заталкиваем" регистр r17  в стек
; теперь мы може пользоваться сохраненными регистрами как нам угодно
...some code
pop r17; "вынимаем " регистры из стека обязательно в порядке обратном "заталкиванию"
pop r16;
; теперь в регистрах появилисль значения, которые были в них до прерывания

2. Сохранение регистра SREG в стеке:

Код: Выделить всё

push r16; "заталкиваем" регистр r16  в стек
in r16, SREG; читаем в r16 регистр SREG
push r16; сохраняем прочитанное значение в стеке.
.... some code
pop r16 ; читаем в r16 из стека значение, соответствующее регистру SREG до вход в обработчик прерывания
out SREG, r16; пишем это значение в SREG
pop r16; читаем из стека значение r16.
; после данных действий и в SREG и в r16 значения которые были в них до входа в обработчик прерывания.

Важное замечание: при операциях со стеком порядок извлечения регистров из стека всегда должен быть обратным относительно порядка сохранения "заталкивания" регистров в стек.
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

SeamaNCOS писал(а):СТС в смысле писать за место
mov st,temp1
через
.dseg
Digit: .byte 6

sts Digit+1Temp1 и т.д. ????

Нет, CTC (clear timer on compare) - это режим работы таймера, при котором он автоматически очищается при совпадении с регистром сравнения. Используется для обеспечения точного отсчета временных интервалов. Скачайте даташит на контроллер и посмотрите в нем (искать по слову CTC).
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

Вот сейчас еще косяк заметил:
Вы выходите из обработчика прерывания командой ret. это значит, что после выхода у вас глобально запрещены прерывания, поскольку при входе в обработчик прерывания, автоматически глобально запрещаются прерывания (равносильно команде cli).
Если вы хотите, чтобы при выходе из обработчика прерывания, глобально разрешались прерывания, то следует использовать команду reti. Собственно отличие reti от ret состоит именно в том что первая глобально разрешает прерывания при выходе из подпрограммы, а вторая - нет.
Аватара пользователя
SeamaNCOS
Встал на лапы
Сообщения: 107
Зарегистрирован: Ср дек 10, 2008 15:10:59
Откуда: KPACHO9PCK
Контактная информация:

Сообщение SeamaNCOS »

Писал прошивку на основе http://radiokot.ru/circuit/digital/home/33/.
В этих исходниках ничего подобного не было. В коментах пишут что часы работают нормально. А я максимум чего добился (расчетом и подборкой задержки) это отставание на 2 минуты за 4 часа.
Немогу понять как расчитывать

ldi Temp1,0b00000100
out Tccr1b,Temp1 ;тактовый сигнал /256

ldi Temp1,0x7a
out Ocr1ah,Temp1
ldi Temp1,0x12
out Ocr1al,Temp1 ;запись числа сравнения 31250 (0.4сек. при 8мгц)

и где ставить

ldi Temp1,0
out Tcnt1h,Temp1
out Tcnt1l,Temp1 ;обнуление счетчика
Чем больше думаеш, тем дольше уснуть не можеш...
Аватара пользователя
SeamaNCOS
Встал на лапы
Сообщения: 107
Зарегистрирован: Ср дек 10, 2008 15:10:59
Откуда: KPACHO9PCK
Контактная информация:

Сообщение SeamaNCOS »

А вот собственно и сам девайс в сборе. Кому понравиться могу скинуть схемку и ПП.
Вложения
Картинки(025).jpg
(40.92 КБ) 1731 скачивание
Чем больше думаеш, тем дольше уснуть не можеш...
smac
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

SeamaNCOS писал(а):Писал прошивку на основе http://radiokot.ru/circuit/digital/home/33/.
В этих исходниках ничего подобного не было. В коментах пишут что часы работают нормально.

А. Во-первых работают скорее вопреки всему, во-вторых не знаю как их тестили, в-трерьих покажите мне эти коменты.
SeamaNCOS писал(а):я максимум чего добился (расчетом и подборкой задержки) это отставание на 2 минуты за 4 часа.

Б. По-моему ваш исходник все-же отличается от оригинала.
SeamaNCOS писал(а):Немогу понять как расчитывать

В. Я вам уже ответил куда копать, еще раз поясню: скачайте даташит и прочитайте хотя бы про таймеры (а желательно весь). Если плохо с английсиким, то на сайте www.gaw.ru есть некоторая информация на русском языке, хотя я рекоммендую все-таки читать даташит на английском.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Помогите настроить часы на Attiny2313

Сообщение akl »

SeamaNCOS писал(а):Сделал бинарные часики на Attiny2313 но настроить никак не могу. Число сравнения не работает сколько не меняю все равно отстают на 13 сек за минуту.

Здравствуйте.
- Проверьте, как запрограммированы биты CSEL3...0=1111 и SUT1,0=11.
- откорректировал Ваш текст, проверил формирование интервала 1 сек.
При резонаторе 8.(0) МГц интервал формируется 1 сек
С индикацией не разбирался. Часы в таком представлении индикации выше моего понимания :oops:
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Вдогонку. Добавить еще одну строку
"
...
inc sek ; увелечение секунд
cpi sek,60 ; разность 60*1.0c=60c=1мин
;cpi sek,150 ; разность 150*0.4c=60c=1мин
brne Out3 ; если не ноль то выход

CLR sek ; !!!!!!!!!
...."
Аватара пользователя
SeamaNCOS
Встал на лапы
Сообщения: 107
Зарегистрирован: Ср дек 10, 2008 15:10:59
Откуда: KPACHO9PCK
Контактная информация:

Сообщение SeamaNCOS »

Вот коменты на простые часы на МК http://www.radiokot.ru/forum/viewtopic. ... B%E5%F0%E5

Читаю датыш. пока мало чего понимаю но буду разбираться.

На счет индикации смотреть вот здесь http://dariod.cjb.net/ (Binary Clock)
Чем больше думаеш, тем дольше уснуть не можеш...
Аватара пользователя
SeamaNCOS
Встал на лапы
Сообщения: 107
Зарегистрирован: Ср дек 10, 2008 15:10:59
Откуда: KPACHO9PCK
Контактная информация:

Сообщение SeamaNCOS »

akl с test2 сеунды вообще не идут. 1 и все.

я прошиваю через Uniprof как там фьюзы настроить CKEL3...0=1111 и SUT1,0=11 непонятно. Там просто галочки ставить можно.
Вложения
fuses.GIF
(95.21 КБ) 1099 скачиваний
Чем больше думаеш, тем дольше уснуть не можеш...
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Как запрограммировать правильно FUSE-биты Вашим программатором, не знаю, потому что пользуюсь другими (AS1...AS4).
Если будет выложена схема, будет проще. Пока по программе не видно, куда выводится секунда.
Расчет простой
за 60 секунд при частоте 8000000:256 будет 31250 прерываний.
Если часы отстают на 1 секунду в минуту, то те же 31250 прерываний придут за 61 секунду. Значит частота кварца ниже, чем 8 МГц. Тогда 60:61*Х=31250 и Х=30737,705. Реальная частота кварца получается 30737,709*256=7868852 Гц.
Аватара пользователя
SeamaNCOS
Встал на лапы
Сообщения: 107
Зарегистрирован: Ср дек 10, 2008 15:10:59
Откуда: KPACHO9PCK
Контактная информация:

Сообщение SeamaNCOS »

Вот схема

Не поставил галочки на Lock и теперь МК не определяеться :cry: .
завтра куплю новай тогда буду пробовать.
Вложения
Bin CLOCK bu SeamaN.JPG
(73.92 КБ) 1025 скачиваний
Чем больше думаеш, тем дольше уснуть не можеш...
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Здравствуйте. Вот что получилось после просмотра схемы и прогона в студии; если еще актуально
Аватара пользователя
SeamaNCOS
Встал на лапы
Сообщения: 107
Зарегистрирован: Ср дек 10, 2008 15:10:59
Откуда: KPACHO9PCK
Контактная информация:

Сообщение SeamaNCOS »

akl СПАСИБО ОГРОМНОЕ ! ! ! ! !
вот только теперь 1 секунда длиться 8сек....
Всетаки грешу на Фьюзы. Т.К. без кварца работает так же как и с ним.
Чем больше думаеш, тем дольше уснуть не можеш...
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Сообщение akl »

Здравствуйте. Да, конечно, это FUSE. И еще, в обработчике прерывания вставьте две команды.
Timer1_comp1:
;*******************************************
IN R1,SREG
;*******************************************
.
.
.
;**********
out3:
;*******************************************
OUT SREG,R1
;*******************************************
RETI
Для повышения временнОй стабильности попробуйте (после получения удовлетворительных результатов) "загрунтовать" корпус резонатора и убрать конденсаторы с его лап. Если кварц достаточно активен и SUT1,0 =11 (настроены на задержку 65 ms) выиграите пару порядков по стабильности. Далее, для повышения точности можно организовать иной алгоритм, который позволит уменьшить дискрет подстройки с 32 мкс до 0.125 мкс.
Аватара пользователя
SeamaNCOS
Встал на лапы
Сообщения: 107
Зарегистрирован: Ср дек 10, 2008 15:10:59
Откуда: KPACHO9PCK
Контактная информация:

Сообщение SeamaNCOS »

Уже 2а трупика есть :? с корявыми фьюзами.
uniprof не хочет считывать заводские настройки. А другие проги с программатором 5 проводков работать не хотят. Собрал программатор из обучалки и он неработает.
Подскожите пожалуйста(Хватит трупов с откл ISP)
какие галки должны стоять при проге фьюзов(рис проги выше)???
Чем больше думаеш, тем дольше уснуть не можеш...
Ответить

Вернуться в «Статьи»