Monday, June 1, 2015
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
Saturday, May 30, 2015
Timer Time: Using Internal ATTiny13A Chip’s Timer, "OVF" Interrupt Mode (slightly modified)
We could speeding the timer by pre-loading TCNT0 with a value between 0 and 255, so TCNT0’ll start count at our own value instead of zero.
We have to pre-load the TCNT0 at the init subroutine, and pre-load again after flag is set, so we write the command at the timer subroutine.
So, our code now will look like this
.include "../tn13Adef.inc"
.def a=r16
.org 0000
rjmp init
.org 0003
rjmp timer
init:
sbi ddrb,0 ; pin b0 output
ldi a,0b00000101 ; prescaler 1024
out TCCR0B,a
ldi a,0b00000010 ; enable OVF
out TIMSK0,a
ldi a, 64 ; preload TCNT0
out TCNT0,a
sei ; enable interrupts globally
main:
rjmp main
timer:
sbi pinb,0 ; flip pin B0 bit
ldi a,64 ; preload again
out TCNT0,a
reti
Timer Time: Using Internal ATTiny13A Chip’s Timer, "OVF" Interrupt Mode
Using interrupt, we have a subroutine that regularly called, automatically.
It called when overflow flag (OVF) is set.
As always, the timer/counter (TCNT0 register) counts up from zero toward 255, called an interrupt and rolls over back to zero and starts counts up again.
We could set the output at the interrupt subroutine so we eventually have nothing to do at the main program.
main:
rjmp main
If we enabled interrupts, the system looks an interrupt vector table at the bottom of memory, .org 000; composed of jumps to routines series.
OVF interrupt located at .org 0003
The first interrupt is, of course, power on or reset or initial condition, you named it…
We have to jump to it (using rjmp init) to set initial condition of our system when it connected to power source, or reset-ed. On this program we set pre-scaler to 1024, enabling OVF mode and of course enabling interrupts globally
The interrupt routine itself is only consist of toggle pinb,0 command
.include "../tn13Adef.inc"
.def a=r16
.org 0000
rjmp init
.org 0003
rjmp timer
init:
sbi ddrb,0 ; pin b0 output
ldi a,0b00000101 ; prescaler 1024
out TCCR0B,a
ldi a,0b00000010 ; enable OVF
out TIMSK0,a
sei ; enable interrupts globally
main:
rjmp main
timer:
sbi pinb,0 ; flip pin B0 bit
reti
Friday, May 29, 2015
Timer Time: Using Internal ATTiny13A Chip’s Timer “CTC” Mode
Clear Timer on Compare (CTC) as its name suggests, will clear the flag if counter has same value with compare value.
Thus, TCNT0 still count fram zero to 255, but if we set OCR0A on 64, timer will clear the flag at 64, restart counter to zero and count up again.
If we set OCR0A to 255, then it’ll behave like normal timer in 'Normal’ Mode.
If OCR0A value’s lower, then the delay time is faster/shorter.
Here's the code. OCF0A is compare flag, the bit-3 on TIFR0 register.
Notice that we have to set TCCR0A register to enable CTC mode; in Normal mode we don’t have to do that.
.include "../tn13Adef.inc"
.def a=r16
.org 0000
init:
sbi ddrb,0 ; pin b0 output
ldi a, 0b01000010 ; CTC mode
out TCCR0A,a
ldi a,0b00000101 ; prescaler 1024
out TCCR0B,a
ldi a,255 ; compare value (emulating normal mode, set to lower value for shorter d)
out OCR0A,a
main:
sbi pinb,0 ; flip the B0 bit
rcall timer
rjmp main
timer:
loop:
in a,TIFR0 ; wait
andi a, 0b00000100 ; (1<<OCF0A) is OCF0A
breq loop
ldi a, 0b00000100 ; set OCF0A to 1 again after flagged
out TIFR0,a
ret
Timer Time: Using Internal ATTiny13A Chip’s Timer “Normal” Mode (Slightly Modified)
Our timer is static, it have to wait TCNT0 to count from 0 to 255 and then start over.
We could modify it so it count from x to 255 to make it count faster
so we need to pre-set/pre-load TCNT0 to some value
ldi a, 200With that, we could make the delay time faster. Set the TCNT0 to lower value for longer delay
out TCNT0,a
We need to modify it
.include "../tn13Adef.inc"
.def a=r16
init:
sbi ddrb,0 ; pin b0 output
ldi a,0b00000101 ; prescaler 1024
out TCCR0B,a
main:
sbi pinb,0 ; flip the B0 bit
rcall timer
rjmp main
timer:
loop:
in a,TIFR0 ; wait
ret
.def a=r16
.org 0000
sbi ddrb,0 ; pin b0 output
ldi a,0b00000101 ; prescaler 1024
out TCCR0B,a
sbi pinb,0 ; flip the B0 bit
rcall timer
ldi a,200 ; set lower for longer delay
out TCNT0,arjmp main
loop:
in a,TIFR0 ; wait
andi a, 0b00000010 ; (1<<TOV0) is TOV0 still 1 or flagged to 0?
breq loop ldi a, 0b00000010 ; set TOV0 to 1 again after flagged
out TIFR0,aTimer Time: Using Internal ATTiny13A Chip’s Timer “Normal” Mode
Chip’s Internal Timer in ’Normal' mode will count from 0 to 255, set the overflow flag TOV0 to 0 and count again from 0 to 255, set the flag to 0 and so on.
As usual, I used LED as output indicator on Port B0
We used 1024 for pre-scaler/divider value. Set the TCCR0B to 0000 0101
Note that we have to reset the overflow flag to 1 after timer count reached 255 (and set the flag to 0).
Oh, by the way, the register/variable/things that count from 0 to 255 is called TCNT0. We didn’t touch it in the code this time, maybe next.
.include "../tn13Adef.inc"
.def a=r16
.org 0000
init:
sbi ddrb,0 ; pin b0 output
ldi a,0b00000101 ; prescaler 1024
out TCCR0B,a
main:
sbi pinb,0 ; flip the B0 bit
rcall timer
rjmp main
timer:
loop:
in a,TIFR0 ; wait
andi a, 0b00000010 ; (1<<TOV0) is TOV0 still 1 or flagged to 0?
breq loop
ldi a, 0b00000010 ; set TOV0 to 1 again after flagged
out TIFR0,a
ret
Last login: Thu May 28 11:54:47 on ttys001
Nugrohos-MacBook-Air:~ nugroho$ cd attiny13a/timer/
Nugrohos-MacBook-Air:timer nugroho$ avra -o timerNormal.hex timerNormal.s
AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010)
Copyright (C) 1998-2010. Check out README file for more info
AVRA is an open source assembler for Atmel AVR microcontroller family
It can be used as a replacement of 'AVRASM32.EXE' the original assembler
shipped with AVR Studio. We do not guarantee full compatibility for avra.
AVRA comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of avra under the terms
of the GNU General Public License.
For more information about these matters, see the files named COPYING.
Pass 1...
Pass 2...
done
Used memory blocks:
Code : Start = 0x0000, End = 0x000B, Length = 0x000C
Assembly complete with no errors.
Segment usage:
Code : 12 words (24 bytes)
Data : 0 bytes
EEPROM : 0 bytes
Nugrohos-MacBook-Air:timer nugroho$ vavrdisasm timerNormal.s.hex
0: 9a b8 sbi $17, 0
2: e0 05 ldi R16, 0x05
4: bf 03 out $33, R16
6: 9a b0 sbi $16, 0
8: d0 01 rcall .+2 ; 0xc
a: cf fd rjmp .-6 ; 0x6
c: b7 08 in R16, 0x38
e: 70 02 andi R16, 0x02
10: f3 e9 breq .-6 ; 0xc
12: e0 02 ldi R16, 0x02
14: bf 08 out $38, R16
16: 95 08 ret
Nugrohos-MacBook-Air:timer nugroho$
Nugrohos-MacBook-Air:timer nugroho$ avrdude -p t13 -P usb -c usbasp -B4 -n
avrdude: set SCK frequency to 187500 Hz
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9007
avrdude: safemode: Fuses OK (H:FF, E:FF, L:6A)
avrdude done. Thank you.
Nugrohos-MacBook-Air:timer nugroho$ avrdude -p t13 -P usb -c usbasp -B4 -U flash:w:timerNormal.s.hex
avrdude: set SCK frequency to 187500 Hz
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9007
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: set SCK frequency to 187500 Hz
avrdude: reading input file "timerNormal.s.hex"
avrdude: input file timerNormal.s.hex auto detected as Intel Hex
avrdude: writing flash (24 bytes):
Writing | ################################################## | 100% 0.02s
avrdude: 24 bytes of flash written
avrdude: verifying flash memory against timerNormal.s.hex:
avrdude: load data flash data from input file timerNormal.s.hex:
avrdude: input file timerNormal.s.hex auto detected as Intel Hex
avrdude: input file timerNormal.s.hex contains 24 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.01s
avrdude: verifying ...
avrdude: 24 bytes of flash verified
avrdude: safemode: Fuses OK (H:FF, E:FF, L:6A)
avrdude done. Thank you.
Nugrohos-MacBook-Air:timer nugroho$
Pencerahan
Tak hanya pencerahan relijius seperti Sakti dari Sheila on 7 yang tiba-tiba 'terbangun' saat baca buku "Menjemput Sakaratul Maut ...." di bandara dan majalah Mati Suri di rumah sakit. Kini dia bernama Salman Al Jugjawy.
Saya mengalami pencerahan secara musikal, beberapa kali.
Saya termasuk telat belajar alat musik. Memiliki gitar di akhir kelas satu SMP. Awalnya belajar lagu standart Koes Plus, Iwan Fals. Dangdut populer, belajar karena ikut ekstrakurikuler band musik, manggung di tempat-tempat yang menginginkan lagu dangdut. Tembang kenangan malam-malam di radio.
Saat SMU saya "Naik tingkat". Boomerang, Jamrud, Padi, Dewa19, Sheila On 7, Slank dan musik-musik populer di radio jadi sasaran.
Lagi,di akhir SMU mengenal underground music. Pernah sampai diusir yang punya "studio" karena "gak niat", "ngrusak drum", "bikin sakit kuping", "liriknya gak bisa didengarkan", "bahasa apa itu?". Cuma lagu Derek yang easy listening, yang kedua adalah Bendera Kuning (kayak gitu easy listening? Yup, dibanding yang lain, ;) )
Sound gitar suka yang berdistorsi full, masuk akal memang. Efek gitar lebih suka semacam Metal Zone. Semakin djent djent djent semakin keren. Sangat anti dengan efek Overdrive . Tone harus se-treble mungkin. Dan sering frustrasi karena tidak dapat distorsi seperti di fantasi. Paling sulit meniru Eros, ada distorsi tapi nada individual tetap terdengar.
Dan pencerahan itu datang.
Pertama saat mendapatkan buku usang saat liburan ke rumah mbah, tigapuluh kilometer di balik gunung. Buku peninggalan bulik yang meninggal pas masih kuliah seni di kampus yang sama denganku.
(aku ingin memiliki sense seni seperti dia, tapi, dari level keanehan, aku belum sepuluh persennya dari dia, blum berani naik motor, kaki kiri tak paki apapun, pake bakiak di kaki kanan tok, untuk menstarter pakai kaki biar gak sakit, :) )
Kuhabiskan Gitar Tunggal saat libur sebulan, baca dan praktek. Dan mendapatkan hal-hal tak terduga.
Gitar tak harus digenjreng. Bahkan pemain klasik hampir selalu menggunakan petikan not demi not.
Belajar harmoni nada yang tanpa sengaja ku bawa ke aliran musik lain, apapun yang sedang kusenangi.
Spanish scale, yang bisa dibawa ke mana-mana, yang bikin melodi gitarku bernuansa NeoKlasik seperti Yngwie atau Rhandy Rhoads.
Banyak hal lain, seperti cara membaca tablature dan disiplin ketukan, panjang not dan dinamik, tapi itu hal-hal yang tak kelihatan.
Berikutnya adalah seri It's Easy to Bluff
Pertama memiliki buku Jazz, kemudian merembet ke Blues, Metal dan terakhir Rock (dapat dari Papang, di gramedia sudah habis, dan sampai sekarang tidak ada stock baru)
Banyak hal yang mengubah secara drastis permainan gitar sama wawasan musik, namun tidak menggeser efek dari Gitar Tunggal, lebih seperti melengkapi. Gitar tunggal untuk akustik, It's Easy to Bluff untuk gitar Elektrik
Senar pertama tak harus bunyi, dan ternyata memang memetik CMaj9 tanpa senar nomor satu itu keren sekali suaranya
Tak harus bunyi sepanjang lagu, sudah sering kulakukan sejak smu, hasil didikan P Sis saat ikut ekstra kurikuler musik di SMP dan jadi bassis selama dua tahun manggung ikut beliau. P Sis sebagai gitaris melodi dan pemimpin band paling ahli memainkan dinamika musik yang bagi kami saat itu tidak menyenangkan. Temanku, gitaris rhythm sering protes, karena suara gitarnya jadi tak kedengaran, namun secara keseluruhan suara jadi sangat merata, dan menonjol pada waktunya, saat solo, atau saat coda.
Treble tak harus penuh, jazzer suka sound empuk dan hangat. Strat dan gitar lain dengan single coil pickup akan terlalu "kemrempyang" jika treble ampli disetel penuh. yaling aman, bass treble middle(kalau ada) di set diangka 12, geser maju mundur di sekitar itu
Distorsi tak harus full, jika gain atau dist diset maksimal, suara akord akan hilang, tentu saja itu tak masalah untuk permainan melodi nada tunggal. Paling aman gain atau distorsi di set di angka 7 atau bawahnya.
Tak semua fals itu tak enak. Saya menyukai akord D7#9, gabungan D7 mayor dan minor, mengandung nada D F F# A C. Lihat, seharusnya F dan F# yang bunyi bersamaan menyebabkan disonansi, atau super fals. Tapi jika kita pakai akord ini di waktu yang tepat, efeknya akan keren sekali.
Mencegah mati gaya secara musikal. Jika diajak manggung dan tak tahu lagunya, anggap itu memakai nada dasar G, Jika lagunya ternyata menggunaka C atau D, maka masih bisa selamat. Jika lagunya menggunakan nada dasar E, maka kita secara otomatis akan terdengar nge-blues. Jika pakai nada dasar F maka kita akan terdengar seperti Steve Vai, dengan Lydian mode. Jika lagunya memakai A maka kita Seperti Joe Satriani dengan mode Dorian. Akan sial jika lagunya ternyata menggunakan G#, :) .
Jangan paksa mainkan rhythm dengan nada yang berbunyi di lagu yang kita tidak tahu kuncinya, gunakan palm mute.
Dari buku-buku itu secara tak sengaja menemukan aplikasinya di lagu
Bertahan di sana (Shelia On 7). Contoh dissonant keren di dua nada terakhir solo-nya Eros
Persembahan dari Surga (Dewa 19). Dissonant di reff
Roman Picisan (Dewa 19). Tidak terlalu mencolok, tapi ada dissonant bagus di ref dan saat tepat sebelum hening di sela bait-bait sebelum ref
Jadilah permainan gitarku berjenis jazz-blues-bossa-rock-akustik-latin dengan sedikit harmoni klasik.
(Catatan: bukan berarti permainan gitar saya bagus :P )
[Kutulis setengah duabelas malam saat Alfa nyenyak tertidur]
Nugroho
http://aravir-rose.blogspot.com
Subscribe to:
Posts (Atom)
My sky is high, blue, bright and silent.
Nugroho's (almost like junk) blog
By: Nugroho Adi Pramono
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)