Nugroho's blog.

Monday, June 1, 2015

Timer Time: Using Internal ATTiny13A Chip’s Timer, Automatic Mode, With Duty Cycle, and Phase Correction


The problem with the previous code is the phase, and it didn’t arise until we applied it on some ‘real’ hardware.

Some hardware, like motor DC, need a signal with fixed phase, even the frequency’s changed.

The previous code have the ‘center of wave’ that change according to OCR0A value. It’ll move forward on the small OCR0A value and vice versa. On application using LED, it’s enough, since the device ignore the phase.



Some hardware need a fixed center of wave.

We could do that by normally increasing TCNT0 counter, set the flag down when the value reached OCR0A value, counting up till 255, counting down with the flag still down till reached OCR0A value, set the flag up, continue to counting down to 0, counting up again… so on

Notice that one cycle need two step (count up, count down), naturally it has half speed time / or half frequency.

But the center of wave’s now fixed, in the beginning of the wave, :)

.include "../tn13Adef.inc"
.def a=r16
.org 0000
init:
sbi ddrb,0                  ; pin B0 as output
ldi a,0b10000001          ; Fast PWM mode 1 (Duty Cycle with Phase Correct Mode)
out TCCR0A,a
    
ldi a,0b00000101          ; pre-scaler /1024
out TCCR0B,a
    
    ldi a,8
    out OCR0A,a

loop:

rjmp loop






.

Beta's Auto Awesome


by G+ Photos, :)





Timer Time: Using Internal ATTiny13A   Chip’s Timer, Automatic Mode, With Duty Cycle

Now , how to set the duty cycle?

Uh, what’s duty cycle?

Well, our previous program have the LED output turned on and off with certain frequency. Of course.

But, how about set it up, so it will turn on for 1 ms and then turn off 0.5 ms, on 1 ms, off 0.5 ms and so on. Thus, the duration of high and low is different, that’s duty cycle, as far as I know, :)


And, we already have a weapon, the OCR0A, as a value where the high become low. Of course we have to set the timer to PWM Mode 3, so after the timer set the flag it will continue to 255 instead of reset the counter.

ldi a, 0b1000 0011
out TCCR0A,a


The Code:


.include "../tn13Adef.inc"
.def a=r16
.org 0000
init:
sbi ddrb,0                ; pin B0 as output
ldi a,0b10000011          ; Fast PWM mode 3 
out TCCR0A,a
    ldi a,0b00000101          ; pre-scaler /1024
out TCCR0B,a
    
    ldi a,2
    out OCR0A,a

loop:

rjmp loop





.

Timer Time: Using Internal ATTiny13A Chip’s Timer, CTC with Automatic Mode


What if we want it to do the task automatically? With neither interrupt routine nor call command?.

We could use CTC mode . The TCNT0 will start counting up, restarted to zero (and generate interrupt) if its value reaches OCR0A value (the compare value we set).

Since, in the matter of talking, the timer has its flag status on pin B0, if we set it as output, we could see the status (high/low, on off) via led connected to it and ground.  

Note that we don’t use ‘interrupt routine’ but the system’s still generate an interrupt.

.include "../tn13Adef.inc"
.def a=r16

.org 0000
init:
sbi ddrb,0              ; pinb as output 
ldi a,0b01000010        ; CTC mode
out TCCR0A,a
ldi r16,0b00000101      ; pre-scaler /1024
    out TCCR0B,a
    ldi a,200                ; compare value
    out OCR0A,a             

loop:

rjmp loop



####



Alfa, 35 Month Ago

A photo posted by Aravir Rose (@nugnux) on
.


The Twangy Vox


This guitar amp suddenly became my first and favorite over the others.

It's small. The Vox amPlug 2 have size of well, jack-plug, :).

It's complete, for me. It has a distortion, of course, with three boost (Classic Rock) of choice, no less.

The FX maybe just chorus, delay and reverb but it doesn't matter. I don't se that anyway.

The most interesting? Yeah, the sound.
 
No matter guitar and setting you'd use. It always have a classic-Telecaster-twangy sound in it. I use my super strat model guitar (Cort with HSH pickup conf) and it's twangy.

I use my Ephipone Les Paul, with the brigde pickup and the tones turned down, and it's still twangy.

Maybe not anyone like this characteristic. But for me, it's blessing, :)

(How about plug it on Tele? :) )

Mugello


Lorenzo win.

Of course we're focused on double duel (battle royal? :) ) for 2nd position of two Honda and Ducati. Before Dovis gear started trouble and Marquez lost the tyre grip.

Rossi's great too, from 8th to 3rd. The only rider that always finished in podium this  season.

Lorenzo, Iannone, Rossi
323f (5) amp (1) android (12) apple (7) arduino (18) art (1) assembler (21) astina (4) ATTiny (23) blackberry (4) camera (3) canon (2) cerita (2) computer (106) crazyness (11) debian (1) delphi (39) diary (286) flash (8) fortran (6) freebsd (6) google apps script (8) guitar (2) HTML5 (10) IFTTT (7) Instagram (7) internet (12) iOS (5) iPad (6) iPhone (5) java (1) javascript (1) keynote (2) LaTeX (6) lazarus (1) linux (29) lion (15) mac (28) macbook air (8) macbook pro (3) macOS (1) Math (3) mathematica (1) maverick (6) mazda (4) microcontroler (35) mountain lion (2) music (37) netbook (1) nugnux (6) os x (36) php (1) Physicist (29) Picture (3) programming (189) Python (109) S2 (13) software (7) Soliloquy (125) Ubuntu (5) unix (4) Video (8) wayang (3) yosemite (3)