Если делать качественный светодиодный индикатор двух прерываний вряд-ли хватит, тем более при том, что помимо индикации еще и задачи ввода/обработки делать необходимо. И ВСЕ на одном кристалле.
Ежли вывести управление светодиодным табло на отдельную мелкосхемку с собственными мозгами - дело несколько упростится (то же касается индикаторов ЖКИ, имеющих свой контроллер).
Однако чаще стараются "мелкий" проект в одну корпусину запихерить, а в таком случае без кучки прерываний "с выпендрежом" не обойтись.
[uquote="ozonn",url="/forum/viewtopic.php?p=3421930#p3421930"][uquote="afz",url="/forum/viewtopic.php?p=3421895#p3421895"]Сейчас нет. Потом, в процессе отладки или доработки понадобится второе, и приплыли.[/uquote]
а если и потом не понадобится?
я это все к тому, что надо все делать с умом. Делал я как-то ампервольтметр для своего ЛБП. Использовал два прерывания, АЦП и таймер, для индикации. Основной цикл пустой. Теперь вопрос: откуда тут могут взяться еще какие-то прерывания? [/uquote]
Ну ты троль. Если, когда, зачем... просто делай сразу так ,чтобы потом не было мучительно больно за
потраченное время на быдлокод. 500 мс задержки в прерывании - это вечность.
Встречаются два мужика в пустыне. Один тащит телефонную будку, второй рельсу.
Тот что с рельсой спрашивает:
- Нафига тебе телефонная будка?
- Ну а вдруг на меня лев нападет?! Я в будку спрячусь, и он меня не съест! А ты зачем рельсу таскаешь?
- А вдруг львы?!
- И что?
- Ну дак я рельсу брошу и налегке от них убегу!
[uquote="ARV",url="/forum/viewtopic.php?p=3421947#p3421947"]есть правильный подход, который ВСЕГДА дает хороший реззультат, а есть подход, который дает результат ЕСЛИ. знать о таком подходе - плюс, а пользоваться им повседневно на регулярной основе - минус.[/uquote]
я и не пользуюсь. Я просто не люблю усложнять на ровном месте
TCCR1B = 0;
TCCR1A = 0;
TCCR1B |= (1<<WGM12); // устанавливаем режим СТС (сброс по совпадению) для первого таймера
// OCR1AH = 0xFF; //записываем в регистр число для сравнения - старшый байт
// OCR1AL = 0x7F; //записываем в регистр число для сравнения - младший байт
OCR1A = 4000; //записываем в регистр число для сравнения
TCCR1B |= ( 1 << CS12 ) | ( 1 << CS10 );//устанавливаем предделитель на 1024
TIMSK1 |= (1<<OCIE1A); // Разрешить прерывание по совпадению OCR1A
//TIMSK1 |= (1<<OCIE1B); // Разрешить прерывание по совпадению OCR1B
//TIMSK1 |= (1<<TOIE1); // Разрешить прерывание по переполнению
Канал B осциллографа в Протеусе подключён к ноге PC2, на которой в ISR (TIMER1_COMPA_vect )меняется высокий уровень на низкий, каждый
полупериод меандра должен быть 205 милисек. = 1/(20000000/(4000*1024))
а он, почему то, то в 3 раза больше, то в 2 !
может в прерывание входит не сразу (не разрешены по какой то причине, I, например нет), может в прерывании не сразу скидывает (код то не видно)... а поднимает ногу кто?
Добавлено after 2 minutes 15 seconds:
посмотрел видимую часть сигнала - сбрасывается он вроде регулярно (интервалы между спадающими фронтами равны), а вот поднятие идет както поразному...
Для тех, кто не учил магию мир полон физики
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Я выложил весь тестовый проект (Таймеры.zip) для Atmel studio 6.2, там же внутри проэкт для Proteus 8.7
Кстати, если закомментировать блок настроек относящиеся к таймеру0, то таймер1 перестаёт работать вообще
(кажется это происходит после одного срабатывания) !
что за хрень вы наворотили? что вы там пытаетесь сгенерировать?
просто меандр генерируется без всяких прерываний чисто аппаратно
в двух разных прерываниях от разных таймеров переключать один и тот же вывод и удивляться, что длительность странно меняется?! а вы чего ждали-то?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
[uquote="Zat",url="/forum/viewtopic.php?p=3421960#p3421960"]Ну ты троль. Если, когда, зачем... просто делай сразу так ,чтобы потом не было мучительно больно за
потраченное время на быдлокод. 500 мс задержки в прерывании - это вечность.[/uquote]
я сразу сделал "не так" и мне не больно, все работет. А у тебя я спросил, откуда в вольтметре возьмется еще одно прерыване. От сырости?
Вы как роботы, сказали вам что в прерывании низзя и все тут. Нет шоп моск включить, хотя бы на мгновение