Wednesday, April 18, 2018

Atmel Studio 7 Set-up for Arduino UNO Programming

Abstract: Arduino Uno is one of the most used boards by beginners to learn embedded systems. The easiest way to program Arduino Uno is to write code in the sketch programming language using the default Arduino software (Arduino IDE). The Arduino IDE interface is very simple and writing programs in sketch is very easy. This is both an advantage and a weakness of programming with the Arduino IDE, where someone who wants to learn more about the microcontroller system will experience difficulties because they cannot see how the processor works more transparently. There are several alternatives to the Arduino IDE for programming in assembly and C / C ++, one of which is Atmel Studio 7.In this paper, I will explain how to set the environment for Arduino Uno programming using Atmel Studio 7 software.

Abstrak: Arduino Uno merupakan salah satu board yang paling banyak digunakan oleh pemula untuk mempelajari sistem embedded. Cara termudah untuk memprogram Arduino Uno adalah dengan menulis code dalam bahasa pemrograman sketch menggunakan software bawaan dari Arduino (Arduino IDE). Interface Arduino IDE sangat sederhana dan menulis program dalam sketch-pun sangat mudah. Hal ini merupakan kelebihan sekaligus kelemahan pemrograman dengan Arduino IDE, dimana seseorang yang ingin mempelajari sistem mikrokontroller lebih mendalam, akan mengalami kesulitan karena tidak dapat melihat cara kerja prosesor secara lebih transparan. Ada beberapa alternatif dari Arduino IDE untuk pemrograman dalam assembly maupun C/C++, salah satunya adalah Atmel Studio 7. Pada tulisan ini, saya akan menjelaskan cara setting environment untuk pemrograman Arduino Uno dengan menggunakan software Atmel Studio 7.

Sunday, April 15, 2018

Arduino UNO /AVR 328P Serial USART Transmission in Assembly




;
; Serial USART.asm
;
; Created: 4/15/2018 9:24:49 PM
;

.equ    UBRRNX0=103    ; 9600bps
.equ    UBRRNX1=207

// start code
start:
    rcall    USART_Init
    ; write your code here
    ldi        r16,0x24
    rcall USART_Transmit   

end:
    rjmp    end

; end of your code
; this is my part
;----------
USART_Init:
    push r16
    push r17
       
    ldi r16, low(UBRRNX0)            ; Set baud rate to UBRR0
    ldi r17, high(UBRRNX0)
    sts UBRR0H, r17
    sts UBRR0L, r16
       
    ldi r16, (1
<<RXEN0)|(1<<TXEN0)    ; Enable receiver and transmitter
    sts UCSR0B,r16
       
    ldi r16, (1
<<USBS0)|(3<<UCSZ00)    ; Set frame format: 8data, 2stop bit
    sts UCSR0C,r16
    pop r17
    pop r16
    ret

USART_Transmit:
    push r17
    lds r17, UCSR0A                    ; Wait for empty transmit buffer
    sbrs r17, UDRE0
    rjmp USART_Transmit
       
    sts UDR0,r16                    ; Put data (r16) into buffer, sends the data
    pop r17
    ret

Sunday, April 8, 2018

Arduino UNO Blinking with Timer on Assembly


.equ    DELOOP=10
.MACRO  CPL                    ; Macro to complemen pin
    sbi    0x1E,    @1            ; use this register to xor the pin
    in    r17,    0x1E
    in    r16,    @0        
    eor r16,    r17        
    out @0,        r16
.ENDMACRO

.ORG 0x0000                    ; The beginning of everything
    rjmp START                ; the reset vector: jump to "main"

.ORG 0x0020                    ; interrupt vector: timer0 overflow
    rjmp timer0_overflow    ; jump to interrupt handler

.ORG 0x0034                    ; memory address start of "main function"
START:
    ldi r22,    DELOOP                ; initial value for timer looping

    ldi r16,    0xFF         
    out DDRB,    r16            ; set Port B as output

    ldi r16,    0x0000   
    out TCCR0A, r16            ; timer 0 run in normal mode
    ldi r16,    0x0001   
    sts TIMSK0,    r16
    ldi r16,    0b00000101        ; Set r16 with prescaler 1024 value
    out TCCR0B, r16            ; Set the TCCROB to 1024
    SEI                        ; enable global interrupt

LOOP:
    rjmp LOOP            ; jump to loop

timer0_overflow:
    dec        r22
    breq    toggle
    reti

toggle:                    ; the subroutine:
    ldi        r22, DELOOP
    CPL        PortB, 5            ; toggle the LED
    reti





Load programs to an Arduino UNO from Atmel Studio 7

Many tools can be used, but I like mostly Arduino Sketch Uploader



ArduinoSketchUploader
arduino-uno-from-atmel-studio-7
other
other

Saturday, April 7, 2018

Reset MySQL Root Password

