Какая все-таки частота МК

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
aleezon
Родился
Сообщения: 8
Зарегистрирован: Пн май 30, 2011 09:08:59

Какая все-таки частота МК

Сообщение aleezon »

Добрый день, уважаемые. Делаю задержку большую. Порядка 18-25 часов. МК tiny13a. Не понимаю чего я недочитал в даташите...
в avr studio написал программу на ассемблере, основанную на переполнении таймера и его прерывании. при симуляции программа выдает ровно 1 секунду (1000,05 мс). но в реале все не так. в реале там погрешность чуть ли не 50 %. фьюзы поставил на 9,6. CKDIV8 снял. что же там не так с частотой? неужели такая большая погрешность в частоте внутреннего генератора? возможно есть еще какие-то настройки частоты типа калибровки? Или чтото с самой калибровкой не так?
Прошу помощи у знатоков, замучался за неделю экспериментов
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Какая все-таки частота МК

Сообщение Engineer_Keen »

Ошибка в 23 строке исходного кода. :idea:
Реклама
aleezon
Родился
Сообщения: 8
Зарегистрирован: Пн май 30, 2011 09:08:59

Re: Какая все-таки частота МК

Сообщение aleezon »

Прошу прощения. вот код. только вот перепутал я. задерку делаю тупым циклом. который выполняется за 1 сек...

.include "tn13def.inc"

;Частота 9,6
ldi r16,0b11111111
out ddrb,r16
ldi r16,0

m:
sbi portb,4;Включить нагузку
rcall delay;задержка
cbi portb,4;выключить нагругку
rcall delay;задержка
rjmp m


;задержка 1 сек
delay:
ldi r18,48
main:
dec r16
brne main
dec r17
brne main
dec r18
brne main

ldi r16,255
ldi r17,179
t:
dec r16
brne t
dec r17
brne t
ret
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Какая все-таки частота МК

Сообщение Engineer_Keen »

Ну что я могу сказать...
В принципе задержка действительно получается ~1секунда, значит остается:
1) все-таки неправильно настроены фузы (на 4.8МГц) - проверить, убедиться что точно 9.6.
2) хреновая калибровка (вряд ли тут на 50% уход будет) - поиграться с регистром OSCCAL (стр. 23-24 даташита)

Правда я только первый раз проверил, больно долго симулируется.
Странная какая-то подпрограмма задержки, обычно сначала инициализируют переменные, а потом от них единицы отнимают...

И еще. Раз пользуетесь RCALL/RET - стек не забывайте инициализировать.
Реклама
Эиком - электронные компоненты и радиодетали
aleezon
Родился
Сообщения: 8
Зарегистрирован: Пн май 30, 2011 09:08:59

Re: Какая все-таки частота МК

Сообщение aleezon »

да, я мог перепутать фузы. но меняя их местами (в tiny13 их всего 2 - CKSEL0 и CKSEL1) я увидел что при одной настройке быстро работает и при другой медленно. очевидно их я не мог перепутать. да и с даташитом совпадает.
калибровка конечно тут к месту, но минус в том, что я так и не буду знать точной частоты. все указывает на то что частота при выставленной в 4,8 составляет 4,3 Мгц. при 9,6 - примерно 9.
мне конечно не нужны наноточные интервалы. но если за сутки набежит 10 мин погрешности то этого будет много.

про инициализацию читал но почему то не увидел что меняется. спасибо Engineer_Keen, изучу это
Реклама
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Какая все-таки частота МК

Сообщение МитяРа »

aleezon писал(а):Порядка 18-25 часов.
Не знаю, как у Тинек, а если повесить внешний часовой кварц на 32.ххх кГц.. :idea:
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Реклама
aleezon
Родился
Сообщения: 8
Зарегистрирован: Пн май 30, 2011 09:08:59

Re: Какая все-таки частота МК

Сообщение aleezon »

часовой кварц я вот выпаял из будильника китайского. но не нашел XTAL у тини13. Есть конечно у меня 12 Мгц кварц. есть и конденсаторы. и еще есть тини2313. но она одна у меня. жалко забирать на простой таймер тини2313. но как мне кажется, не может быть такой большой погрешности от внутреннего генератора.
А можно ли вообще подключить этот кварц часовой на тини13? и если можно, то как в таком случае программировать МК? прямо к устройству подключать программатор? (у меня программатор "5 проводков" да еще и не как у людей. на нем 2 разьема 8 пин и 20 пин для тини13 и тини 2313=))
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15582
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Какая все-таки частота МК

Сообщение BOB51 »

симулятор и макет штука разная... :cry:
для начала настроить симулятор надо, затем повнимательней присмотреться к режимам тактового генератора и предделителя (по умолчанию у 13/13А стоит внутренний RС на 9,6мгц с делением на 8 8).
кстати, предделитель и для внешнего кварца действителен...
задержки цепочкой команд для систем с конвеерной выборкой команд нестабильны - используйте таймеры! 8)
aleezon
Родился
Сообщения: 8
Зарегистрирован: Пн май 30, 2011 09:08:59

