Sunday, April 1, 2018

Blinking Arduino Uno with Assembly


.ORG 0x0000            ; the next instruction has to be written to
                       ; address 0x0000
rjmp START             ; the reset vector: jump to "main"
START:
    ldi r16, low(RAMEND)   ; set up the stack
    out SPL, r16
    ldi r16, high(RAMEND)
    out SPH, r16
    ldi r16, 0xFF          ; load register 16 with 0xFF (all bits 1)
    out DDRB, r16          ; write the value in r16 (0xFF) to Data
                       ; Direction Register B
LOOP:
    sbi PortB, 5         ; switch off the LED
    rcall delay_05       ; wait for half a second
    cbi PortB, 5         ; switch it on
    rcall delay_05       ; wait for half a secon
    rjmp LOOP            ; jump to loop

DELAY_05:              ; the subroutine:
    ldi r16, 31          ; load r16 with 31

OUTER_LOOP:            ; outer loop label
    ldi r24, low(1021)   ; load registers r24:r25 with 1021, our new
                        ; init value
    ldi r25, high(1021)  ; the loop label
DELAY_LOOP:            ; "add immediate to word": r24:r25 are
                       ; incremented
    adiw r24, 1          ; if no overflow ("branch if not equal"), go
                        ; back to "delay_loop"
    brne DELAY_LOOP
    dec r16              ; decrement r16
    brne OUTER_LOOP      ; and loop if outer loop not finished
    ret                  ; return from subroutine


Ref:
ref1
ref2

Thursday, March 29, 2018

Programming Arduino in C

Code Example
#include "avr/io.h"
#include "util/delay.h"

#define BLINK_DELAY_MS 100

int main (void)
{
 /* set pin 5 of PORTB for output*/
 DDRB |= _BV(DDB5);

 while(1) {
  /* set pin 5 high to turn led on */
  PORTB |= _BV(PORTB5);
  _delay_ms(BLINK_DELAY_MS);

  /* set pin 5 low to turn led off */
  PORTB &= ~_BV(PORTB5);
  _delay_ms(BLINK_DELAY_MS);
 }
}



How to compile
avr-gcc -I./arduino-1.8.5/hardware/tools/avr/avr/include/ -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o led.o led.c
avr-gcc -L./arduino-1.8.5/hardware/tools/avr/avr/lib crtatmega328p.o led.o -o led
avr-objcopy -O ihex -R .eeprom led led.hex
ArduinoSketchUploader.exe --file=led.hex --port=COM18 --model=UnoR3

Build Process
Arduino Uno in C
Arduino Uno with Code Block

Upload HEX files to Arduino Uno


Forum
ArduinoSketchUploader

Sunday, March 18, 2018

Transistor based Toggle Switch

Toggle/T flip-flop is a kind of logic circuit that change it's output state when detecting transition in it's input. An application example of this component is soft power button, that is a push button that acts in sequence of push-on-push-off, just as what we usually seen in stomp box guitar effects and some electronic goods. The circuit below use transistor as main component to replace the necessity of common T/FF logic ICs.
Bowden's Circuit
The circuit that is used in stompboxes are a bit different, but they act in the same way. The example bellow can be found in boss DS1 and MT2 effects. Both implement the same circuit.

Toggle switch from MT2 schematic
Toggle switch from DS1 schematic

Reference:

Wednesday, March 14, 2018

555 Toggle Switch

Toggle switch with transistor circuit is common for many applications including stomp box guitar effects. This time I will present the toggle switch based on 555 IC

Reference:
Ref 1
Ref 2

Realita Pernikahan

