Thanks alot, Vasile! Your replies are important for me.
I will answer by blocks of you reply:

понедельник, 11 апреля 2016 г., 20:18:30 UTC+3 пользователь vasile написал:
>
> Anatoly,
> You don't need any interrupt to read the encoder and set the pwm value.
> Just do the following trick: set TMR0 for overflow at x mS (where x is the 
> perfect match for your encoder speed, try x=10 or so). Read the enc_a and 
> enc_b inputs only when TMR0_IF owerflows. Then reset the TMR0_IF. Increment 
> (enc_a) or decrement (enc_b) the pwm dutycicle register.
>

*I can do it using parts of code from timer slots library, it is written 
very simple and understandeful. *

>
> Use the pwm_hardware library from Jallib pack. Take a look how to use it 
> from the samples. There are a few examples for 12F683. 
> PWM output of the CCP is GP2. First make your code to work for PWM only 
> using the ADC and a potmeter. Then replace ADC with your encoder routine.
>

*I used it much times, it is very easy to use ADC and PWM in JAL thanks to 
its creators.* 

>
> Sorry but I'm not able to write any code for you, I forgot everything...:)
> If doesn't work, try also to post your questions at yahoo jallist, there 
> are a lot of guys there which are eating code.
>

*I will try it if will be no result with interrupt on fade. Yes, I will try 
to use interrupt on pin anyway, it can be very useful in future. Thank you.*