Re: Какая все-таки частота МК

Сообщение aleezon »

BOB51, я убрал деление на 8. должно стать 9,6 - но нету там их. вчера впаял кварцевый резонатор на 12 Мгц на тини2313. заработало. сегодня напишу новую программу на таймере. проверю. но и на таймере тоже выходит погрешность что говорит о том что там не 9,6 Мгц.
а скажите, в чем разница между резонатором и генератором? почему то у меня путаница в голове с этим
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Какая все-таки частота МК

Сообщение Engineer_Keen »

aleezon писал(а):должно стать 9,6 - но нету там их
Осциллограф или частотомер есть? Напишите:

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

LDI R16,0x01
OUT DDRB,R16
LOOP:
SBI PORTB,PB0
NOP
NOP
CBI PORTB,PB0
RJMP LOOP
На PB0 будет меандр F/8. Узнаете точно какая частота у МК.
Только что ради интереса в симуляторе проверил, с делителем - ровно 9.6/8, без делителя - 10МГц :dont_know:
aleezon писал(а): в чем разница между резонатором и генератором ?
Генератор - активный элемент и его можно к одной ноге МК подключить (нога CLKI). В случае тини13 - это единственный вариант внешнего тактирования, при этом естественно одна нога I/O теряется. Резонатор - пассивный элемент, подключается 2мя ногами к генератору, находящемуся внутри МК (ноги XTAL1-XTAL2).
aleezon
Родился
Сообщения: 8
Зарегистрирован: Пн май 30, 2011 09:08:59

Re: Какая все-таки частота МК

Сообщение aleezon »

частотометра нету и осцилографа нету. осцилограф дорогой такой. не по срендствам. я бы подключил да померял если бы был.
генератор/резонатор понял. спасибо. в голове прояснилось все.

посмотрел частотомеры... буду собирать на него года 3. :cry: осцилографы тоже дорогие

вечером буду пробовать 12Мгц. отпишу, может кто столкнется с проблемой точности тактирования.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15582
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Какая все-таки частота МК

Сообщение BOB51 »

если tinка свежая (только от производителя) - то будет внутренний RC
иначе - все что угодно (кто раньше попользовался) надо по-новой конфигурацию вводить
еще хуже если пользователь лапку сброса отключил - ищите "высоковольтник" для перезаписи фузов конфигурации
aleezon
Родился
Сообщения: 8
Зарегистрирован: Пн май 30, 2011 09:08:59

Re: Какая все-таки частота МК

Сообщение aleezon »

Возможно кто-то столкнется с этой проблемой...
Внутренний генератор работает (почему-то) нестабильно и неточно.

я таки подключил резонатор 12 Мгц к тини2313. точность конечно отличная. за 2 часа погрешность составила... нифига она не стаставила. разве-что милисекунды. вобщем работает все четка. благодарю всех кто мне помог разобраться с этим вопросом и с другими попутными вопросами! возможно и я вскором кому-нибудь смогу помочь!!!!! :beer: !!!!!

прилагаю код программы, несложный, но на всякий случай:

.include "tn2313def.inc"
LDI R16,Low(RAMEND); Инициализация стека
OUT SPL,R16

;Определяем назначение портов ввода/вывода
ldi r16,0b11111111
out ddrb,r16




rjmp main

main:
ldi r19,60;ТУТ УКАЗЫВАЕМ СКОЛЬКО СЕКУНД В МИНУТЕ =)
ldi r20,120; ТУТ КОЛИЧЕСТВО МИНУТ В ЗАДЕРЖКЕ

mins:
ldi r19,60;ставим опять 60 секунд


;в этой подпрограмме отмеряем РОВНО 1 секунду ПРИ ТАКТОВОЙ ЧАСТОТЕ 12 Мгц.
secs:
rcall sec1
dec r19
brne secs

dec r20
brne mins

sbi portb,0

rjmp main





sec1:
ldi r18,60
ss:
dec r16
brne ss
dec r17
brne ss
dec r18
brne ss
ldi r16,0
ldi r17,224
s1:
dec r16
brne s1
dec r17
brne s1
ret



P.S. на ночь оставил и испытал задержку в 7 часов. в этом случае тоже все четко
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15582
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Какая все-таки частота МК

Сообщение BOB51 »

