สอบถามการใช้ timer เพื่อให้ได้ 1 วินาทีคะ

Started by manaw, February 09, 2013, 10:00:48 PM

Previous topic - Next topic

samira

ขอบคุณมากๆครับ

มองเห็นภาพชัดเจนเลย เข้าใจการทำงานของมันแล้วครับ

" If you're born poor, it's not your mistake. But if you die poor, it's your mistake"
Bill Gates.

firmware.c

IAR Embedded Workbench for ARM
AVR-Studio + AVR-GCC
CodeBlocks + MinGw
CodeBlocks + Gtk+

manaw

ได้แล้วคะ 1 sec เลยคะ ตอนแรกก็เกิดปัญหาที่ fuse เนื่องจากไป fuse ผิด ได้คำแนะนำจากพี่ crywolf ก็ได้ 1 sec เลยคะ ขอบคุณมากคะ


forkee

 ;) ขออนุญาติเก็บนะครับ ความรู้ทั้งนั้น
รับทำระบบบำบัดน้ำเสีย ,ตู้ควบคุม ,PLC ,SCADA
จำหน่ายอุปกรณ์ในระบบบำบัดน้ำเสีย

JMew

ว๊าย พี่ทำวิธีของคุณ crywolf ได้ 1.000 วินาที เหมือนกันเลย ขอบคุณมาก ๆ ค่ะ

$regfile = "m88def.dat"
$crystal = 8000000
$hwstack = 100
$swstack = 80
$framesize = 24
$baud = 9600

'CTC mode
Config Timer1 = Timer , Prescale = 1 , Clear Timer = 1       
On Compare1a Comp1_int
Enable Oc1a

Defbyte B

Compare1a = 80000                       '=10 ms
Enable Interrupts

'main
   Do
      If B_flag = 1 Then      'print every second
         Print B_hour ; ":" ; B_minute ; ":" ; B_second
         B_flag = 0
      End If
   Loop

End

Comp1_int:
   Incr B_tick                          'B_tick = 10 ms

   If B_tick = 100 Then : B_flag = 1:
      B_tick = 0
      Incr B_second
   End If

   If B_second > 59 Then
      B_second = 0
      Incr B_minute
   End If

   If B_minute > 59 Then
      B_minute = 0
      Incr B_hour
   End If
Return
โครงการกะเทยท่องโลก

p_chusak

ตามที่ท่าน  crywolf บอกนั่นแหละ เปะเลย ผมใช้ประจำ เป็น time base ของโปรแกรมเลย ทั้ง mS และ Sec. ในตัวเดียวกัน
แต่ถ้าเอามาทำ RTC ใช้ Async mode โดยการต่อ xtal ภายนอก ยิ่งเปะมากๆ และมันยังเอาไปไว้ปลุกให้ cpu ตื่นได้ด้วย หากใช้ timer แบบอื่น บางtimer บางตัว ดัน ปลุก cpu ไม่ได้

firmware.c

ขึ้นอยู่กับ sleep mode แต่ละ mode ครับ ถ้า power down mode ต้องเป็น asynchronize timer อย่างเดียว
IAR Embedded Workbench for ARM
AVR-Studio + AVR-GCC
CodeBlocks + MinGw
CodeBlocks + Gtk+