|
  
- UID
- 3
- กระทู้
- 1829
- เครดิต
- 267
- ผลงาน
- 267
- Money
- 0
- เพศ
- ชาย
- ออนไลน์
- 2448 ชั่วโมง
- เข้ามาล่าสุด
- 2010-9-4
|
ของ AVR เยอะมาก ครับ แต่ใช้ได้ จิงๆไม่กี่ตัวหรอก ถ้าไม่ ยากจนเทพโครต ก็ เอกสารไม่มี .. อย่าง AVRx นี่ก็เอกสารไม่ดี นั่งอ่าน code เอาพอเข้าใจได้อยู่.. ตัว OS ทำได้ดีทีเดียวตัวเล้กมากเป็น cooperative เดี่ยวรอ test hardware แล้วทำ libary แยก เบอร์ไว้ให้ ครับ.. Mega8/32/128

****UPDATE**** เอกสารของ AVRX หาเจอแล้ว มันอยู่ใน http://finance.groups.yahoo.com/group/avrx/ ต้องสมัคร yahoo แล้วเข้า group ถึงจะเจอ ผม upload มาให้แล้วลองศึกษาดู มันบอกวิธีลงวิธีติดตั้งอยู่ แต่ใช้วิธี add เอาก็ได้ไม่ยาก
http://202.28.49.186/download/AVR/avrx_document.rar
ส่วนตัวอย่าง code ง่ายๆ ครับ มาแนวนี้ ไฟกระพริบ 3 ดวง + 3 task + OS_delay เดี่ยว test เสร็จแล้วจะ เขียน guide ให้กำลังอ่าน doc และ code ส่วน timer มีการแก้ไข.. ต้องศึกษาโครงสร้าง มันก่อน มั่วเอาไม่ได้.. ได้แค่ไฟกระพริบ นี่แหละ หุๆๆ..  - #include <avr/io.h>
- #include <avr/signal.h>
- #include "avrx.h"
- #include "hardware.h"
- AVRX_GCC_TASK(task1, 20, 2);
- AVRX_GCC_TASK(task2, 20, 2);
- AVRX_GCC_TASK(task3, 20, 2);
- TimerControlBlock timer1, timer2, timer3;
- int main(void)
- {
- DDRB=0xFF;
- PORTB=0xFF;
- AvrXSetKernelStack(0);
- MCUCR = _BV(SE); // Initialize Timer Hardware
- TCNT0 = TCNT0_INIT;
- TCCR0 = CK1024;
- TIMSK = _BV(TOIE0); // Enable Timer overflow interrupt
- AvrXRunTask(&task1Tcb);
- AvrXRunTask(&task2Tcb);
- AvrXRunTask(&task3Tcb);
- Epilog(); // Switch from AvrX Stack to first task
- while(1);
- }
- AVRX_SIGINT(SIG_OVERFLOW0)
- {
- IntProlog();
- TCNT0 = TCNT0_INIT;
- AvrXTimerHandler();
- Epilog();
- }
- NAKEDFUNC(task1)
- {
- while(1)
- {
- PORTB ^= _BV(PORTB0);
- AvrXDelay(&timer1, 500);
- }
- }
- NAKEDFUNC(task2)
- {
- while(1)
- {
- PORTB ^= _BV(PORTB1);
- AvrXDelay(&timer2, 750);
- }
- }
- NAKEDFUNC(task3)
- {
- while(1)
- {
- PORTB ^= _BV(PORTB2);
- AvrXDelay(&timer3, 1000);
- }
- }
คัดลอกไปที่คลิปบอร์ด - version ล่าสุด http://202.28.49.186/download/AVR/AVRx2.6g.rar
- การวาง directory ของ project C:\AVRx2.6g\TestCases\AVRx.aps
- กรณีที่ต้องการใช้ MCU เบอร์ อื่นเข้าไปแก้ C:\AVRx2.6g\avrx\makefile ให้ถูกเบอร์แล้วทำการ make libary ใหม่- # MCU name
- MCU = atmega128 # เลือก MCU ให้ถูก
- # Output format. (can be srec, ihex, binary)
- FORMAT = ihex
- # Target file name (without extension).
- TARGET = libavrx # สำคัญ เปลี่ยนชื่อเป็น libavrx จะได้ output ออกมาเป้น libavrx.a ชื่อต้องขึ้นต้นด้วย libxxx.aเท่านั้น ไม่งั้นจะมีปัยหาการ add libary
คัดลอกไปที่คลิปบอร์ด สั่ง make libary โดยต้องข้า
>> cd C:\AVRx\avrx
>> make
จากนั้น ก็ add libary เข้าทาง AVRSTUDIO ได้เลย โดยการเลือก parth ที่เก็บ libavrx.a ใน linker option หรือ copy ไปไว้ที่ c:\winavr\avr\lib จะมองเห็นโดย อัตโนมัติไม่ต้อง add เข้า
>> copy C:\AVRx\avrx\libavrx.a c:\winavr\avr\lib
อ้างอิง กระทู้เก่าครับ .. วิธีแก้ปัยหา libary AVRx
http://www.electoday.com/cgi-bin/yabb2/YaBB.pl?num=1225386887 |
-
1
ผู้ให้คะแนน
-
ปั่นยอด 100 FP , มา Like ให้ซ่ะดีๆ คนล่ะจึก.. สองจึก

|
|