اون uart1 رو راه انداختم.
ولی الان این uart3 داره بازی در میاره . تنظیمات مربوط به پاور هم انجام دادم ولی باز هم کار نمیکنه
برای این چه طور نمونه کد ندارید؟
آقای زرکوب میشه یک نگاه به این کد بندازید.
Uart0 , uart1 رو راه انداختم ولی هر کاری می کنم uart3 کار نمیکنه. تنظیم مریوط به کلاک و پاور رو هم درست انجلم دادم
این کد ها رو این جا میذارم ببینید مشکلش رو پیدا کنید
شما اگر نمونه کدی دارید میشه به من بدید؟
کد:#include <lpc17xx.h> #include <string.h> #include <ctype.h> #include "LPC17xx_pinsel.h" #include "LPC17xx_uart.h" #include "debug_frmwrk.h" char Buffer0[500]; char Buffer1[500]; char Buffer3[500]; char lcd[20]; uint8_t input0; uint8_t input1; uint8_t input3; void upper(char Buf[],int LeN){ // tabe tabdel horofef kochaak be bozorg for(LeN=0;LeN<501;LeN++){ Buf[LeN]=toupper(Buf[LeN]); } } void C_buf(char Buf[]){ // Empty Buffer int LeN; LeN=strlen(Buf); for(LeN=0;LeN<501;LeN++){ Buf[LeN]=0; } } //************************************************************************ void UART0_IRQHandler(void) { int A; input0 = UART_ReceiveByte(LPC_UART0); if(input0>0x20 & input0<0x7f){ A=strlen(Buffer0); Buffer0[A]=input0; upper(Buffer0,500); UARTPuts_(LPC_UART0,Buffer0); //UARTPuts_(LPC_UART0,"HOMAYON"); } } //************************************************************************ void UART1_IRQHandler(void) { int A; input1 = UART_ReceiveByte((LPC_UART_TypeDef*)LPC_UART1); if(input1>0x20 & input1<0x7f){ A=strlen(Buffer1); Buffer1[A]=input1; upper(Buffer1,500); UARTPuts_(LPC_UART0,Buffer1); //UARTPuts_((LPC_UART_TypeDef *)LPC_UART1, Buffer1); } } //************************************************************************ void UART3_IRQHandler(void) { int A; input3 = UART_ReceiveByte(LPC_UART3); if(input3>0x20 & input3<0x7f){ A=strlen(Buffer3); Buffer3[A]=input3; upper(Buffer3,500); UARTPuts_(LPC_UART3,Buffer3); //UARTPuts_((LPC_UART_TypeDef *)LPC_UART1, Buffer1); } } int main(void){ int len; UART_CFG_Type UART_InitStruct; UART_FIFO_CFG_Type UARTFIFOConfigStruct; PINSEL_CFG_Type PinCfg; uint32_t CLKPWR_PCONP_PCUART3; debug_frmwrk_init(); //------------------------- UART0 ----------------------------------------------------------- UARTFIFOConfigStruct.FIFO_DMAMode = DISABLE; UARTFIFOConfigStruct.FIFO_Level = UART_FIFO_TRGLEV0; UARTFIFOConfigStruct.FIFO_ResetRxBuf = ENABLE; UARTFIFOConfigStruct.FIFO_ResetTxBuf = ENABLE; UART_FIFOConfig(LPC_UART0, &UARTFIFOConfigStruct); UART_IntConfig(LPC_UART0, UART_INTCFG_RBR, ENABLE); NVIC_EnableIRQ(UART0_IRQn); UART_TxCmd(LPC_UART0,ENABLE); //------------------------- UART1 ----------------------------------------------------------- PinCfg.Portnum=2; PinCfg.Pinnum=0; PinCfg.Funcnum=2; PinCfg.OpenDrain=0; PinCfg.Pinmode=0; PINSEL_ConfigPin(&PinCfg); //TXD1 PinCfg.Pinnum=1; PINSEL_ConfigPin(&PinCfg); //RXD1 UART_InitStruct.Baud_rate=9600; UART_InitStruct.Databits = UART_DATABIT_8; UART_InitStruct.Parity = UART_PARITY_NONE; UART_InitStruct.Stopbits = UART_STOPBIT_1; UART_Init((LPC_UART_TypeDef *)LPC_UART1, &UART_InitStruct); UART_FIFOConfig((LPC_UART_TypeDef *)LPC_UART1, &UARTFIFOConfigStruct); UART_IntConfig((LPC_UART_TypeDef *)LPC_UART1, UART_INTCFG_RBR, ENABLE); NVIC_EnableIRQ(UART1_IRQn); UART_TxCmd((LPC_UART_TypeDef *)LPC_UART1, ENABLE); //------------------------- UART3 ----------------------------------------------------------- CLKPWR_ConfigPPWR(CLKPWR_PCONP_PCUART3,ENABLE); PinCfg.Portnum=4; PinCfg.Pinnum=28; PinCfg.Funcnum=3; PinCfg.OpenDrain=0; PinCfg.Pinmode=0; PINSEL_ConfigPin(&PinCfg); //TXD3 PinCfg.Pinnum=29; PINSEL_ConfigPin(&PinCfg); //RXD3 UART_InitStruct.Baud_rate=115200; UART_InitStruct.Databits = UART_DATABIT_8; UART_InitStruct.Parity = UART_PARITY_NONE; UART_InitStruct.Stopbits = UART_STOPBIT_1; UART_Init(LPC_UART3, &UART_InitStruct); UART_FIFOConfig(LPC_UART3, &UARTFIFOConfigStruct); UART_IntConfig(LPC_UART3, UART_INTCFG_RBR, ENABLE); NVIC_EnableIRQ(UART3_IRQn); UART_TxCmd(LPC_UART3, ENABLE); //--------------------------------------------------------------------------------------------- while(1){ UARTPuts_(LPC_UART3,"HOMAYON"); len=strlen(Buffer0); if(len>200){ C_buf(Buffer0); } } }
ویرایش توسط mzarkoob : 09-06-2014 در ساعت 20:33
آقای زرکوب چی شد وقت پیدا ندارید یک نگاه به این کدهای من بندازید؟
من پروژتون رو با دقت مطالعه نکردم اما از اسم پروژه و اینکه UART3 در بوردهای کویر متعلق به پورت RS485 هست حدس میزنم در وارد کردن Tranciever به وضعیت های دریافت و ارسال مشکل داشته باشید. اگه از بستر RS485 برای انتقال داده استفاده میکنید، حتما خاطرتون باشه پین های 2و 3 از RS485 Tranciever مربوط باید در موقع دریافت در وضعیت پایین و هنگام ارسال در وضعیت بالای منطقی باشد. امیدوارم کمک کنه. اگه لحاظ شده به احتمال زیاد مشکل سخت افزاری دارید چون ساختار پورت های 0و 2 و 3 هیچ تفاوتی با هم ندارند.
خیلی ممنون از پاسختون ولی مشکل من با RS485 نیست. برنامه ای که من نوشتم هیچ ارسالی رو حتی توی دیباگر Keil هم انجام نمیده ولی UART0,1 هر دو کار می کنند
سلام
من یه نگاه اجمالی کردم. اینکه ایراد بفهمیم کجاست کار زمان بری هست. با دیباگ کردن خط به خط برنامه می توان فهمید ایراد کار کجاست. مثلا دید آیا پاور فعال شده یا pinsell انجام شده و ...
این موارد انجام داده اید؟
و اینکه برنامه که باز کردم کتابخونه ها در برنامه باز نمی شد در خود پروژه اد نشده بود
در سیمولاتور یادم نمی یاد بشه دید که ارسال دریافتی با uart3 انجام میشه یا نه. از برد تست کنید
اینکه برنامه هایی که با رجیستر در فیلم است را تغییر بدید برای uatr3 که ساده تره + فعال کردن پاور uart3 ببینید ان چطوره
ویرایش توسط mzarkoob : 10-06-2014 در ساعت 10:13
pinsel و Power دزست تنظیم کردم با دیباگر هم چک کردم . وقفه و بادریت همه درست تنظیم شدن.
حالا باز هم تلاش می کنم ببینم چی میشه
سلام
ببخشید یه سوال دارم
من میخام رجیستر LPC_PWM1->MR1 رو به صورت زیر مقدار دهی کنم ، متغیر ها هم از جمله Throtell و output_X و ... همه از نوع Float (اعشاری هستند)
ولی با ارور زیر مواجه میشوم :کد:LPC_PWM1->MR1 = (Throtell + (output_X*+1) + (output_Y*-1) + (output_Z*-1))
کد:Program.c(186): error: #109: expression must have (pointer-to-) function type
دوستان کسی فرمولی برای محاسبه دقیق زمان تایمر رو داره؟
منظور من محاسبه مقادیر رجیسترهای mr , pr هست.
یک فرمول شسته رفته و دقیق بهتر برای این کار سراغ ندارید؟ البته این راهنمایی شما خیلی کمک کرد ممنون
ما توی avr یک عالمه فرمول خوب برای اندازه گیری زمان در تایمرها داریم ولی برای lpc هر جا گشتم چیزی پیدا نکردم البته نرم افزار arm wizard تقریبا این کار رو انجام میده ولی بر اساس چه فرمولی فعلا نمی دونم
ویرایش توسط mrhomayon : 22-06-2014 در ساعت 23:45
سلام.
سیستم من سون هست. این در حالی است که یکی از اونا به خوبی اجرا میشه . اونوقت چرا این خطا برای اون داده نمیشه؟
مرسی از همراهی شما
آقای زرکوب من ال سی دیم رو از eca خریدم و پایه هایی به عنوان LE و EN و DIR نداره ......؟؟!!
میخوام با لچ بورد lpc1768-wb راش بندازم باید چیکار کنم .فیلمتون رو هم خریدم ولی هرکاری کردم ال سی دیم راه اندازی نشد ...
مهندس زرکوب اگه ممکنه اون هدرهایی که توی فیلم ازشون استفاده میکنید ولی توی DVD نیست (مثل هدر ADC و UART و بقیه هدرهایی که ساختید) رو در اختیار ما بزارید به شدت بهشون نیاز دارم و همینطور مثال هایی که شما ازشون استفاده میکردید ولی ما نداریم (مثل مثال switch در uart ) رو برای من بفرستید خیلی بهم کمک میکنید با این کارتون.
علیکم السلام!
مهندس ، در چند جا پیغام می دهید!؟ (ایمیل، پیام خصوصی، در چند پست در انجمن .. ) یک جا کافی است
مثالهای لازم در DVD قرار دارد و فکر نمی کنم چیزی از قلم افتاده باشد.
هدر ADC که می فرمایید بابت نمونه که می توانید به عنوان تمرین چنین چیزی را انجام دهید، ذکر شده که شما می توانید با توجه به اینکه در قسمت های قبل نحوه ایجاد هدر را آموخته اید از همین برنامه ADC که در اختیار دارید آن را خودتان به صورت یک هدر در بیاورید. در ضمن در سمپل های خود کیل در محل نصب نیز در MCB1700 چنین هدری باید باشد.
برنامهswitch نیز در نت برای AVR موجود است که با توجه به مطالب اموزش داده شده در UART شما می توانید تغییرات لازم را در آن دهید و از آن برای 1768 استفاده کنید.در کل یک بحث آموزش هست یک بحث تمرین . شما بایستی قادر باشید با توجه به مطالب آموزش داده شده بتوانید تمرین هایی را انجام دهید . در فیلم آموزشی نیز مطالبی به عنوان تمرین به کارآموز واگذار شده است.
ممنون مهندس الان دارم میبینم چن جا پیام دادم و خندم گرفته. MCB 1700 که گفتین کارمو راه انداخت.