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

 
 
 
Reply to this topicStart new topic
> Tiny13. Таймер в режиме СТС., сигнал не проходит на вывод, сконфигурировано верно
smk
сообщение Mar 4 2007, 18:04
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Столкнулся с ситуацией, когда меандр, сгенерированный таймером, не проходит на вывод контроллера. В AVRstudio такая же ситуация. Вывод кажись сконфигурирован верно... хотя я уже ни в чем не уверен... Если у кого было подобное, подскажите где нужно хомутнуть чтоб получить такую ситуацию. Чтение даташита не дало ничего толкового в данном приложении. Файлик с кодом прицепляю...
Прикрепленные файлы
Прикрепленный файл  code.txt ( 2.37 килобайт ) Кол-во скачиваний: 230
 


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
smk
сообщение Mar 4 2007, 20:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Ничего не понимаю... чтоб вот такое не заработало....

#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!!!


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
smk
сообщение Mar 6 2007, 14:02
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Если нет советов, то подскажите кто в курсе... Где в AVR Studio видно изменение состояния вывода OC0A? Если он подключен к выводу, будет ли меняться состояние регистра PORT? Состояние PIN меняется...


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
GDI
сообщение Mar 6 2007, 16:04
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



А во вкладке I/O View->I/O ATTINI13->"Соответствующий порт" - нету?
Судя по коду у вас CodeVisionAVR, а может воспользоваться мастером проекта, там вроде есть настройки выхода регистра сравнения.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
GDI
сообщение Mar 6 2007, 16:38
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата
TCNT0 = 0x45; //set count
TCCR0A = 0x42;
TCCR0B = 0x04; //start timer

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


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
smk
сообщение Mar 6 2007, 17:15
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



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


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

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


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


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
GDI
сообщение Mar 6 2007, 17:49
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



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

Да тут я попутал, причем попутал даже и регистры OCR0х и TCСR0х.
Могу посоветовать все же установить TCNT0 = 0 и разрешить прерывания по совпадению и в Студии проверить происходят ли эти прерывания. И еще в порт тоже не выводите ничего т.е. PORTB = 0.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
sseett
сообщение Mar 7 2007, 12:23
Сообщение #8


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

Группа: Участник
Сообщений: 165
Регистрация: 14-01-05
Из: РФ Приморский край (рег.25)
Пользователь №: 1 939



Да у вас все должно работать, в студии на выходе счетчика сигнал меняется. Порт и выход счетчика, РАЗНЫЕ аппаратные узлы, подключенные к одному выводу в зависимости от конфигурации.
Состояние бита порта в вашем случае не должно менятся.
Удачи!

Сообщение отредактировал sseett - Mar 7 2007, 12:25
Go to the top of the page
 
+Quote Post
smk
сообщение Mar 7 2007, 13:52
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



sseett, спасибо! Так и поступлю.

И Вам удачи!


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post

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

 


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


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