Pernikahan itu bukanlah perkara yang ringan, sungguh, sama sekali bukan perkara yang ringan. Jika banyak orang bersemangat dan memberi semangat untuk segera menikah, mungkin saya termasuk yang sebaliknya menyarankan untuk berpikir ulang berkali-kali sampai anda betul-betul yakin dan siap. Bagi saya, tidak ada nasehat pernikahan yang sifatnya umum. Semua nasehat itu sifatnya kondisional, harus disesuaikan dengan kepada siapa ia diberikan. Tidaklah tepat jika nasehat untuk menyegerakan pernikahan itu, diberikan kepada semua orang tanpa melihat konteks.
Saya menikah di usia 29 tahun yang tidaklah terlalu muda. Usia dimana seseorang dengan kematangan mental dan pengalaman hidupnya sudah merasa sangat siap untuk menikah. Dengan segala pencapaian dan keyakinan akan mampu untuk menghadapi apapun yang akan terjadi sebagai konsekuensi dari pernikahan, bahkan untuk kemungkinan terburuk sekalipun, toh, masih saja banyak pengalaman mengagetkan di hari-hari awal pernikahan. Menyatukan dua pikiran dalam sebuah rumah tangga tidaklah mudah. Banyak sekali hal-hal dan kebiasaan-kebiasaan baru yang harus dijalani yang sebelumnya tidak pernah terpikirkan. Perkara-perkara sepele yang sebelumnya dianggap remeh berubah menjadi perkara yang serius. Tanpa kesungguhan niat dan pertolongan Allah, maka akan berat menghadapi perubahan yang sangat drastis ini. Mutlak untuk dimiliki kesadaran tertinggi bahwa segalanya tidak mungkin terjadi tanpa kehendak Allah. Pada akhirnya, konsekuensi dari keputusan yang sudah diambil itu harus kita jalani seumur hidup, dalam suka maupun duka.
Memilih calon pasangan dan memutuskan untuk menikah itu tidak mudah, namun menjaga pernikahan agar tetap harmonis itu jauh lebih sulit. Maka seharusnya, perayaan ulang tahun pernikahan itu lebih meriah dariada pesta pernikahan itu sendiri. Karena langgengnya sebuah pernikahan lebih layak untuk dirayakan, daripada sekedar keputusan mengakhiri masa lajang. Meskipun sudah melakukan usaha terbaik untuk memilih pasangan terbaik sekalipun, kamu tidak akan dapat menghindari problematika dalam rumah tangga. Permasalahan rumah tangga itu adalah sebuah keniscayaan.
Pernikahan akan membawa seseorang ke level selanjutnya. Jika anda sudah merasa menjadi orang yang sangat sabar, maka di dalam pernikahan, ada suatu saat dimana anda akan dibawa ke situasi di atas batas kesabaran. Pada saat itu, dengan sangat terpaksa, anda harus menaikkan kembali batas kesabaran anda. Jika tidak, maka semua yang telah anda bangun akan hancur berkeping-keping. Maka anda dihadapkan oleh pilihan, mengalahkan diri sendiri dan naik level, atau berkeras tidak mau mengalah dan memilih untuk menghancurkan segalanya. Menikah berarti rela untuk mengalah. Bukan mengalah pada pasangan, tetapi mengalah pada diri sendiri. Tidak banyak orang yang mau merasa terhina atau kalah, karenanya mereka akan melawan. Namun sesungguhnya, dalam situasi ini bukan kemenangan dari perdebatan yang dicari. Karena kemenangan berdebat bisa jadi awal dari sebuah petaka besar.
Seandainya pernikahan itu adalah keputusan yang buruk dalam hidup anda, maka percayalah, perpisahan adalah sebuah keputusan yang lebih buruk. Karena akibat yang ditimbulkan tidak hanya menimpa diri sendiri, tetapi juga banyak orang di sekeliling anda. Bisa saja anda memulihkan diri dengan cepat, namun anda tidak akan dapat memperbaiki hancurnya masa kecil dari anak anda, hancurnya perasaan orang tua dan orang tua istri anda, serta hancurna kehidupan pasangan anda. Apapun yang terjadi, jangan pernah terpikir untuk berpisah. Di tengah pertengkaran sehebat apapun, jangan pernah terbersit pikiran untuk berpisah.
Sebagai penutup, terlepas dari uraian di atas, orang yang menikah lalu gagal, itu masih lebih baik daripada orang yang tidak pernah menikah karena takut gagal. Setidaknya, orang yang pernah menikah sudah menunjukkan bahwa dirinya memiliki keberanian untuk membuat sebuah keputusan besar, dengan segala resikonya.