สวดยอดเลยครับ
Printable View
สวดยอดเลยครับ
ผมสั่งปลั้ก OBD ไปตั้งเดือนนึงแล้วจากเมกา จนบัดนี้ยังไม่โผล่มาเลยครับ
ว่าจะเอามาลองเล่น can bus ทำขายแข่งกับ smart gauge ซะหน่อย
น้ายงไปไหนละ เผอิญผมเปิดเจอกล่องโปรสปีด ดันราง ยกหัวฉีด ฯลฯ โอ้ว์แม่จ้าว ราคากล่องเอาเรื่องเหมือนกันนะ บางกล่องมี40กว่าพันเลย เป็น picgy bag แพงกว่าเครื่องเบนซินอีก หนาวเลยครับ
1 Air Temp1 ก็คือตรง Sensor อากาศขาเข้า ร้อนเย็นแค่ใหน ถ้าเย็นก็จะ คำนวนการจ่ายน้ำมัน มาก--ปรับแบบแบ่งแรงดันลงกราวด์
2 Air Flow Sensor ก็คือ วัดปริมาณการใหลของอากาศ เร็วช้าแค่ใหน ถ้าใหลมากก็จะ คำนวนการจ่ายน้ำมัน มาก( เพิ่มกระแสไฟให้วงจร ตามการกดคันเร่ง (ใช้งานอยู่))
3 Air Temp2 อากาศ หลังออกจากโบ ร้อนเย็นแค่ใหน ถ้าเย็นก็จะ คำนวนการจ่ายน้ำมัน มาก--ปรับแบบแบ่งแรงดันลงกราวด์ ง่าย ๆ(ผมปรับแล้วดูจาก Com+Obd2+Program ใช้งานอยู่)
4 Map Sensor แรงดันในท่อร่วม ID ที่มาจากโบ มามาก ความดันจะสูงแสดงว่าอากาศมาก จะฉีดมากตามไปด้วยผมอัดด้วยการ หลอก Map ขึ้นไปอีก( ใช้งานอยู่)
5 Pedal Sensor คันเร่ง ทำการเพิ่มความเร็วในการตอบสนองให้เป็น 2 เท่า โดยวงจร Elec หรือ MCU
6 Rail Pressure Sensor หรือ ดันรางโดยการ ลดแรงดันไฟฟ้าที่มาจาก Sensor ไม่ยาก ไม่ง่าย แต่ผมทำได้( ใช้งานอยู่ จ๊ะ
)
ซึ่งทั้งหลายทั้งปวงที่ว่ามา ECU จะเอาผลของค่า Sensor ต่าง ๆ ไปวิเคราะห์ว่า สรุปแล้ว จะยกหัวฉีดนำร่อง กี่วินาที่ แล้วจะฉีดซ้ำ ล่าช้าออกไปอีกกี่ วินาที และฉีดจริง เท่าใหร่
************
ส่วนกล่อง Prospeed นั้น เป็น MCU ครับก็ต้องยอมรับครับถ้าต้องการแบบ เสต๊ปเทพ
ถ้าเอาแบบเสต๊ป มาร ก็ คบกับผม อิ อิ อะ ล้อเล่ง
ผลงานน่าสนใจมากๆเลยครับ ผมติดตามมาเรื่อยๆ แต่ไม่ค่อยมีความรู้ด้านนี้ คงต้องค่อยๆศึกษาไป สำหรับพวกวงจร wiring ของ triton หาได้จากที่ไหนได้ครับ
สั่งเฉพาะปลั้กที่ใช้เสียบกับรถครับ ลองหาดูในเวบขายอุปกรณ์ elec ไม่เจออ่ะครับ
ส่วนตัวที่เป็น elm มีแล้วครับ อิอิ
ส่วน canbus ยังเขียนไม่เป็นครับเพิ่งลองเพิ่งศึกษา MCU เหมือนกัน แต่ดูๆแล้ว compiler มันี library ของ canbus อยู่เหมือนกันน่าจะ interface กันไม่ยาก (มั้งงง)
จากห้องนี้แหละน้า
http://www.mitsubishi-forums.com/t25...hop-manual.htm
นี่ของนอก (เป็นแหล่งที่มาเดียวกันครับ)
น้ายง ทำไมเราไม่มาเป็นจอมมารระดับเทพ ล่ะครับบบ
สู้ๆครับน้า ไม่ได้มาเยี่ยมนานแล้วไปไกลเลยนะครับ ช่วงนี้ลูกยังเล็กไม่ได้จับไรเล่นเลยครับ
สู้ๆๆๆ กล่องดันรางในอนาคตชื่อ YY Red line...อิอิ
น้าๆครับหนังสือpicที่น้าใช้ศึกษาใช่เล่มไหนวานน้าโชว์หน้าปกหน่อยครับจะได้หามาอ่านประดับความรู้
มีใครมีโปรแกรมจูนกล่อง ECU SHOP ไหมครับ พอดีน้องเขาสับกล่องกัน จากกล่องมือหมุนมาเป็นจูนคอม แต่ไม่มีwiring กับโปรแกรมจูน หรือว่าต้องไปให้ตัวแทนต่อสายและจูนให้ครับ
ลูกชายลูกสาวครับน้า Jee
สุขสันต์ วันแห่งความรัก ครับ
อิอิอิ ถ้าเก่งถึงขั้นนั้น จะแจกเบิกทางใน ห้องเรียน นี้ก่อนใครครับ
***********
ช่วงนี้กำลังซุ่ม ออก นวัตกรรมใหม่ เลยวาง ดันรางใว้ แป๊บ 1
ที่จริง ทำเสร็จ มาพักหนึงแล้ว ตอนนี้กำลัง ทดลอง การใช้งานอยู่ครับ
เมื่อทุกอย่างไม่มีปัญหา จะบอกให้ทุกท่านรู้ จ้า
รอติดตาม....
คิดถึงน้า่ยงจังครับ ซุ่มจับยาบ้าอยู่แน่เลย อิอิ ผมรอ ผบ.อนุมัติงบประมาณในการจัดซื้อชุดทดลองให้เหมือนน้ายงอยู่ครับ จะใด้ต่อยอดใด้เลย พอดีช่วงนี้ใช้งบลงทุนงานหลักเยอะครับ เลยต้องรอก่อนครับ
น้ายงครับ รบกวนส่งไฟล์ให้ทีครับ อันนี้ไฟล์มันหมดอายุแล้วครับ กำลังศึกษาตามน้าๆไปติดๆครับ ผมจะลองมาคาลิเบสในprotus ครับ ส่งมาที่เมล์ผมก้อใด้ครับ pokneed@hotmail.com
ผมไม่เข้าใจการเขียนฟังชั่นบางอย่าง ฟังชั่นพื้นฐานพอใด้อยู่ครับ เด๋วมีไรจะให้น้ายงสอนนะครับ
ได้ครับ
เดียวต้องไปค้นดูในกรุก่อนนะครับ
วางใว้นาน ไม่รู้ตัวใหน version ใหน
เอาเป็นว่าบอกกันแบบ row-to-row เลยเนาะ
/////////////////////////////////////////////////////////////
#define beep1 PORTC.F3 //BC548 BUZZER 5V ขา C3 ต่อออกขับ buzzer
#define Dis PORTC.F4 //DISPLAY CONTROL ขานี้ ต่อเข้า LCD เอาไว้สั่งกระพริบเวลาที่เสียงเตือนดังจะได้สดุดตา
unsigned long int pedal1,pedal2,pedal_v,x; //ประกาศตัวแปลเพื่อใช้คำนวนเปรียบเทียบ ค่า -23000 > +24000 (ประมาณ)เปิดตำราประกอบเอง
unsigned char v1,v2,v3; //ประกาศตัวแปลอีกแบบ ค่า 0-255
void main()//กำหนดหัวข้อหลัก
{
TRISA=0XFF;// Port A ทั้งหมดเป็น Input ระหัสฐาน2 = 1111 1111 ( TRIS_)
TRISB=0x00;//Port B ทั้งหมดเป็น output ระหัสฐาน2 = 0000 0000
TRISC=0X00;//เหมือนข้างบน
TRISD=0X00;//เหมือนข้างบน
TRISE=0X00;;//เหมือนข้างบน
PORTB=0X00;//ทีนี้ตรงนี้จะสั่งเป็น PORT_ก็คือเคลียค่า PORT_ ให้เป็น 0 หรือดับไฟเมื่อเริ่ม Program
PORTC=0X00;//เหมือนข้างบน
PORTD=0X00;//
PORTE=0X00;//
Lcd_Init(&PORTD);//สั่งกำหนด PORTD เป็นขาสั่งงาน LCD
Lcd_Cmd(LCD_Clear);//เคลียจอก่อน
Lcd_Cmd(lcd_cursor_off);//ปิดจุดกระพริบบน LCD
Dis=1;//เปิดสัญญานไฟที่เราต่อไว้จ่ายให้ LCD เป็นความต้องการส่วนตัว ฮุฮุ
Lcd_Out(1,5,"POWER ON");//แสดงข้อความเมื่อเปิดระบบทำงาน
delay_ms(1000);
for(x=0;x<3;x++)
{
beep1=1;
delay_ms(50);
beep1=0;
delay_ms(50);
}
while(1)//ในขณะที่เปิดไฟเลี้ยงวงจุอยู่ให้ทำงานข้างล่างนี้
{
pedal_v=Adc_Read(0);// pedal_v= สัญญาน อะนาล็อค V จาก Sensor เข้าที่ขานี้ในที่นี้คือ สัญญาน คันเร่งหลัก
pedal_v=pedal_v*489/1000;//กำหนดค่าที่อ่านมาได้แล้ทำการหารออก เพื่อแสดงผลออก LCD
v1=pedal_v/100;//ผลจากการหาร100 เป็นหลัก Volte เพื่อแสดงผลออก LCD ของ V1
v2=(pedal_v%100)/10;//หลักหลังจุดทศนิยม
v3=pedal_v%10;//หลักหลังจุดทศนิยมถัดไป
Lcd_Out(2,2,"PEDAL");//แสดงผลออก LCD =PEDAL
Lcd_Chr(2,8,v1+48);//แสดงผลออก LCD เช่น 1
Lcd_Chr(2,9,'.');//แสดงผลออก LCD คือ 1 .
Lcd_Chr(2,10,v2+48);//แสดงผลออก LCD เช่น 1.2
Lcd_Chr(2,11,v3+48);//แสดงผลออก LCD เช่น 1.25
Lcd_Chr(2,14,'V');แสดงผลออก LCD LCD เช่น 1.25 V
Delay_ms(100);
pedal1=Adc_Read(0);//ให้ pedal1=สัญญาน อะนาล็อค V จาก Sensor เข้าที่ขานี้ในที่นี้คือ สัญญาน คันเร่งหลัก
delay_ms(1000);//หน่วงเวลา 1 วินาที
pedal2=Adc_Read(0);//อ่านค่าคันเร่งอีกที แต่เก็บค่าใว้ในค่าที่ 2 เพื่อเปรียบเทียบกัน
{
loop1:
if(pedal2>=(pedal1+100)&pedal2<(pedal1+200))//ถ้าคันเร่งค่าที่2 มากกว่าหรือเท่ากับ ค่าคันเร่งที่ 1 +100 (100*.00489=1.489V)
{
Lcd_Cmd(LCD_Clear);//ให้ทำงานภายในงาเล็บปีกกานี้ ทั้งหมด
PORTB=0X17;//ค่านี้ต้องตรงกันกับขาที่ต่อไปคุมสัญญาน ที่จะหลอก คือ portb=0001 0111
//ตาม Program ที่ผมเขียนคือ สัญญาน - Com Air---Water temp---Air Temp2---Air Temp1---Airflow .....
Lcd_Out(1,1,"ON AT2 AF");//แสดงผลออก LCD
Delay_ms(100);
pedal2=Adc_Read(0);//อ่านค่าคันเร่งเป็นข้อมูลส่วนที่ 2 อีกครั้งเพื่อคำนวนว่าคันเร่งยังถูกเร่งอยู่หรือเปล่า
while(pedal2>=pedal1) {goto loop1;}//ถ้ายังเร่งอยู่ให้กลับวนซ้ำอยู่ที่นี่ จนกว่าจะลดคันเร่งน้อยกว่า ค่าที่เก็บไว้ ค่าที่ 1
}
}
loop2:
if(pedal2>=(pedal1+200)&pedal2<(pedal1+405))///ส่วนนี้ก็เปรียบเทียบจากข้างบนก็จะคล้ายกัน แต่เปิด Sensor ต่างกันตามชอบครับ
{
Lcd_Cmd(LCD_Clear);
PORTB=0x1F;
Lcd_Out(1,2,"ON AT2 AF MAP");
Delay_ms(100);
pedal2=Adc_Read(0);
while(pedal2>=pedal1) {goto loop2;}
}
loop3:
if(pedal2>=(pedal1+405))
{
Lcd_Cmd(LCD_Clear);
PORTB=0x0F;
Lcd_Out(1,1,"ON AT2 AF MAP WT"); Delay_ms(100);
Lcd_Out(2,3,"COM AIR OFF");Delay_ms(100);
pedal2=Adc_Read(0);
while(pedal2>=pedal1) {goto loop3;}
}
else {//// ถ้าการกดคันเร่งไม่ขึ้นเร็วเกินค่าที่ตั้งไว้เลย จะไม่ทำการใด ๆ
PORTB=0X10;
Lcd_Cmd(LCD_Clear);
Delay_ms(200);
Lcd_Out(1,2,"PEDAL ACTIVE");//แสดงข้อความตามชอบ แต่ต้องไม่เกินค่าที่ LCD แสดงผลได้ครับ
Delay_ms(100);
}
}
}
หวังว่าจะมีแต่รถแรง ๆ ครับ
ขอบคุณมากเลยครับ กำลังศึกษาครับ --ชุดpic เด็กน้อยของผมซื้อมา ตั้ง2ปีละ เพิ่งมาเริ่มเรียนครับ
น้ายงมี ทัชสแกน เวอร์ชั่นที่ไม่ต้องติดตั้งไหมครับ ถ้ามีจัดให้ผมทีนะครับ นี่อีแมวผมครับ pokneed@hotmail.com รบกวนน้าอีกละ
น้ายง ใช่อันนี้ป่าวครับ ฝากใว้2ที่ครับ เผื่อโหลดที่ใดไม่ใด้ครับ
http://www.upload-thai.com/download....f309d381aba99d
http://file2.uploadfile.biz/i/MXEMMEIMEVXMDX
กลับไปอ่านข้างบนครับ อับแล้วครับ
ฮฺฮฺฮฺ Downloadซ๊ะ
อาจแตกต่างกันบ้าง ลองทำความเข้าใจดูครับ เพราะทำใว้หลาย version งง เองครับ
แต่ที่ up ก็ใช้งานได้เลยครับ แต่ศึกษา วงจรอีกนิดหน่อยครับ บอกหมด มันจะไม่ได้คิด
ความรู้จะได้แน่น ๆ 5 5 5 5
เอาเป็นว่าบอกกันแบบ row-to-row เลยเนาะ
/////////////////////////////////////////////////////////////
#define beep1 PORTC.F3 //BC548 BUZZER 5V ขา C3 ต่อออกขับ buzzer
#define Dis PORTC.F4 //DISPLAY CONTROL ขานี้ ต่อเข้า LCD เอาไว้สั่งกระพริบเวลาที่เสียงเตือนดังจะได้สดุดตา
unsigned long int pedal1,pedal2,pedal_v,x; //ประกาศตัวแปลเพื่อใช้คำนวนเปรียบเทียบ ค่า -23000 > +24000 (ประมาณ)เปิดตำราประกอบเอง
unsigned char v1,v2,v3; //ประกาศตัวแปลอีกแบบ ค่า 0-255
void main()//กำหนดหัวข้อหลัก
{
TRISA=0XFF;// Port A ทั้งหมดเป็น Input ระหัสฐาน2 = 1111 1111 ( TRIS_)
TRISB=0x00;//Port B ทั้งหมดเป็น output ระหัสฐาน2 = 0000 0000
TRISC=0X00;//เหมือนข้างบน
TRISD=0X00;//เหมือนข้างบน
TRISE=0X00;;//เหมือนข้างบน
PORTB=0X00;//ทีนี้ตรงนี้จะสั่งเป็น PORT_ก็คือเคลียค่า PORT_ ให้เป็น 0 หรือดับไฟเมื่อเริ่ม Program
PORTC=0X00;//เหมือนข้างบน
PORTD=0X00;//
PORTE=0X00;//
Lcd_Init(&PORTD);//สั่งกำหนด PORTD เป็นขาสั่งงาน LCD
Lcd_Cmd(LCD_Clear);//เคลียจอก่อน
Lcd_Cmd(lcd_cursor_off);//ปิดจุดกระพริบบน LCD
Dis=1;//เปิดสัญญานไฟที่เราต่อไว้จ่ายให้ LCD เป็นความต้องการส่วนตัว ฮุฮุ
Lcd_Out(1,5,"POWER ON");//แสดงข้อความเมื่อเปิดระบบทำงาน
delay_ms(1000);
for(x=0;x<3;x++)
{
beep1=1;
delay_ms(50);
beep1=0;
delay_ms(50);
}
while(1)//ในขณะที่เปิดไฟเลี้ยงวงจุอยู่ให้ทำงานข้างล่างนี้
{
pedal_v=Adc_Read(0);// pedal_v= สัญญาน อะนาล็อค V จาก Sensor เข้าที่ขานี้ในที่นี้คือ สัญญาน คันเร่งหลัก
pedal_v=pedal_v*489/1000;//กำหนดค่าที่อ่านมาได้แล้ทำการหารออก เพื่อแสดงผลออก LCD
v1=pedal_v/100;//ผลจากการหาร100 เป็นหลัก Volte เพื่อแสดงผลออก LCD ของ V1
v2=(pedal_v%100)/10;//หลักหลังจุดทศนิยม
v3=pedal_v%10;//หลักหลังจุดทศนิยมถัดไป
Lcd_Out(2,2,"PEDAL");//แสดงผลออก LCD =PEDAL
Lcd_Chr(2,8,v1+48);//แสดงผลออก LCD เช่น 1
Lcd_Chr(2,9,'.');//แสดงผลออก LCD คือ 1 .
Lcd_Chr(2,10,v2+48);//แสดงผลออก LCD เช่น 1.2
Lcd_Chr(2,11,v3+48);//แสดงผลออก LCD เช่น 1.25
Lcd_Chr(2,14,'V');แสดงผลออก LCD LCD เช่น 1.25 V
Delay_ms(100);
pedal1=Adc_Read(0);//ให้ pedal1=สัญญาน อะนาล็อค V จาก Sensor เข้าที่ขานี้ในที่นี้คือ สัญญาน คันเร่งหลัก
delay_ms(1000);//หน่วงเวลา 1 วินาที
pedal2=Adc_Read(0);//อ่านค่าคันเร่งอีกที แต่เก็บค่าใว้ในค่าที่ 2 เพื่อเปรียบเทียบกัน
{
loop1:
if(pedal2>=(pedal1+100)&pedal2<(pedal1+200))//ถ้าคันเร่งค่าที่2 มากกว่าหรือเท่ากับ ค่าคันเร่งที่ 1 +100 (100*.00489=1.489V)
{
Lcd_Cmd(LCD_Clear);//ให้ทำงานภายในงาเล็บปีกกานี้ ทั้งหมด
PORTB=0X17;//ค่านี้ต้องตรงกันกับขาที่ต่อไปคุมสัญญาน ที่จะหลอก คือ portb=0001 0111
//ตาม Program ที่ผมเขียนคือ สัญญาน - Com Air---Water temp---Air Temp2---Air Temp1---Airflow .....
Lcd_Out(1,1,"ON AT2 AF");//แสดงผลออก LCD
Delay_ms(100);
pedal2=Adc_Read(0);//อ่านค่าคันเร่งเป็นข้อมูลส่วนที่ 2 อีกครั้งเพื่อคำนวนว่าคันเร่งยังถูกเร่งอยู่หรือเปล่า
while(pedal2>=pedal1) {goto loop1;}//ถ้ายังเร่งอยู่ให้กลับวนซ้ำอยู่ที่นี่ จนกว่าจะลดคันเร่งน้อยกว่า ค่าที่เก็บไว้ ค่าที่ 1
}
}
loop2:
if(pedal2>=(pedal1+200)&pedal2<(pedal1+405))///ส่วนนี้ก็เปรียบเทียบจากข้างบนก็จะคล้ายกัน แต่เปิด Sensor ต่างกันตามชอบครับ
{
Lcd_Cmd(LCD_Clear);
PORTB=0x1F;
Lcd_Out(1,2,"ON AT2 AF MAP");
Delay_ms(100);
pedal2=Adc_Read(0);
while(pedal2>=pedal1) {goto loop2;}
}
loop3:
if(pedal2>=(pedal1+405))
{
Lcd_Cmd(LCD_Clear);
PORTB=0x0F;
Lcd_Out(1,1,"ON AT2 AF MAP WT"); Delay_ms(100);
Lcd_Out(2,3,"COM AIR OFF");Delay_ms(100);
pedal2=Adc_Read(0);
while(pedal2>=pedal1) {goto loop3;}
}
else {//// ถ้าการกดคันเร่งไม่ขึ้นเร็วเกินค่าที่ตั้งไว้เลย จะไม่ทำการใด ๆ
PORTB=0X10;
Lcd_Cmd(LCD_Clear);
Delay_ms(200);
Lcd_Out(1,2,"PEDAL ACTIVE");//แสดงข้อความตามชอบ แต่ต้องไม่เกินค่าที่ LCD แสดงผลได้ครับ
Delay_ms(100);
}
}
}
หวังว่าจะมีแต่รถแรง ๆ ครับ
ทำแทบสีเอาใว้เผื่อมีคนผ่านมาจะใด้ไม่ตาลายและไม่งงครับ ผมลองเทสดูแล้ว เดาทางวงจรและโปรแกรมพอใด้เยอะละ แต่ติดเรื่องการอ่านโค๊ดบ้างพอสมควรครับ และที่สำคัญ จอlcdทำงานยังไงผมยังงงอยู่เลย จะสั่งมานยังไงเอ่ย
ใช้ mikroC เป็นคอมไพเลอร์ lcd กับ ADC เป็นไลบรารี่มาตรฐานอ่ะครับ ลองโหลดคู่มือมาดูอธิบายไว้ละเอียดครับ
http://www.mikroe.com/pdf/mikroc_pic...anual_v100.pdf
Mikro C PRO กับ Mikro C กับ Mikro Basic การเขียน Code ค่อนข้างจะต่างกันพอประมาณครับ
ซึ่งไม่สามารถ เอา Code ของแต่ละตัว มา Compare กันได้ต้องแก้ไขอีกที่
แต่ถ้าท่านใด ชำนาญ ทั้งหมดก็อ่าน Code แล้วมาเรียบเรียงใหม่ได้เช่นกันครับ
แต่ผมเขียนเป็นแค่ Mikro C ระดับเริ่มต้นเท่านั้นครับ ยังไม่ถึงขั้น
และการเขียนคำสั่ง LCD ใน ทั้ง 3 Compiler ก็ต่างกันอยู่ครับเขียนแทนกันเลยไม่ได้ครับผม
ตัววิธีโปรแกรม C กับ C Pro ต่างกันด้วยเหรอครับ นึกว่า C Pro จะมี library ให้มาเยอะกว่าซะอีก
ก่ะว่าจะหันไปคบกับ อะดุยโน่ แล้วคับ
รบกวนสมาชิกดูโค้ดหน่อยครับ กะลังศึกษาเรื่องอินเตอร์รัปโดยใช้ timer (ตอนนี้ใช้ timer0 ของ PIC)
คือผมโค้ดตามตัวอย่างโดยเลือกให้อินเตอร์รับทุกๆ 0.01 วินาที นับให้ครบ 6 วินาทีแล้วสลับ logic ของขา RE0 วนไปเรื่อยๆ
ทีนี้อินเตอร์รับแรกมันก็สลับให้อยู่คือจาก 0 เป็น 1 แต่พอ reset cnt=0 พอครบ 6 วินาทีถัดมามันดันไม่สลับ logic จาก 1 เป็น 0 ให้ทั้งๆที cnt ก็นับต่อไปเรื่อยๆใน ISR
เลยงงๆว่าผมโค้ดอะไรผิดหรือเปล่าฝากน้าๆช่วยดูนิดนึงครับ เป็น MikroC นะครับ
Code:sbit LED at RE0_bit;
unsigned short cnt=0;
// Interrupt Handler
void interrupt()
{
// Timer0 Interrupt - Freq = 99.65 Hz - Period = 0.010035 seconds
if (INTCON.TMR0IF ==1) // timer 0 interrupt flag
{
INTCON.TMR0IF = 0; // clear the flag
INTCON.TMR0IE = 1; // reenable the interrupt
TMR0 = 60; // reset the timer preset count
}
}
// code starts here...
void main()
{
// setup porte to show the interrupts by blibking LEDs
TRISE = 0x00; // PORT is all output...to show the interrupts
PORTE = 0; // start with all outputs low
//Timer0 Registers Prescaler= 256 - TMR0 Preset = 60 - Freq = 99.65 Hz - Period = 0.010035 seconds
OPTION_REG.T0CS = 0; // bit 5 TMR0 Clock Source Select bit...0 = Internal Clock (CLKO) 1 = Transition on T0CKI pin
OPTION_REG.T0SE = 0; // bit 4 TMR0 Source Edge Select bit 0 = low/high 1 = high/low
OPTION_REG.PSA = 0; // bit 3 Prescaler Assignment bit...0 = Prescaler is assigned to the Timer0
OPTION_REG.PS2 = 1; // bits 2-0 PS2:PS0: Prescaler Rate Select bits
OPTION_REG.PS1 = 1;
OPTION_REG.PS0 = 1;
TMR0 = 60; // preset for timer register
cnt=0;
LED=0;
// Interrupt Registers
INTCON = 0; // clear the interrpt control register
INTCON.TMR0IE = 1; // bit5 TMR0 Overflow Interrupt Enable bit...1 = Enables the TMR0 interrupt
INTCON.TMR0IF = 0; // bit2 clear timer 0 interrupt flag
INTCON.GIE = 1; // bit7 global interrupt enable
do
{
if (cnt==600)
{
LED = ~LED;
cnt=0;
}
} while(1) ; //endless loop
}
** แก้ไขได้แล้วครับ นั่งงงอยู่หลายวันเพิ่งมาเข้าใจต้องเปลี่ยนพอร์ต ADC จาก Analog เป็น Digital ก่อนอ่ะครับ ADCON1= 0b0110
สนับสนุนคนกล้าคิด กล้าทำครับ
ผมก็มือใหม่ครับ สู้ ๆ
หายไปหลายวัน เน็ทเน่า(โดนตัด) อิอิ กลับมาไหม่ จากที่ศึกษาตามน้าๆ เริ่มจะเข้าใจ แต่ฟั่งชั่นลึกๆยังไม่เข้าใจ ผมอยากให้เปรียบเทียบแรงดันไฟฟ้า สมมุติรับเข้ามา0-5v แต่ผมไม่ต้องการให้เกิน 4.7v ถ้ารับเข้ามาเกินให้จ่ายไม่เกิน4.7 ซึ่งพอจะเทียบใด้จาก โปรแกรมด้านบน ตามนี้ครับ รบกวนน้าอธิบายทีครับ คือผมจะทำตัวปลดบู๊สแบบป้องกันกล่องไปในตัว ปัจจุบันใช้ซีเนอร์ไดโอดอยู่ กลัวไดโอดช๊อดลงกราว์ละกล่องเน่าแน่เลยครับ
ตัวแปร BOOT in // ให้อ่านค่าตัวแปร ว่ามีค่า <=3.6V,= ให้ส่งค่าออกตามที่รับมา
วนลูป 100ms //วน
อ่านค่าตัวแปร boot in //ให้อ่านค่าตัวแปร >=3.6 ,=ให้ส่งค่า 3.6V
ประมาณนี้ครับ ผมต้องใช้ฟังชั่นไหน ในการกำหนด Vครับ
อ้างอิง:
pedal1=adc_read(0);//ให้ pedal1=สัญญาน อะนาล็อค v จาก sensor เข้าที่ขานี้ในที่นี้คือ สัญญาน คันเร่งหลัก
delay_ms(1000);//หน่วงเวลา 1 วินาที
pedal2=adc_read(0);//อ่านค่าคันเร่งอีกที แต่เก็บค่าใว้ในค่าที่ 2 เพื่อเปรียบเทียบกัน
{
loop1:
If(pedal2>=(pedal1+100)&pedal2<(pedal1+200))//ถ้าคันเร่งค่าที่2 มากกว่าหรือเท่ากับ ค่าคันเร่งที่ 1 +100 (100*.00489=1.489v)
ไม่แน่ใจเหมือนกันครับ เดี๋ยวลองไปหาหนังสืออ่านก่อน
ถ้าให้เดา ก็ใช้ duty cycle = 3.6/5.0 V = 72%
code generate ตามลิ้งค์ครับ
http://www.micro-examples.com/public...alculator.html
Zzzzzzzzzzzzz