Wednesday, November 30, 2011

Format sprintf





untuk mengaktifkan fitur sprintf pada code vision Avr jangan lupa seting konfigurasinya seperti pada gambar diatas.
selamat mencoba semoga bermanfaat

Monday, February 21, 2011

Timer ATtiny dengan osilator internal


Timer ATtiny menggunakan internal calibrate RC oscilator
Led berkedip dengan frekuensi 1 Hz



Menggunakan internal calibrate RC oscilator 8.000.000 hz, mikrokontroler akan menjalankan timer dan membandingkan dengan nilai 0x7d (decimal 125) bila sama, CPU akan terinterupsi ( = terjadi setiap 1 ms) dan berulang terus-menerus, dengan menggunakan fasilitas interupsi dan menuliskan code pada Timer 0 output compare A interrupt service routine seperti pada potongan program di bawah, maka akan mengakibatkan led yang dipasang pada PORTD.0 menyala berkedip dengan frekuensi  1hz dan duty cycle 50% (low level 500 ms dan high level 500ms). Berikut potongan programnya

#include <tiny2313.h>
Int temp_count= 0;

// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
if (timercount == 500) PORTD.0 = ~PORTD.0;
}
void main(void)
{
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Port D initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out
// State6=T State5=T State4=T State3=T State2=T State1=T State0=0
PORTD=0x00;
DDRD=0x01;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: CTC top=OCR0A
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x02;
TCCR0B=0x03;
TCNT0=0x00;
OCR0A=0x7D;
OCR0B=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;
// Global enable interrupts
#asm("sei")
while (1)
      {
      // Place your code here
      };
}