ผู้เขียน หัวข้อ: นอกเรื่องDiy นิดครับ สงสัยเรื่อง Arduino  (อ่าน 4833 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ วัยรุ่นเลบานอน?

  • Sr. Member
  • ****
  • กระทู้: 319
  • ถูกใจกด Like+ 6
  • เเก๊งค์เเมวเหมียวหมูดำ
นอกเรื่องDiy นิดครับ สงสัยเรื่อง Arduino
« เมื่อ: 06 มกราคม 2012, 03:49:23 AM »
ขอนอกเรื่องDiy นิดนึงครับ น้า ท่านใดเก่ง  MCU รบกวนถามนิดครับ ใน Arduino ปรับ PWM ที่ความถี่ 10Khz ยังไงครับ ผม
Contact Us        
ถ้าต้องเลือกระหว่าง "นกไร้ขา" กับ "นกไร้ปีก" เธอจะเป็นอะไร?

ออฟไลน์ audiomania

  • Hero Member
  • *****
  • กระทู้: 2455
  • ถูกใจกด Like+ 402
  • เพศ: ชาย
Re: นอกเรื่องDiy นิดครับ สงสัยเรื่อง Arduino
« ตอบกลับ #1 เมื่อ: 06 มกราคม 2012, 08:50:16 AM »
เรื่องความถี่ ของเดิมเค้ากำหนดค่า reload  กับโหมดเบื้องต้นจาก library แล้ว
ถ้าจะเปลี่ยนความถี่ ให้ใช้วิธีเขียนเข้าถึงรีจิสเตอร์กลุ่มไทเมอร์ตัวที่คุมขา OCxx ในโปรแกรมครับ หรือลองขุด-แกะ library ใน hardware->arduino->cores->arduino->wiring_analog.c กับ wiring.c มาดูก็ได้ [gr_in]

ออฟไลน์ วัยรุ่นเลบานอน?

  • Sr. Member
  • ****
  • กระทู้: 319
  • ถูกใจกด Like+ 6
  • เเก๊งค์เเมวเหมียวหมูดำ
Re: นอกเรื่องDiy นิดครับ สงสัยเรื่อง Arduino
« ตอบกลับ #2 เมื่อ: 06 มกราคม 2012, 09:38:05 AM »
อ่าส์ ขอบคุณมากครับ
อ้างถึง
How to adjust Arduino PWM frequencies

Pins 5 and 6:
Setting   Divisor   Frequency
0x01   1   62500
0x02   8   7812.5
0x03   64   976.5625
0x04   256   244.140625
0x05   1024   61.03515625

TCCR0B = TCCR0B & 0b11111000 | <setting>;


Pins 9 and 10:
Setting   Divisor   Frequency
0x01   1   31250
0x02   8   3906.25
0x03   64   488.28125
0x04   256   122.0703125
0x05   1024   30.517578125

TCCR1B = TCCR1B & 0b11111000 | <setting>;


Pins 11 and 3:
Setting   Divisor   Frequency
0x01   1   31250
0x02   8   3906.25
0x03   32   976.5625
0x04   64   488.28125
0x05   128   244.140625
0x06   256   122.0703125
0x07   1024   30.517578125

TCCR2B = TCCR2B & 0b11111000 | <setting>;
 
ดูพี่หรั่ง เขามีเเนวทางมาอย่างนี้ เทสเเล้วโอเคเลย  เเต่ที่มาของวิธีการคิดนี่ [phok]
Contact Us        
ถ้าต้องเลือกระหว่าง "นกไร้ขา" กับ "นกไร้ปีก" เธอจะเป็นอะไร?

ออฟไลน์ วัยรุ่นเลบานอน?

  • Sr. Member
  • ****
  • กระทู้: 319
  • ถูกใจกด Like+ 6
  • เเก๊งค์เเมวเหมียวหมูดำ
Re: นอกเรื่องDiy นิดครับ สงสัยเรื่อง Arduino
« ตอบกลับ #3 เมื่อ: 07 มกราคม 2012, 03:22:53 AM »
555 ปวดหัวกับมัน มาสองวัน เต็ม ๆ เเละคาดว่าจะต้องอยู่กันมันอีกนาน AVR+arduino  ลอง ดูได้ครับ  อัพไฟล์ มาให้เเล้ว>>> Powered By พี่น๊อตEE 

เป็นไฟล์ datasheet , timer0-2 A,B   
อ้างถึง
#include <avr/io.h>

//int outputValue = 0;
//-----------------------------------------------------------------------------
//  Initialize Timer/Counter0 for PWM
//-----------------------------------------------------------------------------
int val;
void setup()
{
pinMode(0,INPUT);
   Serial.begin(9600);
   // DDRB |= _BV(PB2);   
    TCCR1A = 0b10100011;   
    TCCR1B = 0b00010001;
    OCR1A=800;  // อ้างอิงสมการ f=(systemclock)/2N*OCR1A
   
   // TCCR2A = 0b00010001;   
    //TCCR2B = 0b00001001;
    //OCR2A=200;       
    //OCR1B=128; 
   
}

//-----------------------------------------------------------------------------
//  Main
//-----------------------------------------------------------------------------
void loop()
{
    //TCCR1A = 0b10100011;   
   // TCCR1B = 0b00010001;
   // OCR1A=128;     
   int val=analogRead(0);
   val=map(val,0,1023,0,800);
    analogWrite(10,val);
    //analogWrite(3,100);
    delay(50);
  Serial.println(val);
}

 เป้นเเนวทางคร่าวๆ
ปล.ผมไม่ได้เก่งอะไรนะครับ เห็นว่ามันน่าจะมีประโยชน์ต่อคนที่ต้องการใช้งาน(เห็นพี่หรั่งถามกันยันเลย ไม่ค่อยมีคนตอบเเบบตรงๆกันเท่าไหร่) ไฟล์ ต้นฉบับได้มาจากรุ่นพี่คนหนึ่งชื่อพี่น็อตครับ ขอขอบคุณมา ณ ที่นี้ด้วย ขอบคุณครับ [res]
Contact Us        
ถ้าต้องเลือกระหว่าง "นกไร้ขา" กับ "นกไร้ปีก" เธอจะเป็นอะไร?