Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
03.12.2011, 23:56
|
|
Вид на жительство
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
|
Re: Мигание светодиодом :)
Ладно с этим разобрался.
Почему D1 и D3 работают синхронно? Может TMR2 не правильно настроил?
Схема и программа во вложении.
Вложения:
|
22.rar (39.0 Кб, 36 просмотров) |
|
|
|
|
04.12.2011, 01:36
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Мигание светодиодом :)
Slava-martyn, у Вас программа написана с избытком (флаги дублируют друг друга). Об этом здесь уже говорилось.
В данном случае прерывания можно вообще не включать, а только контролировать флаги этих прерываний. Ну, в общем, после оптимизации Вашей программы вот, что получилось.
PHP код:
|
MAIN
clrwdt
movlw b'00001000'
LED0
btfss INTCON, T0IF
goto LED1
iorlw b'00000001'
bcf INTCON, T0IF
LED1
btfss PIR1, TMR1IF
goto LED2
iorlw b'00000010'
bcf PIR1, TMR1IF
LED2
btfss PIR1, TMR2IF
goto LED_END
iorlw b'00000100'
bcf PIR1, TMR2IF
LED_END
xorwf LED, W
movwf LED
movwf PORTD
goto MAIN
END
|
|
|
|
|
04.12.2011, 12:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от Slava-martyn
|
Почему D1 и D3 работают синхронно?
|
Потому, что у TMR0 коэффициент деления 256 и флаг T0IF будет устанавливаться через 256*256=65536 циклов и флаг TMR2IF будет устанавливаться через 65536 циклов (предделитель - 16, постделитель - 16, получаем 16*16*256=65536).
|
|
|
|
04.12.2011, 12:59
|
|
Вид на жительство
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
|
Re: Мигание светодиодом :)
Эх хотел ведь написать... Избыточность нужна мне для наглядности, и сокращать программу не требуется. Вопрос в том, почему я не могу выставить другой период таймера №2 в МК? Почему он работает синхронно с TMR0?
Опередили
Да!
Но попробуйте его изменить, вот так например:
MOVLW b'00111001' ;
MOVWF T2CON ;
D1 и D3 также работают синхронно... Где-то в другом ошибка.
Последний раз редактировалось Slava-martyn; 04.12.2011 в 13:06.
|
|
|
|
04.12.2011, 14:18
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Мигание светодиодом :)
Сообщение от Slava-martyn
|
Эх хотел ведь написать... Избыточность нужна мне для наглядности, и сокращать программу не требуется. Вопрос в том, почему я не могу выставить другой период таймера №2 в МК? Почему он работает синхронно с TMR0?
Опередили
Да!
Но попробуйте его изменить, вот так например:
MOVLW b'00111001' ;
MOVWF T2CON ;
D1 и D3 также работают синхронно... Где-то в другом ошибка.
|
У Вас не разрешено прерывание по переполнению таймеров TMR1 и TMR2.
Вы к регистру PIE обращаетесь в банке 0, а он (PIE) находится в банке 1.
|
|
|
|
04.12.2011, 14:45
|
|
Вид на жительство
Регистрация: 07.09.2007
Адрес: Дерёвня Ишимбай
Сообщений: 419
Сказал спасибо: 65
Сказали Спасибо 136 раз(а) в 87 сообщении(ях)
|
Re: Мигание светодиодом :)
Исправил
PHP код:
|
BSF STATUS,RP0 ; Банк 1
BSF INTCON,T0IE ; Разрешить прерывания от TMR0
BSF PIE1,TMR1IE ; Разрешить прерывания от TMR1
BSF PIE1,TMR2IE ; Разрешить прерывания от TMR2
BSF INTCON,GIE ; Разрешить все прерывания
BCF STATUS,RP0 ; Банк 0
|
Но не помогло. А у Вас получилось?
|
|
|
|
04.12.2011, 15:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
|
Re: Мигание светодиодом :)
Вам надо еще разрешить прерывание от периферийных модулей (bsf INTCON, PEIE).
В общем, это еще раз подтверждает то, что излишества только усложняют отладку.
Это ни в коей мере не относится к Вам, я понимаю, что Вы экспериментируете и пытаетесь во всем разобраться, но в реальных устройствах, чем проще, тем лучше.
Последний раз редактировалось alvadep; 04.12.2011 в 15:42.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:42.
|
|