|
Порядок прерываний в AT90S2313 |
|
|
|
Mar 15 2006, 20:21
|
Участник

Группа: Новичок
Сообщений: 42
Регистрация: 12-03-06
Пользователь №: 15 158

|
Написал код для диммера на Bascom $regfile = "2313DEF.dat" $crystal = 4000000 Config Portb = Output
Config Portd.0 = Output ' Out for triac Config Portd.1 = Output ' Out for triac
Config Portd.2 = Input ' Input INT0
Config Portd.6 = Input ' Input manage lamp Config Portb.0 = Input ' Input manage lamp
Config Lcd = 16 * 2 'control LCD Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
Config Int0 = Falling
Config Timer0 = Timer , Prescale = 256 On Timer0 Timer0_isr
On Int0 Ind Enable Int0 Enable Timer0 Enable Interrupts
Dim Count As Byte Dim P7 As Bit , P0 As Bit Count = 75 Cls
Start Timer0 ' ' '156 - min , 2- max light
Do
Loop
Ind:
P7 = Pinb.0 P0 = Pind.6
If P7 = 0 And P0 = 0 Then Count = 156 End If
If P7 = 0 And P0 = 1 Then ' reduction of brightness
If Count < 156 Then Incr Count End If
End If
If P7 = 1 And P0 = 0 Then 'increase to brightness If Count > 2 Then Decr Count End If End If
Cls Lcd "In timer0" ; Count
Load Timer0,Count Start Timer0
Return
Timer0_isr: Stop Timer0
Set Portd.1 Set Portd.0 Waitms 20 Reset Portd.0 Reset Portd.1
Return
End
На общую шину и вывод пина 2 порта D через резистор заведены 6В. При переходе через ноль срабатывает прерывание по спаду - это видно на индикаторе (прилепил для контроля на макетке) Но не срабатывает таймер - на осциллографе не видны импульсы, хотя инкремент и декремент счетчика есть - это видно на том же индикаторе. Если в обработчике прерывания таймера поставить Load Timer0,Count Start Timer0 а в прерывании INT0 убрать запуск таймера, то возникает такая ситуация: Пока прерывание INT0 есть - нет прерывания по таймеру.Как только его убираешь - появляются импульсы, т.е начинает срабатывать прерывание по таймеру.Причем длительность импульсов пропорциональна Count. (Для справки Bascom инструкцией Load загружает требуемое значение в регистр таймера.Т.е. если написать Load Timer0,156 то в таймере окажется 100 (256-156) )
У меня вопрос.По таблице векторов INT0 имеет самый высокий приоритет.Означает ли это, что при входе в обработчик этого прерывания все остальные уже запрещаются?
|
|
|
|
|
 |
Ответов
|
Mar 18 2006, 16:06
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Если Вы стаивте прерывание по уровню, то как только Вы выходите из обработчика, (а сигнал на входе еще не успел изменится - на входе у Вас 50 гц), прерывание срабатывает снова. Это вряд ли то, чего, Вы добиваетесь.
Для коррекции нелинейности сделайте табличку соотвествия яркости и вашего управляющего параметра и зашейте ее в МК. 100 точек,я думаю, более чем достаточно для управления лампчкой.
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
|
Mar 18 2006, 19:13
|
Участник

Группа: Новичок
Сообщений: 42
Регистрация: 12-03-06
Пользователь №: 15 158

|
Цитата(DS_ @ Mar 18 2006, 19:06)  Если Вы стаивте прерывание по уровню, то как только Вы выходите из обработчика, (а сигнал на входе еще не успел изменится - на входе у Вас 50 гц), прерывание срабатывает снова. Это вряд ли то, чего, Вы добиваетесь. Вообще-то я руководствовался апнотом Zero Cross Detector - там показано, как через резистор 1Мом на INT0 заведена фаза.Правда там была Мега. А такой вариант подключения и обработка прерывания компаратора поможет?
Эскизы прикрепленных изображений
|
|
|
|
Сообщений в этой теме
SAU Порядок прерываний в AT90S2313 Mar 15 2006, 20:21 vet Прерывания в AVR запрещаются при входе в обработчи... Mar 15 2006, 20:24 impuls-v В микроконтроллерах AVR отсутствуют вложенные прер... Mar 15 2006, 22:19 Laksus ЦитатаConfig Int0 = Falling
...
Пока прерывание IN... Mar 15 2006, 23:21 SAU С прерываниями разобрался - поставил 20 мкс вместо... Mar 18 2006, 15:20  defunct Цитата(SAU @ Mar 18 2006, 21:13) А такой ... Mar 18 2006, 20:23   SAU Цитата(defunct @ Mar 18 2006, 23:23) 10 T... Mar 19 2006, 10:23    defunct Цитата(SAU @ Mar 19 2006, 12:23) Я пробов... Mar 19 2006, 13:13 DS_ Да он поточнее, конечно будет. Но проблема то не в... Mar 18 2006, 20:06 Laksus ЦитатаНо яркость регулируется как-то криво....
___... Mar 19 2006, 05:45 DS_ А Вы в обработчике прерываний переставляйте каждый... Mar 19 2006, 13:14 defunct Phase Correct PWM можно применить.. (с захватом то... Mar 19 2006, 13:26
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|