for aleezon
мняя...
доставалки... по што микруху обижаем?
своргань вот энту схемку и загрузи оттранслированный исходник - на pb0 будет меандр с частотой 1Гц, длительность горения/паузы на светике 0,5s :)))
остальное, по необходимости, сам допишешшш...
пришлось макетик на ИК локатор для перепроверки потревожжить... :cry:
Вложения
gensek.asm
(5.51 КБ) 707 скачиваний
genik.pdf
(181.45 КБ) 232 скачивания
aleezon
Родился
Сообщения: 8
Зарегистрирован: Пн май 30, 2011 09:08:59

Re: Какая все-таки частота МК

Сообщение aleezon »

to BOB51
спасибо тебе огромное. пригдицо. вот я в файлике нашел такое в начале:
ВНИМАНИЕ!!!
; В области сигнатуры ATtiny13A размещаются два байта
; калибровочных констант для внутреннего RC генератора.
; Старший байт по адресу 0х00 содержит калибровочную константу
; для работы генератора на частоте 9.6 MHz. Данная константа
; будет автоматически загружена в OSCCAL по окончании сигнала сброса.
; Автоматическая загрузка калибровочной константы
; для работы генератора на частоте 4.8 MHz НЕ ВЫПОЛНЯЕТСЯ!
; Чтение, хранение и загрузка калибровочной константы
; для работы внутреннего RC генератора на частоте 4.8 MHz
; должны выполняться прикладной программой.
; Калибровочная константа для работы генератора на частоте 4,8 MHz
; размещена в старшем байте поадресу 0х01 в области сигнатур.
я нескоко раз прочитал и не догоняю что тут значит "сигнатура", а еще непонятно "старший байт" и "младший". :dont_know: :dont_know: :dont_know:
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15582
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Какая все-таки частота МК

Сообщение BOB51 »

вообще-то это перевод datasheet а doc8126...
"17.3 Calibration Bytes
The signature area of the ATtiny13A contains two bytes of calibration data for the internal oscillator.
The calibration data in the high byte of address 0x00 is for use with the oscillator set to 9.6
MHz operation. During reset, this byte is automatically written into the OSCCAL register to
ensure correct frequency of the oscillator.
There is a separate calibration byte for the internal oscillator in 4.8 MHz mode of operation but
this data is not loaded automatically. The hardware always loads the 9.6 MHz calibration data
during reset. To use separate calibration data for the oscillator in 4.8 MHz mode the OSCCAL
register must be updated by firmware. The calibration data for 4.8 MHz operation is located in
the high byte at address 0x01 of the signature area."
по-народному: калибровочный байт для 9,6 загрузится сам , а вот для 4,8 его сначала при помощи программатора(и то не всякого) считать надобно, а затем уже использовать :tea:
не мешает перечитать сии документы ( datasheetы) перед злоупотреблением микроконтроллера в качестве подопытного мыша 8)
вообще-то там и погрешность генератора указана +/-10% ( конкретный экземпляр на тесте дал +5 минут для 2-часового интервала), и много чего еще интересного :roll:
кстати для "длинных" таймеров/одновибраторов также неплохо сгодится PIC12F629/683 8)
a_skr
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Re: Какая все-таки частота МК

Сообщение a_skr »

aleezon писал(а):Возможно кто-то столкнется с этой проблемой...
Внутренний генератор работает (почему-то) нестабильно и неточно.
сталкивался в новой(!) tiny2313. внутренний RC работал с погрешностью примерно 20-30%(!), не помню в какую сторону! и байты калибровки были вроде FF. решил не заморачиваться и подогнал F_CPU в makefile.
BOB51 писал(а):задержки цепочкой команд для систем с конвеерной выборкой команд нестабильны - используйте таймеры!
а это что за ерунда про AVR? один и тот же код в цикле будет выполняться нестабильно разное время? или трудно посчитать на этапе программирования, сколько точно тактов там будет? по-моему, все четко.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15582
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Какая все-таки частота МК

Сообщение BOB51 »

for a_skr
если применить цепочку NOP-ов, то да, а ежли счетчики с условными переходами (особо когда их много на заданный интервал) , да еще при отсутствии хоть какого-либо измерительного оборудования - это уже садомазо :)
сбой нормального выполнения потока с разным временем исполнения в полном/неполном циклах даже при кварцевом резонатрое не сильно поможет.
AVR&PIC не mcs51 (да и то там о таймерах на командных кольцах можно говорить только в применении "прототипов" чего сейчас уже редкость) 8)
и все же "учите матчасть господа!" :beer:
да, еще добавлю несколько оптимизированный исходник для "длинного таймера"- там больше места для прикладной программы, которая может использоваться совместно с "фоновым" реле времени (см.приложение) 8)
погрешность та же - +/-10% от заданного секундах интервала :cry:
конечо шкварц точнее будет, но то лишние деталюхи, да и всегда ли та точность нужна? (в крайнем случае можно и каибровочный байт "подергать" - там точность до +/-2% достичь можно)
Вложения
gensek.asm
(6.96 КБ) 495 скачиваний
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»