Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Tiny13. Таймер в режиме СТС.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
smk
Столкнулся с ситуацией, когда меандр, сгенерированный таймером, не проходит на вывод контроллера. В AVRstudio такая же ситуация. Вывод кажись сконфигурирован верно... хотя я уже ни в чем не уверен... Если у кого было подобное, подскажите где нужно хомутнуть чтоб получить такую ситуацию. Чтение даташита не дало ничего толкового в данном приложении. Файлик с кодом прицепляю...
smk
Ничего не понимаю... чтоб вот такое не заработало....

#include <tiny13.h>

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out
// State5=T State4=T State3=T State2=1 State1=0 State0=0
PORTB=0x04;
DDRB=0x07;


TCCR0B = 0x00; //stop
OCR0A = 0xBB;
OCR0B = 0xBB;
TCNT0 = 0x45; //set count
TCCR0A = 0x42;
TCCR0B = 0x04; //start timer


// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;

while (1)
{
// Place your code here

};
}

у меня уже ступор.... HELP!!!
smk
Если нет советов, то подскажите кто в курсе... Где в AVR Studio видно изменение состояния вывода OC0A? Если он подключен к выводу, будет ли меняться состояние регистра PORT? Состояние PIN меняется...
GDI
А во вкладке I/O View->I/O ATTINI13->"Соответствующий порт" - нету?
Судя по коду у вас CodeVisionAVR, а может воспользоваться мастером проекта, там вроде есть настройки выхода регистра сравнения.
GDI
Цитата
TCNT0 = 0x45; //set count
TCCR0A = 0x42;
TCCR0B = 0x04; //start timer

Почему это у вас начальное значение счетного регистра таймера больше чем значения регистров сравнения? Так и не будет ничего работать, т.е совпадения со значениями 0х42 и 0х04 никогда не произойдет.
smk
Цитата
А во вкладке I/O View->I/O ATTINI13->"Соответствующий порт" - нету?
Судя по коду у вас CodeVisionAVR, а может воспользоваться мастером проекта, там вроде есть настройки выхода регистра сравнения.


Нету ничего. Прога написана мастером.

Цитата
Почему это у вас начальное значение счетного регистра таймера больше чем значения регистров сравнения? Так и не будет ничего работать, т.е совпадения со значениями 0х42 и 0х04 никогда не произойдет.


Это ICC штучки... но не важно, он обнулится и на второй круг все пойдет чередом.
GDI
Цитата
Это ICC штучки... но не важно, он обнулится и на второй круг все пойдет чередом.

Да тут я попутал, причем попутал даже и регистры OCR0х и TCСR0х.
Могу посоветовать все же установить TCNT0 = 0 и разрешить прерывания по совпадению и в Студии проверить происходят ли эти прерывания. И еще в порт тоже не выводите ничего т.е. PORTB = 0.
sseett
Да у вас все должно работать, в студии на выходе счетчика сигнал меняется. Порт и выход счетчика, РАЗНЫЕ аппаратные узлы, подключенные к одному выводу в зависимости от конфигурации.
Состояние бита порта в вашем случае не должно менятся.
Удачи!
smk
sseett, спасибо! Так и поступлю.

И Вам удачи!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.