PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : برد ميكرو ورودي را نميخواند:لطفا راهنمايي كنيد



behnaz
18-08-2010, 15:12
با سلام
برد ميكرو ورودي هيچ برنامي اي را قبول نميكند هم براي كي پد و هم براي كليد.لطفا راهنمايي كنيد.
#include "AT91SAM7X256.h"
#include "lib_AT91SAM7X256.h"
int main (void){

AT91F_PIO_CfgOutput( AT91C_BASE_PIOB, AT91C_PIO_PB0);
AT91F_PIO_CfgInput( AT91C_BASE_PIOB, AT91C_PIO_PB1);
( AT91F_PIO_GetInput( AT91C_BASE_PIOB) , 0x02) ;
AT91F_PIO_CfgPullup( AT91C_BASE_PIOB, AT91C_PIO_PB1);
AT91F_PIO_SetOutput ( AT91C_BASE_PIOB, AT91C_PIO_PB0);
while (1){
if ((AT91F_PIO_GetInput(AT91C_BASE_PIOB) & 0x02 ) == (0) ) {
AT91F_PIO_ClearOutput ( AT91C_BASE_PIOB, 0x01);
}
}

M3R
18-08-2010, 15:43
منظورتون رو متوجه نمیشم!!!
شما میخوای ورودی رو از میکرو سوئیچ بخونی و 0 و 1 رو تشخیص بدی؟
اگه برای اینکار میخوایی باید برنامه رو به شکل زیر بنویسی :

#include <AT91SAM7X256.h>
#include <LIB_AT91SAM7X256.h>
#include <delay.h>
int main (void){
AT91F_PIO_CfgOutput (AT91C_BASE_PIOB,AT91C_PIO_PB19);
AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);
AT91F_PIO_CfgInput (AT91C_BASE_PIOA,AT91C_PIO_PA27);
while(1){
if ((AT91F_PIO_GetInput(AT91C_BASE_PIOA) & AT91C_PIO_PA27) == 0)
AT91F_PIO_SetOutput (AT91C_BASE_PIOB,AT91C_PIO_PB19);
else
AT91F_PIO_ClearOutput (AT91C_BASE_PIOB,AT91C_PIO_PB19);
}}



مشکل شما فقط اینه که دستور :

AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOA);

رو اجرا نکردید.با اجرای این دستور کلاک پورت فعال میشه و شما میتونید ورودی رو بخونید.
در ضمن پیشنهاد میکنم از هدر pio.h استفاده کن.دستورات خیلی کاهش پیدا میکنه و به خاطر سپردنشون آسون تر میشه.برای آشنایی با این هدر یه سری به پست زیر بزن:
هدر خلاصه کننده دستورات پورت (You can see links before reply)

موفق باشی :roll: