07.11.2016, 19:20
|
|
Частый гость
Регистрация: 14.10.2016
Сообщений: 21
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Не работает плавное включение светодиода с помощью ШИМа
Столкнулся с проблемой. Код:
list p=16f628a ; list directive to define processor
#include "p16f628A.inc" ; processor specific variable definitions
__CONFIG _FOSC_INTOSCCLK & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF
; '__CONFIG' directive is used to embed configuration data within .asm file.
; The labels following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.
;‹editor-fold defaultstate="collapsed" desc="comment"›
;***** VARIABLE DEFINITIONS (examples)
; example of using Shared Uninitialized Data Section
INT_VAR UDATA_SHR
w_temp RES 1 ; variable used for context saving
status_temp RES 1 ; variable used for context saving
INTCOUNTER RES 1
; example of using Uninitialized Data Section
TEMP_VAR UDATA 0x20 ; explicit address specified is not required
temp_count RES 1 ; temporary variable (example)
; example of using Overlayed Uninitialized Data Section
; in this example both variables are assigned the same GPR location by linker
G_DATA UDATA_OVR ; explicit address can be specified
flag RES 1 ; temporary variable (shared locations - G_DATA)
G_DATA UDATA_OVR
count RES 1 ; temporary variable (shared locations - G_DATA);‹/editor-fold›
;************************************************* *********************
RESET_VECTOR CODE 0x0000 ; processor reset vector
goto start ; go to beginning of program
INT_VECTOR CODE 0x0004 ; interrupt vector location === прерывание ===
INTERRUPT
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
; isr code can go here or be located as a call subroutine elsewhere
MOVLW 0xF8 ;проверка на равенство
XORWF CCPR1,w ;проверка на равенство
btfsC STATUS,Z ;проверка на равенство
SLEEP ;по достижении максимального значения шим,
; контроллер уходит в сон(энергосберегающий режим)
; сохраняя состояние выходов.
INCF CCPR1,F ;приращение длительности положительного уровня в шим
BCF PIR1,TMR2IF ;сброс флага прерывания от постделителя TMR2
; isr code can go here or be located as a call subroutine elsewhere
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
RETFIE ; return from interrupt == возврат из прерывания ==
MAIN_PROG CODE
start
; настройки-------------------------------------------------------------
CLRF STATUS ;
clrf PORTB ;очистка порта B
banksel TRISB ;смена банка
bcf TRISB,0 ;установка бита на выход
bcf TRISB,3 ;установка бита на выход
;-------------------------
;-------------------------
MOVLW 0xFA ;
MOVWF PR2 ;период шим
banksel CCP1CON ;смена банка
movlw b'00000010' ;?
movwf CCPR1L ;длительность импульса старший байт
;-------------------------
CLRF TMR2 ;очистка таймера
MOVLW b'1111101' ;
movwf T2CON ;настройка предделителя на 4 и включение таймера
;-------------------------
movlw b'111100' ;?
movwf CCP1CON ;длительность импульса младшие 2 бита ‹5›:‹4› включение шим
;-------------------------
CLRF PIR1 ;очистка флагов переферийных прерываний
BSF INTCON,PEIE ;включение(снятие маски) переферийных прерываний
BANKSEL PIE1 ;смена банка
BSF PIE1,TMR2IE ;включение(снятие маски) прерывания от TMR2
BANKSEL INTCON ;смена банка
BSF INTCON,GIE ;включение всех немаскированых прерываний
;-------------------------
;nop ; code starts here (example)
;banksel count ; смена банка
clrf count ; example
main ;главная программа
; remaining code goes here
NOP
goto main
END ; directive 'end of program'
В протеусе импульсы плавно изменяют скважность, собираю на макетной плате, просто моргание светодиода, в чем проблема??
|
|
|
|
07.11.2016, 19:24
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,700
Сказал спасибо: 189
Сказали Спасибо 3,191 раз(а) в 2,068 сообщении(ях)
|
Re: Не работает плавное включение светодиода с помощью ШИМа
ох мать...........
а на осциллографе что показывает?
__________________
кагмаподэ магмаподэ
|
|
|
|
07.11.2016, 19:28
|
|
Частый гость
Регистрация: 14.10.2016
Сообщений: 21
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не работает плавное включение светодиода с помощью ШИМа
индюк, добрый день!На осцилляторе показывает тоже самое что и в протеусе, я цеплял в живую, программа не уходит в спящий режим почему то, а есть схема для плавного включения светодиода?
|
|
|
|
07.11.2016, 19:41
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,700
Сказал спасибо: 189
Сказали Спасибо 3,191 раз(а) в 2,068 сообщении(ях)
|
Re: Не работает плавное включение светодиода с помощью ШИМа
ну так ты выложи что на осциллографе то!! а то говорим ни о чем
__________________
кагмаподэ магмаподэ
|
|
|
|
07.11.2016, 19:49
|
|
Частый гость
Регистрация: 14.10.2016
Сообщений: 21
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не работает плавное включение светодиода с помощью ШИМа
индюк, смогу выложить завтра т.к. временно разобрал макетную плату, вопрос в том что почему в протеусе одно а в железе другое, в протеусе программа ушла в sleep и должен просто гореть светодиод, а в железе импульс меняется то низкий то высокий логический уровень поэтому и моргание светодиода. Я хочу сделать ШИМ для плавного включения но пока не разобрался..При подаче напряжения на проц светодиод плавно загорается и потом просто горит и все, в инете особо на PIC ничего подобного не нашел, там либо с помощью кнопок меняется либо по другому
|
|
|
|
07.11.2016, 19:52
|
|
Прописка
Регистрация: 25.11.2006
Адрес: Харьков
Сообщений: 295
Сказал спасибо: 25
Сказали Спасибо 71 раз(а) в 60 сообщении(ях)
|
Re: Не работает плавное включение светодиода с помощью ШИМа
Сообщение от Дмитрий_58
|
В протеусе импульсы плавно изменяют скважность, собираю на макетной плате, просто моргание светодиода, в чем проблема??
|
Возможно, проблема в скорости этого "плавного изменения". Не всегда то, что заметно на приборах, можно увидеть невооруженным взглядом.
|
|
|
|
07.11.2016, 19:53
|
|
Частый гость
Регистрация: 14.10.2016
Сообщений: 21
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не работает плавное включение светодиода с помощью ШИМа
Возможно частота большая??А если попробовать через внешнюю RC цепь?
|
|
|
|
07.11.2016, 19:59
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,700
Сказал спасибо: 189
Сказали Спасибо 3,191 раз(а) в 2,068 сообщении(ях)
|
Re: Не работает плавное включение светодиода с помощью ШИМа
Сообщение от Дмитрий_58
|
А если попробовать через внешнюю RC цепь?
|
тогда просто возми переменный резистор и проц не нужен.)))))
больше 400 герц глаз любой шим не видит в принципе
__________________
кагмаподэ магмаподэ
|
|
|
|
07.11.2016, 20:06
|
|
Частый гость
Регистрация: 14.10.2016
Сообщений: 21
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не работает плавное включение светодиода с помощью ШИМа
Нет, такая схема мне не нужна
|
|
|
|
07.11.2016, 20:27
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,700
Сказал спасибо: 189
Сказали Спасибо 3,191 раз(а) в 2,068 сообщении(ях)
|
Re: Не работает плавное включение светодиода с помощью ШИМа
Тогда учись программировать и смотреть в осцил.
Допиливание сигнала навесными схемами это треш. В цифровых системах на выходе не должно быть ничего кроме резистора
__________________
кагмаподэ магмаподэ
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:11.
|
|