-----
Basic step to reset mysqld password just follow these instructions :
  • Stop the mysql demon process
    •    sudo /etc/init.d/mysql stop
  • Start the mysqld demon process using the --skip-grant-tables option
    •    sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
      or
         sudo mysqld_safe --skip-grant-tables &
       
  • start the mysql client process using this command
    •    mysql -u root
  • from the mysql prompt execute this command to be able to change any password
    •    FLUSH PRIVILEGES;
  • Then reset/update your password
    •    SET PASSWORD FOR root@'localhost' = PASSWORD('password');
  • If you have a mysql root account that can connect from everywhere, you should also do:
    •    UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
  • Alternate Method:
    •    USE mysql
         UPDATE user SET Password = PASSWORD('newpwd')
         WHERE Host = 'localhost' AND User = 'root';
  • And if you have a root account that can access from everywhere:
    •    USE mysql
         UPDATE user SET Password = PASSWORD('newpwd')
         WHERE Host = '%' AND User = 'root';
For either method, once have received a message indicating a successful query (one or more rows affected), flush privileges:
   FLUSH PRIVILEGES;

Then stop the mysqld process and relaunch it
   sudo /etc/init.d/mysql stop
   sudo /etc/init.d/mysql start
 

-- Alternative method for different source
 
1. Run bash commands
 

# 1. first, run these bash commands
sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql

2. Run mysql commands

use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user

flush privileges;
quit;

3. Run more bash commands

sudo /etc/init.d/mysql stop 
sudo /etc/init.d/mysql start # reset mysql 
mysql -u root -p root # try login to database
 
 

-- If you find following error

2017-02-10T17:05:44.870970Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.872874Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.874547Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists. 
 
Do this 
$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld

To reset 
Mysqld_safe 
Solving Error 
 

Thursday, April 5, 2018

Setup PHP on Ubuntu

Please check these links

LAMP
LAMP how to

To install PHP 7 on Ubuntu 
sudo apt-get -y update
sudo add-apt-repository ppa:ondrej/php
sudo apt-get -y update
sudo apt-get install -y php7.0 libapache2-mod-php7.0 php7.0 php7.0-common php7.0-gd php7.0-mysql php7.0-mcrypt php7.0-curl php7.0-intl php7.0-xsl php7.0-mbstring php7.0-zip php7.0-bcmath php7.0-iconv php7.0-soap
 

 
PHP install guide

to Upgrade to PHP7
PHP7

 If an "PHP ERROR: Module php7.0 does not exist" occur

PHP ERROR

to install PHPmyAdmin

sudo apt-get install phpmyadmin
phpMyAdmin

Tuesday, April 3, 2018

Adaptive Runge Kutta to Solve ODE

This is a paperwork of my student. You can refer to this.

Download paper

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.

Sopan

Orang Jawa itu sangat sopan. Saking sopannya, seandainya seorang tamu ditanya tuan rumah, "apakah sudah makan?", si tamu harus menjawab sudah, walaupun sebenarnya belum. Karena kalau dia menjawab belum, itu artinya tidak sopan.
Seandainya si tamu itu ditawari untuk makan, maka si tamu harus -pura pura- menolak, meskipun sebenarnya dia lapar. Karena kalau si tamu langsung mau, itu artinya tidak sopan.
Sebaliknya, dalam keadaan apapun, si tuan rumah itu harus menyuguhkan makanan ke tamu, setidaknya minuman manis. Meskipun sebenarnya si tuan rumah sedang tidak memiliki apa-apa. Karena kalau tuan rumah tidak menawari makanan, itu artinya tidak sopan.


Orang Sunda lebih sopan lagi. Seandainya ada tamu yang ingin sekedar menumpang menginap karena kelelahan, maka si tamu akan disambut dengan ramah dan dipersilahkan tidur di kamar terbaik. Si tamu akan dijamu dengan makanan yang paling enak, disuguhi minuman paling baik dan diperlakukan bak raja. Saat si tamu hendak pulang, saking sopannya, si tuan rumah justru meminta maaf atas jamuan yang hanya sekedarnya. Padahal si tamu sangat berterimakasih atas perlakuan tuan rumah yang sangat baik itu.


Kalau orang Jerman beda lagi, mereka tidak sopan. Dan di Jerman memang tidak boleh sopan, karena kalau kamu terlalu sopan, maka kamu tidak akan dianggap/disepelekan.

Sunday, March 11, 2018

FSTAB and MTAB

Sumber:
brunolinux
tuxfiles

Equalizer di Amarok

1. Download package http://ftp.br.freesbie.org/mirror/biglinux/packages/karmic/main/phonon-backend-xine_4:4.3.4~svn1037991~karmic~ppa2_i386.deb

2. Instal Packege

3 Buat file preference

Package: phonon-backend-xine
Pin: version 4.3.1~svn1037991*
Pin-Priority: 1001

3. update

4. selesai

sumber
kubuntuforums

matlab MEX File