РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

Форум на ЭЛВО


РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ



  • Страница 1 из 1
  • 1
Архив - только для чтения
Прошу помощи, подобие стробоскопа
Сообщение # 1        
Fenix
аватар
  Постов: 5   ОК 
Всем доброго времени суток! С мк стал знакомится недавно, до этого только собирал и повторял готовое. Суть вот в чем:
МК - Attiny13. К нему подключены три светодиода
Первый - вспыхивает как стробоскоп 1 раз в три секунды. Длительность вспышки 0,2 сек.
Второй - вспышка длительностью 0,2 сек, затем пауза 0,2 сек, затем опять вспышка длительностью 0,2 сек, затем пауза 1,4 сек. То есть цикл за 2 секунды
Третий вспышка длительностью 0,2 сек через каждые 1,8 сек.
Помогите пожалуйста, направьте в нужное русло. Заранее примного благодарен
Сообщение # 2        
Электродыч
аватар
  Постов: 3755   U 
Fenix, так вы конкретизируйте-чего нужно то-прошивку написать и схему разработать?Так этим вряд ли кто будет заниматься кроме вас.А если есть готовая схема-другое дело.
Сообщение # 3        
Fenix
аватар
  Постов: 5   ОК 
Электродыч, схема простейшая, да и прошивка, думаю не сложная. Просто МК начал изучать совсем недавно, очень нужна помощь

Добавлено (02.12.2015, 11:47)
---------------------------------------------
Просто мигание на 1 светодиод получить удалось, но вот как сделать так как нужно?

#include <avr/io.h>
#include <avr/interrupt.h>

//ISR(TIM0_OVF_vect)
ISR(SIG_OVERFLOW0)
{
PORTB ^= 0x01;
TCNT0 = (256 - 234);
}

int main(void)
{
PORTB = 0b00111111;
DDRB = 0b00000001;

TCCR0A = 0;
TCCR0B = 0b00000101;
TCNT0 = (256 - 234);
TIMSK0 = 0b00000010;
sei();
while (1) {}
}
Файлы: 6970058.jpg (92.8 Kb)
Сообщение # 4        
Витинари
аватар
  Постов: 1503   Друзья 
Fenix, опишу в общих чертах:
посмотрите на заданные временные промежутки - они все кратны 0.2 с. Настраиваете таймер на прерывание каждые две десятых секунды, заводите отдельные переменные, которые инкрементируются на 1 по прерыванию таймера, и, соответственно, в функции прерывания оставляете только прибавление этих переменных (можно, конечно, сделать и на одной переменной, но это будет несколько сложнее). Не забудьте сделать обнуление, когда каждая переменная достигает определенного значения (например, полный цикл мигания первого светодиода занимает 3 секунды, 3/0.2=15; то есть когда переменная, отвечающая за мигание первого светодиода, станет больше либо равна 14, ей присваивается значение 0, и цикл повторяется снова).
В цикле while добавляете проверку этих переменных на определенные значения (которые равны времени в секундах, деленному на 0.2 - длительность одного прерывания), и когда значение той или иной переменной совпадает со значением в условии, подаете на нужную ногу контроллера 1 или 0.
Сообщение # 5        
Fenix
аватар
  Постов: 5   ОК 
Витинари, а вам не сложно сделать это наглядно? просто начал мк изучать недавно, очень трудно пока понимается на словах. Благодарю заранее

Добавлено (03.12.2015, 02:00)
---------------------------------------------
Вопрос закрыт. Всё получилось. Спасибо всем за участие и помощь!!!

Сообщение # 6        
Витинари
аватар
  Постов: 1503   Друзья 
Fenix, я под пики программирую, так что саму реализацию процесса описать могу, но непосредственно с вариантами языка C под AVR и с их архитектурой дела пока не имел.
  • Страница 1 из 1
  • 1
Поиск:

Внимание! Форум переехал на Tehnodium.ru



© 2010-2022 "Форум Радиосхемы". All Rights Reserved  Почта  PDA