Например TDA7294

Форум РадиоКот :: Просмотр темы - Bin-клоки на Attiny2313.
Форум РадиоКот
https://radiokot.ru/forum/

Bin-клоки на Attiny2313.
https://radiokot.ru/forum/viewtopic.php?f=25&t=12588
Страница 1 из 3

Автор:  SeamaNCOS [ Чт дек 25, 2008 13:47:47 ]
Заголовок сообщения:  Bin-клоки на Attiny2313.

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

http://radiokot.ru/circuit/digital/home/36/

Автор:  SeamaNCOS [ Чт дек 25, 2008 13:53:25 ]
Заголовок сообщения: 

Вот исходник

Вложения:
code.asm [6.16 KiB]
Скачиваний: 1062

Автор:  smac [ Чт дек 25, 2008 14:20:02 ]
Заголовок сообщения: 

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

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

Автор:  SeamaNCOS [ Чт дек 25, 2008 14:27:17 ]
Заголовок сообщения: 

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

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

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

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

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

Автор:  smac [ Чт дек 25, 2008 21:54:46 ]
Заголовок сообщения: 

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 [ Чт дек 25, 2008 21:58:51 ]
Заголовок сообщения: 

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

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

Нет, CTC (clear timer on compare) - это режим работы таймера, при котором он автоматически очищается при совпадении с регистром сравнения. Используется для обеспечения точного отсчета временных интервалов. Скачайте даташит на контроллер и посмотрите в нем (искать по слову CTC).

Автор:  smac [ Чт дек 25, 2008 22:05:20 ]
Заголовок сообщения: 

Вот сейчас еще косяк заметил:
Вы выходите из обработчика прерывания командой ret. это значит, что после выхода у вас глобально запрещены прерывания, поскольку при входе в обработчик прерывания, автоматически глобально запрещаются прерывания (равносильно команде cli).
Если вы хотите, чтобы при выходе из обработчика прерывания, глобально разрешались прерывания, то следует использовать команду reti. Собственно отличие reti от ret состоит именно в том что первая глобально разрешает прерывания при выходе из подпрограммы, а вторая - нет.

Автор:  SeamaNCOS [ Чт дек 25, 2008 22:11:29 ]
Заголовок сообщения: 

Писал прошивку на основе 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 [ Чт дек 25, 2008 22:19:58 ]
Заголовок сообщения: 

А вот собственно и сам девайс в сборе. Кому понравиться могу скинуть схемку и ПП.

Вложения:
Картинки(025).jpg [40.92 KiB]
Скачиваний: 1723

Автор:  smac [ Чт дек 25, 2008 23:08:21 ]
Заголовок сообщения: 

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

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

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

В. Я вам уже ответил куда копать, еще раз поясню: скачайте даташит и прочитайте хотя бы про таймеры (а желательно весь). Если плохо с английсиким, то на сайте www.gaw.ru есть некоторая информация на русском языке, хотя я рекоммендую все-таки читать даташит на английском.

Автор:  akl [ Пт дек 26, 2008 07:21:27 ]
Заголовок сообщения:  Re: Помогите настроить часы на Attiny2313

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

Здравствуйте.
- Проверьте, как запрограммированы биты CSEL3...0=1111 и SUT1,0=11.
- откорректировал Ваш текст, проверил формирование интервала 1 сек.
При резонаторе 8.(0) МГц интервал формируется 1 сек
С индикацией не разбирался. Часы в таком представлении индикации выше моего понимания :oops:

Автор:  akl [ Пт дек 26, 2008 09:40:11 ]
Заголовок сообщения: 

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

CLR sek ; !!!!!!!!!
...."

Автор:  SeamaNCOS [ Пт дек 26, 2008 09:58:01 ]
Заголовок сообщения: 

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

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

На счет индикации смотреть вот здесь http://dariod.cjb.net/ (Binary Clock)

Автор:  SeamaNCOS [ Пт дек 26, 2008 10:43:00 ]
Заголовок сообщения: 

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

я прошиваю через Uniprof как там фьюзы настроить CKEL3...0=1111 и SUT1,0=11 непонятно. Там просто галочки ставить можно.

Вложения:
fuses.GIF [95.21 KiB]
Скачиваний: 1095

Автор:  akl [ Пт дек 26, 2008 13:04:55 ]
Заголовок сообщения: 

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

Автор:  SeamaNCOS [ Пт дек 26, 2008 13:53:48 ]
Заголовок сообщения: 

Вот схема

Не поставил галочки на Lock и теперь МК не определяеться :cry: .
завтра куплю новай тогда буду пробовать.

Вложения:
Bin CLOCK bu SeamaN.JPG [73.92 KiB]
Скачиваний: 1016

Автор:  akl [ Вс дек 28, 2008 10:31:13 ]
Заголовок сообщения: 

Здравствуйте. Вот что получилось после просмотра схемы и прогона в студии; если еще актуально

Автор:  SeamaNCOS [ Вс дек 28, 2008 22:11:31 ]
Заголовок сообщения: 

akl СПАСИБО ОГРОМНОЕ ! ! ! ! !
вот только теперь 1 секунда длиться 8сек....
Всетаки грешу на Фьюзы. Т.К. без кварца работает так же как и с ним.

Автор:  akl [ Пн дек 29, 2008 06:16:11 ]
Заголовок сообщения: 

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

Автор:  SeamaNCOS [ Пн дек 29, 2008 09:45:32 ]
Заголовок сообщения: 

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

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/