реклама на сайте
подробности

 
 
> Таймеры atmega32a
ishpanec
сообщение Dec 19 2014, 09:57
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 19-12-14
Пользователь №: 84 192



Здравствуйте
Проблема возникла такая, есть у меня atmega32a китайский. постигаю таймеры. использую таймер0 (8 бит).
Логика моих мыслей такова:

если там частота 16МГц а таймер считает до 256 то каждое переполнение таймера будет происходить (1 / 16 000 000) * 256 = 16 микросекунд (0,000016).
Соответственно, что бы получить 1 секунду надо таких отрезков 62 500 (0,000016 * 62 500 = 1 сек.)
Что бы особо не мучиться с 16 битными числами я разбил на две 8 битные, т.е. 250 и 250.
Значит в прерывании по переполнению мы считаем первый счетчик, када он доходит до 250 мы увеличиваем второй и обнуляем первый.
Сразу что скажу что cksel биты не менял, они все отключены, значит частота должна быть нормальной. В коде не устанавливаю предделитель для таймера.
Внешнего кварца, как и осциллографа, не имею. замерить частоту не выходит. пробовал всю партию контроллеров (10 штук) результат один и тот же, либо у них у всех не 16 МГц, либо логика моих действий не верна.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
akl
сообщение Dec 20 2014, 09:56
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 127
Регистрация: 4-04-07
Из: Ижевск
Пользователь №: 26 773



С точностью до такта можно временной интервал формировать так. Писано для tiny13, но и для mega32 будет примерно также.
CODE
.INCLUDE "tn13def.inc"


.equ Fo=7890123
;.equ Fo=8000000


.org $0000
.CSEG
RJMP START
.org $0003
TIMER0_OVER:
SBIW YL,1
RET
.org $0006
TIMER0_COMPA:
RET
;*******************************
START:
SBI DDRB,0

LDI YH,BYTE3(Fo-1)
LDI YL,BYTE2(Fo-1)
LDI R22,BYTE1(Fo-1)
OUT OCR0A,R22

LDI R22,1<<SE
OUT MCUCR,R22 ; SLEEP IDLE

CLR R19
OUT TCCR0A,R19

LDI R21,1<<OCIE0A

LDI R20,1<<TOIE0
OUT TIMSK0,R20 ; разрешить прерывание переполнения
OUT TIFR0,R20

LDI R20,1
OUT TCCR0B,R20 ; старт Т0

SEI
WAIT:
SLEEP
BRNE PC-2

LDI R19,1<<WGM01
OUT TCCR0A,R19 ; режим сравнения с самоочисткой CTC

OUT TIMSK0,R21 ; разрешить прерывание сравнения
OUT TIFR0,R21
SEI
WAIT_COMP:
SLEEP
SBI PINB,0 ; инвертировать выход
RJMP START

.EXIT
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ishpanec   Таймеры atmega32a   Dec 19 2014, 09:57
- - zombi   Цитата(ishpanec @ Dec 19 2014, 13:57) рез...   Dec 19 2014, 14:11
- - Dust112   ishpanec, Вы раздел 8-bit Timer/Counter0 with PWM...   Dec 19 2014, 14:16
- - stells   Цитата(ishpanec @ Dec 19 2014, 12:57) есл...   Dec 19 2014, 14:26
|- - demiurg1978   У меня такой способ получить 1 мс при 8 и 16 мгц: ...   Dec 19 2014, 15:10
- - ishpanec   отвечу всем по порядку) Цитата(zombi @ Dec 1...   Dec 21 2014, 13:54
|- - ishpanec   Цитата(ishpanec @ Dec 21 2014, 14:54) не ...   Dec 21 2014, 15:17
|- - stells   Цитата(ishpanec @ Dec 21 2014, 16:54) что...   Dec 21 2014, 16:29
|- - demiurg1978   Цитата(ishpanec @ Dec 21 2014, 19:54) с С...   Dec 22 2014, 21:53
- - zombi   получается Internal Calibrated RC Oscillator 1 MHz...   Dec 21 2014, 16:06
- - ishpanec   да, уже разобрался, всем спасибо за помощь!) п...   Dec 21 2014, 18:19
- - akl   Ваш код дает интервал 1 секунды, за счёт сравнений...   Dec 22 2014, 04:18
- - alexeyv   Зачем для этой цели использовать 8-ми разрядный сч...   Dec 22 2014, 04:39
|- - akl   Цитата(alexeyv @ Dec 22 2014, 09:39) Не п...   Dec 22 2014, 05:57
||- - RabidRabbit   Цитата(akl @ Dec 22 2014, 08:57) Проще, к...   Dec 22 2014, 07:35
||- - akl   Цитата(RabidRabbit @ Dec 22 2014, 12:35) ...   Dec 22 2014, 09:43
||- - RabidRabbit   Цитата(akl @ Dec 22 2014, 12:43) По мне, ...   Dec 23 2014, 08:47
|- - ishpanec   Цитата(alexeyv @ Dec 22 2014, 05:39) Не п...   Dec 22 2014, 12:43
- - akl   Каждое прерывание Т0, в котором дополнительно чист...   Dec 22 2014, 14:03
|- - ishpanec   Цитата(akl @ Dec 22 2014, 15:03) в которо...   Dec 22 2014, 14:47
- - akl   Да, действительно, период будет 256*30821=7890176/...   Dec 24 2014, 03:17
- - RabidRabbit   Я одного не понимаю, после первого переполнения в ...   Dec 24 2014, 11:17


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 01:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.03095 секунд с 7
ELECTRONIX ©2004-2016