satu langkah kenaikan yang 16bit Timer

H

hhhsssmmm

Guest
Halo

Saya telah PIC18F2420 berjalan melalui 4MHz resonator keramik .... dan compiler yang digunakan adalah C18.

Saya dapat satu langkah kenaikan TMR0 (8bit mode) hanya dengan mengubah TMR0L regsiter nilai dari 00 - FF.Sehingga memungkinkan ....

TMR0L = 0;

So i dapat mengubah TMR0 mengganggu setiap langkah hanya dengan perintah TMR0L ...( yang 256us dari semua jalan ke 1us).

Pertanyaan saya sekarang adalah, bagaimana bisa melakukan langkah serupa tunggal untuk 16bit waktu?Dan kerana itu im confused im asking sejak 16bit waktu telah mendaftar ke dua initiallize .... misalnya untuk timer1 adalah initiallized Dari 5ms dan ingin satu langkah dengan incrementing ke 10ms .... kita ada ...

5ms intiallized TMR1
-----------------------
TMR1L = 78;
TMR1H = EC;

..... jadi dari sini bagaimana you dalam serupa 8bit mode, tunggal langkah sebuah 16bit Timer semua cara 10ms?Harap ada yang bisa membantu saya di sini?

terima kasih
haseeb

 
I think you misunderstood ada titik yang sebenarnya dari Timer.Anda tidak perlu kenaikan sendiri, dilakukan secara otomatis.Jika Anda mengatur waktu sebagai counter,
maka kenaikan itu sendiri pada setiap siklus instruksi CPU.

Jadi, jika anda lakukan:TMR0L = 0;
Nop
Nop
Nop
Nop

Nilai TMR0L sekarang akan 4 karena Anda
telah selesai 4 petunjuk.

Anda dapat prescale Timer yang dianggap sehingga setiap detik, keempat, 8th, ....64. ....256. Instruksi.Setelah berjalan lebih dari bagian atas (dan kembali dimulai) ia menghasilkan sebuah interrupt.

Dengan PIC18Fs Anda juga memiliki ccp modul yang benar-benar dapat menghasilkan sebuah interrupt setelah Timer nilai sama dengan yang dipilih pra-nilai khusus di ccp fungsi register.Jadi, selain memiliki instruksi interrupt pada siklus 65.535, Anda bisa menghasilkan sebuah interrupt pada putaran nice angka 50,000 petunjuk siklus, sehingga waktu lebih mudah

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Senyum" border="0" />
 
thank you for replying.

ok i understand your point.

Tetapi seandainya saya yang diperlukan untuk kenaikan 16bit waktu setelah setiap 10ms INT .... bagaimana Anda akan melakukannya ?.... saya menjelaskan lebih lanjut ...

suppose i had a INT0 interrupt pada setiap 10ms.Jadi dalam INT0 ISR, i would like to re-initialize the 16bit timer dan memiliki keuntungan dari 5ms .... maka pada INT0 kenaikan dari 6ms .... maka pada INT0 kenaikan dari 7ms
dsb .. all the way ke 10ms ... kemudian kembali ke 5ms ulang lagi pada INT0 ..... artinya mengubah waktu initiallization nilai di setiap INT0 mengganggu sekali saja.

Saya tahu cara ini dapat dilakukan oleh banyak orang lain jika pernyataan dan dapat menulis nilai waktu yang dikehendaki dalam pernyataan-pernyataan ini .... tapi saya ingin agar dapat di operasi sama seperti dengan tepat waktu dan 8bit .. ..

8bit untuk timer, i suppose kenaikan variabel bohlam di setiap 10ms (INT0)
Di INT0 ISR i bohlam yang kemudian menetapkan variabel variabel ke timer0 sebagai .....

TMR0L = bohlam;

ini akan reinitiallize yang timer0 ke nilai baru sebagai pengganti saya harus menghitung dan menulis dikehendaki TMR0L nilai dalam diri saya.

Jadi kamu mengikutiku ?....... di 8-bit dengan waktu yang sama saya ingin kenaikan waktu yang 16bit juga.

Bagaimana ini dilakukan?

Haseeb

 
Jika Anda hanya perlu tambahan 16 bit nilai, mengapa tidak mendeklarasikan variabel (tidak menggunakan sama sekali waktu) dan kenaikan variabel yang setiap kali terjadi peristiwa yang diinginkan?Anda juga dapat mengatur waktu sehingga dianggap pulses tertentu pin, bukan menghitung siklus instruksi.

 
menggunakan fitur auto reload timer.
atau menulis ans ISR yang akan kembali nilai yang diinginkan pada akhir downcount.
BTW waktu adalah desain untuk downcount.maka Anda harus kembali nilai FF-hitung-hitungan dan FFFF.Anda juga dapat menentukan dengan tanda-.

hcokDitambahkan setelah 3 bulan:menikmati program ini.

gadaian
Maaf, tapi Anda harus login untuk melihat lampiran

 

Welcome to EDABoard.com

Sponsor

Back
Top