| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Непонятная гадость tiny13/winavr
25.07.2012, 14:15
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Непонятная гадость tiny13/winavr
Задача - плавно зажечь 5 пин по очереди, потом также по очереди потушить
|
Код:
|
/* ПИНЫ */
#define POT PB5
#define CH1 PB3
#define CH2 PB4
#define CH3 PB0
#define CH4 PB2
#define CH5 PB1
...
//задержки
void delayms(uint16_t _delay) {
for(;_delay;_delay--)
_delay_ms(1);
}
void delayus(uint16_t _delay) {
for(;_delay;_delay--)
_delay_us(1);
}
//запись в пин
static inline void pinwrite(uint8_t _pin, uint8_t _state) __attribute__((always_inline));
void pinwrite(uint8_t _pin, uint8_t _state) {
if(_state == 1) PORTB |= (1‹‹(_pin));
else PORTB &= ~(1‹‹(_pin));
}
....
void fade_on(uint8_t _pin, uint8_t _delay) {
for (uint8_t step1 = 0; step1 ‹= FADE_CYCLES; step1 ++)
for (uint8_t step2 = 0; step2 ‹= FADE_CYCLES; step2 ++) {
if (step1 › step2) pinwrite(_pin, 1);
else pinwrite(_pin, 0);
delayus(_delay);
}
pinwrite(_pin, 1);
}
void fade_off(uint8_t _pin, uint8_t _delay) {
for (uint8_t step1 = 0; step1 ‹= FADE_CYCLES; step1 ++)
for (uint8_t step2 = 0; step2 ‹= FADE_CYCLES; step2 ++) {
if (step2 › step1) pinwrite(_pin, 1);
else pinwrite(_pin, 0);
delayus(_delay);
}
pinwrite(_pin, 0);
}
....
главное тело
//работа эффектов
switch (select) {
case 0: //эффект бегущего огня
..
break;
case 1: //нарастание-угасание
//зажечь
switch (_temp) {
//зажечь
case 1: fade_on(CH1, speed); break;
case 2: fade_on(CH2, speed); break;
case 3: fade_on(CH3, speed); break;
case 4: fade_on(CH4, speed); break;
case 5: fade_on(CH5, speed); break;
//потушить
case 6: fade_off(CH1, speed); break;
case 7: fade_off(CH2, speed); break;
case 8: fade_off(CH3, speed); break;
case 9: fade_off(CH4, speed); break;
case 10: fade_off(CH5, speed); break;
}
_temp++;
if(_temp › 10) _temp = 1;
delayms(speed);
break;
case 2: //плавное мигание всеми пинами
..
break;
}
} |
код не весь, но основное. Глюк в эффекте switch (select) / case 1
Должно в соответствии с шагом в _temp зажигать либо тушить пин по очереди. Вроде все просто.
В реале - загорается CH1, секунда, тухнет, одновременно загораются оставшиеся и уже потом оставшиеся корректно гасятся по очереди.
Чо за на?
|
|
|
|
25.07.2012, 14:28
|
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: непонятная гадость tiny13/winavr
А если _temp объявить как volatile ???
|
|
|
|
25.07.2012, 16:10
|
|
|
Прописка
Регистрация: 23.09.2008
Сообщений: 158
Сказал спасибо: 24
Сказали Спасибо 24 раз(а) в 24 сообщении(ях)
|
Re: Непонятная гадость tiny13/winavr
Это не поможет? В 4 посте есть исходник подобной конструкции.
|
|
|
|
Сказали "Спасибо" Sinthez
|
|
|
25.07.2012, 16:13
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Непонятная гадость tiny13/winavr
Сообщение от st__1
|
|
А если _temp объявить как volatile ???
|
так и объявлено
дело было не в бобине.. почему то если включался первый мосфет, другим нехватало чего то включаться. P-мосфеты, через npn BCR533 с подтяжкой к плюсу.
Почистил плату, прошелся припоем по дорогам, потыкал паяльником повезде в общем - завелось. Как то так)
Три часа на поиск глюка не там..
|
|
|
|
25.07.2012, 21:24
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Непонятная гадость tiny13/winavr
я только счас допетрил до конца проблему..
состояние мосфетов мониторил светодиодами, катоды через один общий резистор..
первый диод был с другим напряжением.. Пока он не гасился, другие не зажигались
то есть проблемы вообще не было со стороны платы
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Светодиод + Tiny13
|
putmannn |
Микроконтроллеры, АЦП, память и т.д |
7 |
19.12.2011 14:06 |
|
Детектор нуля и Tiny13
|
pve70 |
Микроконтроллеры, АЦП, память и т.д |
111 |
11.04.2010 19:32 |
|
tiny13 и powerdown
|
-wired- |
Электроника - это просто |
1 |
31.03.2010 18:54 |
|
VmLab и tiny13
|
alevladel |
Микроконтроллеры, АЦП, память и т.д |
2 |
03.02.2010 09:57 |
|
TINY13
|
280959 |
Микроконтроллеры, АЦП, память и т.д |
10 |
16.10.2009 10:53 |
Часовой пояс GMT +4, время: 00:06.
|
|