|
|
  |
Не могу запустить Timer0 в ATtiny261 |
|
|
|
Dec 1 2008, 08:55
|

Профессионал
    
Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360

|
Подскажите взглядом со стороны, в чем ошибка? Утро убил, понять не могу. Собственно хочу запустить таймер с переполнением 1мСек Код void init_mk(void) { ACSRA=0x80; //запрет компаратора
DDRB =0b01000010; //PB1,PB3,PB6 - выхода PORTB=0b10110000; //подтягивающие резисторы на входах PB4,PB5 DDRA =0b11111100; //PA2,PA3,PA4,PA5,PA6,PA7 PORTA=0b00000000;
wdt_enable(WDTO_2S); //сторожевой таймер 2 сек DIDR0=0x00; DIDR1=0x00; ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1); //разрешение АЦП 125кГц
PLLCSR=(1<<PLLE); // Enable the PLL _delay_us(100); while ((PLLCSR & 1)==0); // Wait for the PLL to lock PLLCSR|=0x04;//PLLCSR=(1<<PCKE); // Enable the 64MHz clock
TCCR1A=(1<<COM1A1)|(1<<PWM1A); //настройка режима таймера1 TCCR1B=(1<<CS11)|(1<<CS10); //настройка делителя таймера1 OCR1A=0x01; //начальное значение таймера1
TCCR0B=(1<<CS01)|(1<<CS00); //установка делителя 64 для Timer0 TCNT0H=0x00; TCNT0L=0x83; //начальное значение период 1 mS
TIMSK=(1<<TOIE0); //разрешение прерывания при переполнении Timer0
} Заранее спасибо!
--------------------
Андрей Смирнов
|
|
|
|
|
Dec 1 2008, 09:31
|

Профессионал
    
Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409

|
У вас нигде нет инициализации TCCR0A (определяет режимы работы) и вы не указали частоту на которой пытаетесь заставить работать ТС0. Если TCCR0A не инициализирован то непонятно в каком режиме он будет работать. Посмотрел по документации на описание регистров вроде должно быть так: Код TCCR0A = 0x00; //тут WGM00 установит режим работы Normal а TCW0 восьмибитный режим TCCR0B=(1<<CS01)|(1<<CS00); //установка делителя 64 для Timer0 TCNT0H=0x00; TCNT0L=0x83; //а можно попробовать так TCNT0=0x0083 пусть компилятор сам разбирается с порядком TIMSK=(1<<TOIE0); //разрешение прерывания при переполнении Timer0 доступа Если вы использует ппрерывание по переполнению то не забывайте в нём заново инициализировать счётный регистр Код TCNT0H=0x00; TCNT0L=0x83; Я обычно для таких случаев использую прерывание по совпадению и режим сброс по совпадению CTC (бит WGM0=1 в TCCR0A). Удобно т.к. не нужно каждый раз реинициализировать счётный регистр.
|
|
|
|
|
Dec 1 2008, 09:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008

|
Цитата Возможно, проблема в порядке заполнения старших и младших байтов регистра? Вообще то компилятор с таким сам разбирается, хотя можно проверить на этот счем асм файл. Или вы про Код TCNT0H=0x00; TCNT0L=0x83; Pyku_He_oTTyda а вы опишите что у вас сейчас происходит, таймер вообще не считает или считает но с другим периодом? В AVR Studio как код себя ведет?
--------------------
|
|
|
|
|
Dec 1 2008, 09:52
|

Профессионал
    
Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360

|
Таймер не считает вообще, ни в железе, ни в студии. TCNT0L стоит как вкопанный со значением 0x83. Студия 4.15, WinAVR 20060421 Цитата Если вы использует ппрерывание по переполнению то не забывайте в нём заново инициализировать счётный регистр не забыл, просто не привел этот кусочек
--------------------
Андрей Смирнов
|
|
|
|
|
Dec 1 2008, 11:38
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
Уважаемые! Цитата из AVR Studio Simulator Help: Цитата Notes for Attiny261/461/861 Timer/Counter0 and Timer/Counter1 are not simulated по-моему, это ответ на ваши проблемы...
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
Dec 1 2008, 12:04
|

Профессионал
    
Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360

|
Цитата ARV Да, конечно, полностью. Спасибо! А куда они эту строчку запихали?
--------------------
Андрей Смирнов
|
|
|
|
|
Dec 1 2008, 12:12
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
Цитата(Pyku_He_oTTyda @ Dec 1 2008, 15:04)  А куда они эту строчку запихали? дык в help же и запихали  В меню студии идем Help - Release Notes and known issues, далее внизу страницы Simulator user guides, ну а там снова внизу Known issues. Но это еще не все - снова внизу странички список поддерживаемых девайсов, и вот уже тут щелчок на нужном откроет списочек конкретных ограничений
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|