kapitaneo 0 2 февраля, 2010 Опубликовано 2 февраля, 2010 · Жалоба Здравствуйте. Помогите разобраться, что неправильно? Не получается получить прерывания по переполнению. Пишу в codevision. Проверяю в протэусе. Программа прилагается. t1.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Xenia 35 2 февраля, 2010 Опубликовано 2 февраля, 2010 · Жалоба 1) Уберите задержки из процедуры обработки прерывания, только придурки их там ставят :). Изобразите что-нибудь по-проще, например: { TCNT1H = n1; // Reinitialize Timer TCNT1L = n2; PORTC.3 ^= 1; // Bit 0 inverse } Здесь операция XOR инвертирует младший бит C-порта. Т.е. после отработки прерывания этот бит будет заменяться на противоположный. Если на этом пине висит светодиод, то он будет моргать с частотой вдвое медленней, чем частота таймера (первый такт горит, второй не горит). 2) Разрешите прерывания! По умолчанию они запрещены: TIFR = 0x4; // TOV1, только T1 используется TIMSK = 0x4; // TOIE1 3) делитель поставьте, хотя бы для начала: TCCR1B = 0x3; // делитель - 64 Потом убавите, а то слишком быстро мигать будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 3 февраля, 2010 Опубликовано 3 февраля, 2010 · Жалоба 1) Уберите задержки из процедуры обработки прерывания, только придурки их там ставят :). Это в FAQ надо вынести! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vv_gulyaev 0 3 февраля, 2010 Опубликовано 3 февраля, 2010 · Жалоба Недавно начал изучать программирование МК, поэтому осмелюсь спросить, что плохого в задержках в обработчиках прерываний? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 120 3 февраля, 2010 Опубликовано 3 февраля, 2010 · Жалоба что плохого в задержках в обработчиках прерываний?То, что пока вы в этом прерывании ничего не делаете, все остальные прерывания стоят в очереди вместо того, чтобы обработаться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 3 февраля, 2010 Опубликовано 3 февраля, 2010 · Жалоба что плохого в задержках в обработчиках прерываний? Представьте себе систему(МК), в которой все дышит - она(оно) обрабатывает какие-то события, которые получает из разных источников прерываний, что-то считает, формирует какие-то управляющие сигналы. А потом приходит лесник с плохо стриженной бородой, и топором хрясь... и вешает всю систему, позволяя ей только одно - тупо перебирать инструкции nop/jmp. Это нехорошо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mp41 0 3 февраля, 2010 Опубликовано 3 февраля, 2010 · Жалоба А ещё, покуда длится задержка, таймер может несколько раз переполниться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kapitaneo 0 3 февраля, 2010 Опубликовано 3 февраля, 2010 (изменено) · Жалоба 1) Уберите задержки из процедуры обработки прерывания ... 2) Разрешите прерывания! По умолчанию они запрещены: ... 3) делитель поставьте, хотя бы для начала: Спасибо, но задача состоит немного в другом. Я на вход таймера PIND.5(Т1) подаю импульсы и использую Т1 pin Rising Edge, тактируется от внешнего генератора, подключенного к выводу Т1, по нарастающему фронту поэтому TCCR1B=0x07. После отсчета 21 импульса (TCNT1=n1,n2) по переполнению должно идти прерывание. И вот следующий импульс делить на два импульса (для этого и задержки). Интересно вот, что нулевой таймер работает нормально, а первый, ГАДЮКА :(, нет. А мне нужны они оба. КАК ЗАПУСТИТЬ? ЗАРАНЕЕ ВСЕМ СПАСИБО. Изменено 3 февраля, 2010 пользователем rezident Излишнее цитирование. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 6 февраля, 2010 Опубликовано 6 февраля, 2010 · Жалоба а первый, ГАДЮКА :(, нет. это потому что if((PIND.3==0)&(PIND.0==1)&(PIND.1==1)&(PIND.2==1)) и то, что "CV мастер проекта" навставлял, заслуживает отдельного места вот здесь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться