iya sih mas cuma dari yang saya baca dari program delay.h punya atmel studio terdapat program ini #define F_CPU 1000000UL // 1 MHz yang menurut saya nilai F_CPU adalah 1MHz dan kelihatanya itu sudah patokan buat semua setingan kalau mengunakan delay.h yg masih saya bingung apakah gak pengaruh kalau clock externalnya berubah? sedangkan nilai F_CPU tetap 1MHz dan nilai F_CPU ini di gunakan untuk perhitungan dari delay_ms dan delay_us, dan dari sini saya coba buat program yg sifat delaynya berdasarkan nilai dari clock eksternal atau frekuensi osilator walaupun dari program yg saya beri di atas belum sepenuhnya di bilang presisi
tapi lumayan lah buat berbagi ilmu dan mohon koresksinya jikalau salah :)
Mas, kalo perbedaan antara mode phase correct pwm, mode normal dan ctc itu bedanya diapanya ya? kalo yang digunakan untuk program delay sebaiknya dengan menggunakan mode apa ya? Thanks, Best Regards
setau saya mas kalau mode normal ada 3 pilihan di dalamnya yaitu 1. normal overflow (baru yg satu ini pernah saya coba) 2. normal compare match 3. mode normal input capture
kalau mode CTC dia akan mencacah naik sampai puncak kemudan kembali ke nol lagi kemudian akan mengeset )CF1 untuk memulai intrup timer jika diaktifkan
kalau phase correct pwm dia sifat pencacahnya bolak balik misalkan awalnya mencacah naik setelah sampai puncak dia akan memcacah turun terus jika sampai ke ke nol akan mengulang mencacah naik lagi dan begitu seterusnya
itu yang saya tau mas maaf kalau masih salah :) sumber : Buku Mikrokontroler AVR ATmega8/32/16/8535 dan Pemrogramannya dengan Bahasa C pada WinAVR, Karya Ardi Winoto
Mau nanya mas bagaimana membuat delay ini tapi program lain masih jalan? kayak di arduino itu menggunakan millis, bagaimana dengan menggunakan cvavr? butuh bantuannya mas,. thanks :)
memangnya anda mau buat delay untuk apa? kalau program lain tetep jalan itu bukan delay namanya mas, yang pasti beda konsep dengan delay, dan setau saya milis itu bukan delay dia hanya untuk membalikan nilai milisecond dari delay saat program di start, dan akan kembali ke nol saat overflow
mas saya butuh delay di atmega16 sampe dengan 90.000 ms (90 detik) tapi selalu eror dan maksimal delay hanya 65.000 (65 detik) apa bisa dibuat sampai 90 detik mas ?
void tunda(unsigned long waktu) { TIMSK=0x01; //inisialisasi untuk mengaktifkan interrupt timer0 while (x<waktu){} //padasaat nilai x lebih kecil dari waktu maka tidak melakukan apa-apa x=0; //jika nilai x lebih besar dari waktu maka nilai x reset jadi 0 (nol) TIMSK=0x00; //inisialisasi untuk menon aktifkan interrupt timer0 }
void main(void) {
PORTA=0x00; DDRA=0x03; //setting PORTA.1 dan PORTA.2 sebagai output
TCCR0=0x05; //setting timer0 dengan prescaler 1024 TCNT0=0xF8; //nilai timer value dari hasil perhitungan timer 8 bit OCR0=0x00; //pin OCR0 tidak di aktifkan
TIMSK=0x01; //inisialisasi untuk pengaktifan interrupt timer0
#asm("sei") //variabel global interrupt
while (1) //loop forever { PORTA.0=1; //led pada PORTA.0 aktif tunda(90000); // tunda 1000ms PORTA.0=0; //led pada PORTA.0 mati tunda(90000); //tunda 1000ms } }
harus nya dengan mengubah tipe data saja sudah bisa mengunakan nilai 90000, tapi jika masih error bisa hubungi saya via email rino@noosite.com
Mas mau tanya, ini kn saya mengeset timer 1dtik tp semua program yng sy buat kok berpengaruh ya? Jadi awalnya adcnya berubah cepet, stelah sya masukkan beberapa program yng lebih kompleks kok kcepatn eksekusi program. Mengikuti timernya ya Mohon pencerahannya tq
Mas saya mau tanya, Saya kan bikin atmega 16 Saya mau memprogram buzzer dan seven segmen menyala selama 500ms / 0,5 dtk tapi di kejadian itu Aku mau lampu led menyala berurutan dari atas ke bawah bergantian/ beriringan .
Jadi yang saya tanyakan itu gimana cara membuat delay dalam delay? Kalau di dalam konsep yang mau aku terapkan you harus memperpanjang delay dari buzzer dan seven segmen agar lampu led bisa lebih lambat pergeraknnya atau gimana mas.
Bantu Donasi untuk memperpanjang sewa domain serta mendukung perkembangan blog ini!
Dengan cara klik iklan / sponsor yang tertera pada blog ini!
Salam Admin,
Rino Christianto
Attention
Most of the sourced material posted in this site is posted according to the "fair use" doctrine of copyright law for non-commercial news reporting, education and discussion purposes. we comply with all takedown requests
klo pake pustaka delay kan tergantung clock yang kita gunakan juga, memang lebih presisi klo menggunakan perhitungan manual via timer
ReplyDeleteiya sih mas cuma dari yang saya baca dari program delay.h punya atmel studio
Deleteterdapat program ini #define F_CPU 1000000UL // 1 MHz
yang menurut saya nilai F_CPU adalah 1MHz dan kelihatanya itu sudah patokan buat semua setingan kalau mengunakan delay.h
yg masih saya bingung apakah gak pengaruh kalau clock externalnya berubah? sedangkan nilai F_CPU tetap 1MHz dan nilai F_CPU ini di gunakan untuk perhitungan dari delay_ms dan delay_us, dan dari sini saya coba buat program yg sifat delaynya berdasarkan nilai dari clock eksternal atau frekuensi osilator walaupun dari program yg saya beri di atas belum sepenuhnya di bilang presisi
tapi lumayan lah buat berbagi ilmu dan mohon koresksinya jikalau salah :)
Mas, kalo perbedaan antara mode phase correct pwm, mode normal dan ctc itu bedanya diapanya ya? kalo yang digunakan untuk program delay sebaiknya dengan menggunakan mode apa ya? Thanks, Best Regards
ReplyDeletesetau saya mas kalau mode normal ada 3 pilihan di dalamnya yaitu
Delete1. normal overflow (baru yg satu ini pernah saya coba)
2. normal compare match
3. mode normal input capture
kalau mode CTC dia akan mencacah naik sampai puncak kemudan kembali ke nol lagi kemudian akan mengeset )CF1 untuk memulai intrup timer jika diaktifkan
kalau phase correct pwm dia sifat pencacahnya bolak balik misalkan awalnya mencacah naik setelah sampai puncak dia akan memcacah turun terus jika sampai ke ke nol akan mengulang mencacah naik lagi dan begitu seterusnya
itu yang saya tau mas maaf kalau masih salah :)
sumber : Buku Mikrokontroler AVR ATmega8/32/16/8535 dan Pemrogramannya dengan Bahasa C pada WinAVR, Karya Ardi Winoto
kalau untuk delay saya menggunakan mode normal dengan intrupsi overflow mas :)
DeleteAsskum gan,,,
ReplyDeleteCodevision AVR itu software atw aplikasi,,???
bantu saya gan
saya mw buat delay macro x7
itu nama software gan bisa di download disini
Deletehttp://www.rizrobot.com/2013/03/software-codevisionavr-2053-full.html
kalau yg ukuran macro apa ya bedanya dengan micro?
saya mau buat timer 15 detik 8 bit kok hasil perhitungan nya minus ya..
ReplyDeletemhon bantuannya..
anda harus tau dulu Tmax dari timer 8 bit nya, sepertinya untuk 8 bit gak mampu per 15 detik kecuali ditambah beberapa program loop
Deletesaya mau nanya gan,
ReplyDeleteuntuk seting delay dalam skala mikro second dengan clock 12 MHz bisa g ? klau bisa lihat configurasinya. thx
kalau mengunakan clock 12MHz dengan prescaler 1024 maka waktu maksimal yang bisa di gunakan
Deletetimer1 (16 bit) = 5.59240533 s
timer0 (8 bit) = 0.0218453 s = 21.8453 ms
jadi bisa digunakan seharusnya tetapi setelah saya hitung hitung jika ingin micro second hanya bisa dari per 100 us
untuk configurasinya bisa mengunakan timer 8 bit dengan perhitungan diatas ya
Trimakasih sudah berkunjung
materi yang keren..
ReplyDeletesaya mau tanya,
bagaimana jika saya mau membaca ADC yang mempunyai data 100Hz.
saya mau sampling per 1ms per 1 Hznya.
gimana caranya ya?
terima kasih
kalau menurut saya sih buat saja intrupsi per 1 ms kemuddian data ADCnya di simpan kedalam 100 data yg mewakili 1 hz nya
Deletemaaf ni mas, boleh diberikan contoh..
Deletesaya blm pernah kombinasi adc dgn interup.
mohon bantuannya..
terima kasih
maaf sbelumnya utuk data 100Hz itu maksudnya 0-100 hz sama dengan 0-255 ADC 8bit atau 0-1023 ADC 10bit?
DeleteThis comment has been removed by the author.
Deletesinyal inputan frekuensinya max 100 - 120 Hz konstan dari fungtion generator.
Deletesaya menggunakan 10bit.
minta tlg contohnya mas caranya.
terima kasih
biar data frekuensi dengan nilai max td dapat termonitoring saya monitor data perubahannya.
Deletememangnya tegangan yg keluar dari FG dengan freq 100-120 hz tersebut brp volt?
Deletesy masih belum ngerti konsep anda soalnya :-?
outputnya max 5 volt dr freq max 120 Hz dengan ADC 10 bit 1023 gan.
Deletesy mau nyoba buat frequensi meter.
jika bisa mas samplingnya diatur gitu..
Deletekeren kayaknya..
(y)
Mau nanya mas bagaimana membuat delay ini tapi program lain masih jalan? kayak di arduino itu menggunakan millis, bagaimana dengan menggunakan cvavr? butuh bantuannya mas,. thanks :)
ReplyDeletememangnya anda mau buat delay untuk apa? kalau program lain tetep jalan itu bukan delay namanya mas, yang pasti beda konsep dengan delay, dan setau saya milis itu bukan delay dia hanya untuk membalikan nilai milisecond dari delay saat program di start, dan akan kembali ke nol saat overflow
Deletemas saya butuh delay di atmega16 sampe dengan 90.000 ms (90 detik) tapi selalu eror dan maksimal delay hanya 65.000 (65 detik) apa bisa dibuat sampai 90 detik mas ?
ReplyDeletebisa kok mas mau dibuat 90 detik tapi sedikit di edit scriptnya, seperti ini
Delete#include
unsigned long x=0;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0xF8;
x++;
}
void tunda(unsigned long waktu)
{
TIMSK=0x01; //inisialisasi untuk mengaktifkan interrupt timer0
while (x<waktu){} //padasaat nilai x lebih kecil dari waktu maka tidak melakukan apa-apa
x=0; //jika nilai x lebih besar dari waktu maka nilai x reset jadi 0 (nol)
TIMSK=0x00; //inisialisasi untuk menon aktifkan interrupt timer0
}
void main(void)
{
PORTA=0x00;
DDRA=0x03; //setting PORTA.1 dan PORTA.2 sebagai output
TCCR0=0x05; //setting timer0 dengan prescaler 1024
TCNT0=0xF8; //nilai timer value dari hasil perhitungan timer 8 bit
OCR0=0x00; //pin OCR0 tidak di aktifkan
TIMSK=0x01; //inisialisasi untuk pengaktifan interrupt timer0
#asm("sei") //variabel global interrupt
while (1) //loop forever
{
PORTA.0=1; //led pada PORTA.0 aktif
tunda(90000); // tunda 1000ms
PORTA.0=0; //led pada PORTA.0 mati
tunda(90000); //tunda 1000ms
}
}
harus nya dengan mengubah tipe data saja sudah bisa mengunakan nilai 90000, tapi jika masih error bisa hubungi saya via email rino@noosite.com
terimakasih banyak mas.. nanti kalo saya punya pertanyaan akan saya email langsung.
Deletesama-sama mas semoga bermanfaat
Deleteterimakasih mas rino , sangat bermanfaat ilmunya
ReplyDeleteMas mau tanya, ini kn saya mengeset timer 1dtik tp semua program yng sy buat kok berpengaruh ya?
ReplyDeleteJadi awalnya adcnya berubah cepet, stelah sya masukkan beberapa program yng lebih kompleks kok kcepatn eksekusi program. Mengikuti timernya ya
Mohon pencerahannya tq
Mas saya mau tanya,
ReplyDeleteSaya kan bikin atmega 16
Saya mau memprogram buzzer dan seven segmen menyala selama 500ms / 0,5 dtk tapi di kejadian itu Aku mau lampu led menyala berurutan dari atas ke bawah bergantian/ beriringan .
Jadi yang saya tanyakan itu gimana cara membuat delay dalam delay?
Kalau di dalam konsep yang mau aku terapkan you harus memperpanjang delay dari buzzer dan seven segmen agar lampu led bisa lebih lambat pergeraknnya atau gimana mas.