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

 
 
> ШИМ в ATtiny13
dominator
сообщение Feb 7 2011, 22:14
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 7-02-11
Пользователь №: 62 780



Добрый вечер!

Пытаюсь сделать светящийся кристал, который был не так давно описан на хабре: http://habrahabr.ru/blogs/DIY/111671/ (там код для ATtiny13, снизу страницы ссылки на две другие части описания). Общая идея в том, что при прикосновении человека должен постепенно разгораться светодиод, потом - гаснуть. Все вроде бы просто, исходный код программы есть, но почему-то не работает ШИМ.
Работаю в связке AVR Studio 4.16+WinAVR 2008-12-05+Proteus VSM. При отладке заметил, что при прохождении строки кода TCCR0A=0x83 вместо значения 0х83 (COM0A1, WGM01, WGM00) этому параметру присваивается значение 0х30 (COM0B1, COM0B0). Может, кто подскажет, почему такое может быть? Рад буду любым идеям.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dominator
сообщение Feb 21 2011, 10:35
Сообщение #2





Группа: Новичок
Сообщений: 7
Регистрация: 7-02-11
Пользователь №: 62 780



Сюдя по всем проблема возникает после прохождения вот этих строчек кода:
Код
                //Здесь инициализируется вотчдог таймер и режим энергосбережения
                //В процессе отладки пользовался ассемблером, и не стал менять обратно
                //То же самое можно написать и с использованием библиотечных функций
                sei();        
                __asm__ __volatile__("in   r16, 0x21");
                __asm__ __volatile__("ori r16, 0b00011000");
                __asm__ __volatile__("out 0x21 ,r16");
                __asm__ __volatile__("ldi r16, 0b01000111");
                __asm__ __volatile__("out 0x21 ,r16");
                __asm__ __volatile__("ldi r16 ,0b00110000");
                __asm__ __volatile__("out 0x35 ,r16");
                __asm__ __volatile__("sleep");            
                           //сюда мы вернемся уже через 1 секунду, из прерывания

Быть может, кто-то подскажет какие флаги оптимизации должны стоять, чтобы этот код нормально обрабатывался. Сейчас что-то вроде этого:

Код
## Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d

## Assembly specific flags
ASMFLAGS = $(COMMON)
ASMFLAGS += $(CFLAGS)
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2


Go to the top of the page
 
+Quote Post



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

 


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


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