>
> Vasile
>
> On Mon, Apr 11, 2016 at 7:27 PM, Anatoly Titov <[email protected] 
> <javascript:>> wrote:
>
>> Hello again! And thanks for reply!
>> Can you help me with new code using interrupts for the same task, it does 
>> not work and I don't mind why.I even switched off the PWM because it uses 
>> interrupts too (I think so). With no result =(
>> Code is small:
>> -- target PICmicro
>> include 12f683
>> pragma target CLOCK    8_000_000
>> pragma target OSC      INTOSC_NOCLKOUT
>> pragma target WDT      disabled
>> pragma target MCLR     internal                  -- reset on pin A3
>> pragma target WDT      DISABLED                  -- watchdog
>> pragma target BROWNOUT DISABLED                  -- brownout reset
>> pragma target FCMEN    DISABLED                  -- clock monitoring
>> pragma target IESO     DISABLED                  -- int/ext osc. switch
>> --
>> OSCCON_SCS = 0                                   -- select primary 
>> oscillator
>> OSCCON_IRCF = 0b111                              -- 8 MHz
>> enable_digital_io()                              -- make all pins 
>> digital I/O
>> -- setting pins
>>
>> alias   enc_b           is pin_A5
>>  pin_A5_direction = input
>>
>> alias   enc_a           is pin_A4
>>  pin_A4_direction = input
>>  
>> alias   led           is pin_A2
>>  pin_A2_direction = output
>> led = off
>>
>> OPTION_REG_NGPPU = 0   --\
>> WPU_WPU4 = 1           -- подтяжка
>> WPU_WPU5 = 1           --/
>> IOC_IOC5 = 1 --разрешаем прерывание
>> OPTION_REG_INTEDG = 0      -- прерывание по переходу в низкий уровень
>> INTCON_GIE = on          -- глобальное разрешение прерываний
>> INTCON_GPIF = off         -- снимаем флаг прерывания по GPIO
>> --
>>
>> --setting variables
>> var byte pwm_cnt, pwm = 10
>> --
>>
>> procedure interrupt is      -- обработчик прерывания по нажатию кнопки
>> pragma interrupt
>>  if INTCON_GPIF then         -- снимаем флаг прерывания по GPIO
>>   INTCON_GPIF = off
>>   INTCON_GPIE = off         -- запрещаем  прерывания по GPIO
>>
>>   if enc_a then
>>     if pwm!=254 then pwm = pwm + 1 end if
>>    else
>>     if pwm!=0 then pwm = pwm - 1 end if
>>    end if
>>    
>>  INTCON_GPIE = on         -- разрешаем  прерывания по GPIO
>>  end if
>> end procedure
>>
>> forever loop
>>   pwm_cnt = pwm_cnt + 1   --когда дотикает до 255,само станет нулем
>>   if pwm_cnt < pwm then led = on else led = off end if
>> end loop
>>
>>
>>
>>
>> понедельник, 11 апреля 2016 г., 7:14:26 UTC+3 пользователь vasile написал:
>>>
>>> Congratulations Anatoly!
>>>
>>> I'm using ISR in a way I've learn with old jal and never failed. Never 
>>> do it with libraries even they works ok.
>>>
>>> On Sun, Apr 10, 2016 at 10:55 PM, Anatoly Titov <[email protected]> 
>>> wrote:
>>>
>>>> Closed. I changed clock to 8Mhz and decreased check rate to 1 ms. All 
>>>> works fine.
>>>>
>>>> воскресенье, 10 апреля 2016 г., 12:03:04 UTC+3 пользователь Anatoly 
>>>> Titov написал:
>>>>>
>>>>> Hello! I made a code adapted from Arduino sketch. Sketch works, my 
>>>>> code nope =(((( Please tell, how to get working code without interrupts.
>>>>> http://www.hobbytronics.co.uk/arduino-tutorial6-rotary-encoder working 
>>>>> sketch
>>>>> my code:
>>>>>
>>>>> -- target PICmicro
>>>>> include 12f683
>>>>> pragma target CLOCK    4_000_000
>>>>> pragma target OSC      INTOSC_NOCLKOUT
>>>>> pragma target WDT      disabled
>>>>> pragma target MCLR     internal                  -- reset on pin A3
>>>>> pragma target WDT      DISABLED                  -- watchdog
>>>>> pragma target BROWNOUT DISABLED                  -- brownout reset
>>>>> pragma target FCMEN    DISABLED                  -- clock monitoring
>>>>> pragma target IESO     DISABLED                  -- int/ext osc. 
>>>>> switch
>>>>> --
>>>>> enable_digital_io()                              -- make all pins 
>>>>> digital I/O
>>>>> --OPTION_REG_NGPPU = 0                           -- pull-ups ON
>>>>> OSCCON_SCS = 0                                   -- select primary 
>>>>> oscillator
>>>>> OSCCON_IRCF = 0b110                              -- 4 MHz
>>>>> --
>>>>> -- setting pins
>>>>>
>>>>>
>>>>> alias   enc_b           is pin_A5
>>>>>  pin_A5_direction = input
>>>>>
>>>>>
>>>>> alias   enc_a           is pin_A4
>>>>>  pin_A4_direction = input
>>>>>
>>>>>
>>>>> -- configure PWM
>>>>> pin_ccp1_direction = output
>>>>> include pwm_hardware
>>>>> pwm_max_resolution(1)
>>>>> pwm1_on()
>>>>>
>>>>>
>>>>> -- timer setup
>>>>> const TIMER0_ISR_RATE = 1000  -- 1 kHz isr rate
>>>>> const DELAY_SLOTS = 1         -- support slots
>>>>> include timer0_isr_interval
>>>>> timer0_isr_init()             -- init timer0 isr
>>>>>
>>>>>
>>>>> --setting variables
>>>>> var byte pwm
>>>>> var bit old_a
>>>>> --
>>>>> pwm = 0
>>>>> pwm1_set_dutycycle_percent(pwm)
>>>>>
>>>>>
>>>>> forever loop
>>>>>
>>>>>
>>>>> if check_delay(0) then
>>>>>  set_delay(0, 5)
>>>>>
>>>>>
>>>>>  if old_a & !enc_a then
>>>>>    if enc_b then
>>>>>     if pwm!=254 then pwm = pwm + 1 end if
>>>>>    else
>>>>>     if pwm!=0 then pwm = pwm - 1 end if
>>>>>    end if
>>>>>  pwm1_set_dutycycle_percent(pwm)
>>>>>  end if
>>>>>
>>>>>
>>>>> old_a = enc_a
>>>>> end if
>>>>>
>>>>>
>>>>> end loop
>>>>>
>>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "jallib" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at https://groups.google.com/group/jallib.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "jallib" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/jallib.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/jallib.
For more options, visit https://groups.google.com/d/optout.

Reply via email to