Tuesday 31 May 2016

[TUTORIAL] Porting arduino library ke gelatino (ATmega16 & ATmega32)

Cara porting berikut ini adalah mengedit library awal arduino agar support pada Gelatino atmega16/32. Sehingga kita dapat dengan mudah menggunakan library tersebut. Semoga dapat membantu, karena saya sering mendapat banyak pertanyaan tentang penggunaan library yang error.

Caranya,
  1. Buka folder library di lokasi Arduino IDE di install
  2. Buka Library file .h yang akan di pakai, misal servo.h
  3. Kemudian paste kan coding patch nya di file .h tersebut.
Patchnya tidak akan selalu berhasil, ada beberapa library yang masih error. Hal ini dikarenakan,
  1. Library tersebut memakai pinChange interrupt (PCINT), contoh Software Serial
  2. Atau beberapa register PWM yang atmega16 atau atmega32 tidak punya. 

Coding patch file .h

#if defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__)

#define OCR0A   OCR0
#define EIMSK   GICR
#define EIFR    GIFR
#define TIMSK0  TIMSK
#define TIMSK1  TIMSK
#define TIMSK2  TIMSK
#define TIFR0   TIFR
#define TIFR1   TIFR
#define TIFR2   TIFR
#define SPMCSR  SPMCR
#define SMCR    MCUCR
#define EICRA   MCUCR
#define MCUSR   MCUCSR
#define TCCR0A  TCCR0
#define ADCSRB  SFIOR
#define TCCR2A  TCCR2
#define OCR2A   OCR2
#define WDTCSR  WDTCR
#define UBRR0H  UBRRH
#define UCSR0C  UCSRC
#define UDR0    UDR
#define UCSR0A  UCSRA
#define UCSR0B  UCSRB
#define UBRR0L  UBRRL
#define OCIE2A  OCIE2
#define ICIE1   TICIE1
#define OCIE0A  OCIE0
#define OCF2A   OCF2
#define OCF0A   OCF0
#define ISC20   ISC2
#define FOC0A   FOC0
#define COM0A1  COM01
#define COM0A0  COM00
#define PSRASY  PSR2
#define PSRSYNC PSR10
#define FOC2A   FOC2
#define COM2A1  COM21
#define COM2A0  COM20
#define OCR2AUB OCR2UB
#define TCR2AUB TCR2UB
#define UMSEL00 UMSEL
#define UPM10   UPM1
#define UPM00   UPM0
#define USBS0   USBS
#define UCSZ00  UCSZ1
#define UCSZ10  UCSZ2
#define UCPOL0  UCPOL
#define RXC0    RXC
#define TXC0    TXC
#define UDRE0   UDRE
#define FE0     FE
#define DOR0    DOR
#define UPE0    PE
#define U2X0    U2X
#define MPCM0   MPCM
#define RXCIE0  RXCIE
#define TXCIE0  TXCIE
#define UDRIE0  UDRIE
#define RXEN0   RXEN
#define TXEN0   TXEN
#define UCSZ02  UCSZ2
#define RXB80   RXB8
#define TXB80   TXB8
#define TIMER2_COMPA_vect           TIMER2_COMP_vect
#define TIMER2_COMPA_vect_num   TIMER2_COMP_vect_num
#define TIMER0_COMPA_vect           TIMER0_COMP_vect
#define TIMER0_COMPA_vect_num   TIMER0_COMP_vect_num 
#define USART0_RX_vect              USART_RXC_vect
#define USART0_RX_vect_num      USART_RXC_vect_num
#define USART0_UDRE_vect            USART_UDRE_vect
#define USART0_UDRE_vect_num    USART_UDRE_vect_num
#define USART0_TX_vect              USART_TXC_vect
#define USART0_TX_vect_num      USART_TXC_vect_num
#define ANALOG_COMP_vect            ANA_COMP_vect
#define ANALOG_COMP_vect_num    ANA_COMP_vect_num

#endif

No comments:

Post a Comment

Develop STM32 dengan STM32cubeMx + OpenSTM32 IDE

Banyak temen ² yang masih ngoprek STM32 di Keil, yang harus nyari software crack ²an. Bebas sih, tapi saya sepaham dengan dosen saya saat ...