اطلاعیه

Collapse
No announcement yet.

تجربیات شما در زمینه کار با ماژول های ASK/HMR/HMT

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #31
    پاسخ : تجربیات شما در زمینه کار با ماژول های ASK/HMR/HMT

    نوشته اصلی توسط بسطام بیرامی
    من با شما موافقم
    البته خودم هم تقریبا چنین چیزی نوشتم و سعی کردم از همه امکانات این چیپ استفاده کنم
    و این که توی برنامه به روش AT Command که مثل ماژولای SIM900 و SIM908 میتونید هر پارامتری رو تغییر بدید و توی EEPROM ذخیره کنه
    آدرس شبکه محلی و آدرس فیزیکی بش بدید و کلی کار دیگه
    سعی هم کردم تنظیمات رو با

    [code=c]
    #ifdef SERVER
    unsigned char init_Mode = 0xAA;
    #else
    unsigned char init_Mode = 0xCC;
    #endif
    [/code]

    بنویسم که راحت بشه با یه دیفاین اول برنامه کلا ماژول رو تغییر دار که سرور باشه یا کلاینت

    [code=c]
    #define CE PORTD.5
    #define IRQ PIND.6
    #define CSN PORTD.7

    #define SPI_PORT PORTB
    #define SPI_DDR DDRB
    #define SPI_SS PORTB2
    #define SPI_MOSI PORTB3
    #define SPI_MISO PORTB4
    #define SPI_SCK PORTB5
    [/code]
    SPI رو هم که همه دیگه استادن و بهتر از من بلدن ولی من اینطوری تعریف کردم که راحت بشه تغییرش داد که با هر میکرویی سازگار باشه
    با سلام

    واقعا عالی است
    ولی منظور من یک مقداری فراتر از این بود مثلا در هدر nrf_config با انتخاب میکرو mega8 در هدر spi.h موقع پیکر بندی پین های spi مربوط به آن انتخاب وبا انتخاب های میکرو mega32 پین های spi مربوط به آن و......

    دیدگاه


      #32
      پاسخ : تجربیات شما در زمینه کار با ماژول های ASK/HMR/HMT

      نوشته اصلی توسط Shapour-Ardebil
      با سلام

      واقعا عالی است
      ولی منظور من یک مقداری فراتر از این بود مثلا در هدر nrf_config با انتخاب میکرو mega8 در هدر spi.h موقع پیکر بندی پین های spi مربوط به آن انتخاب وبا انتخاب های میکرو mega32 پین های spi مربوط به آن و......
      بله بلهدرک کردم
      اولین کد که if def بود رو برای همین گذاشتم
      میشه داخلش تنظیمات هر میکرو رو نوشت و فقط اول برنامه اسمشو دیفاین کرد خودش همه کارارو میکنه
      من یه مثال ساده زدم که راهش بیاد دست دوستان
      درایور شبکه و nRF24L01
      کاتالوگ محصولات
      کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
      شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
      فروش اسيلوسکوپ GWinstek GOS-630FC

      دیدگاه


        #33
        پاسخ : تجربیات شما در زمینه کار با ماژول های ASK/HM

        نوشته اصلی توسط بسطام بیرامی
        من با شما موافقم
        البته خودم هم تقریبا چنین چیزی نوشتم و سعی کردم از همه امکانات این چیپ استفاده کنم
        و این که توی برنامه به روش AT Command که مثل ماژولای SIM900 و SIM908 میتونید هر پارامتری رو تغییر بدید و توی EEPROM ذخیره کنه
        با سلام

        ضمن خسته نباشید به شما جند نکته را بعرض می رسانم (البته این نظر من است خدای نکرده اسرار بر تحمیل آن به شما ندارم )
        ساختن کتابخانه ای به روش گفته شما در بالا لازمه اش این است که استفاده کننده حتما از سخت افزار شما نیز استفاده کند و آنرا بصورت ماژول تهیه بکند و در موقع طرراحی مثلا در مگا8 از سریال میکرو خودش استفاده نکند و آن را برای کار با ماژول شما ذخیره کند ( مثلا ارسال اطلاعات دریافتی از کامپیوتر و ارسال به دستگاه های دیگر غیر قابل انجام میشود لااقل نه بصورت سخت افزاری)
        در حالی که هدف من این بود کتابخانه ای بنویسیم ' آزاد ' که همه کاربر ان بتوانند به راحتی از آن استفاده کنند ( مثل کتابخانه هایی که اساتید بزرگواری مثل آقای نوربخش راد و یا آقای علی ایمانی فر نوشتند )


        اضافه شده در تاریخ :
        نوشته اصلی توسط بسطام بیرامی
        بله بلهدرک کردم
        اولین کد که if def بود رو برای همین گذاشتم
        میشه داخلش تنظیمات هر میکرو رو نوشت و فقط اول برنامه اسمشو دیفاین کرد خودش همه کارارو میکنه
        من یه مثال ساده زدم که راهش بیاد دست دوستان
        مطمئنم که خود شما هم میدانید که با کمک پیش پردازنده ها دیگر نیازی به دیفاین دوباره نوع میکرو کنترلر ها نیست و با یک خط برنامه


        [code=c]#if defined(__AVR_AT90S4414__)[/code]
        در WinAVR
        و یا
        [code=c]#if defined(_CHIP_AT90S4414_)[/code]
        در CODEVISIONAVR میتوان کدهای برنامه را برای کامپایل انتخاب کرد

        دیدگاه


          #34
          پاسخ : تجربیات شما در زمینه کار با ماژول های ASK/HMR/HMT

          با سلام

          با توجه به حرف هایی که در بالا عرض کردم کتابخانه اولیه ای فعلا برای SPI را نوشتم (البته کامل نیست) لطفا دوستان نظر بدهند
          این فایل از دوقسمت تشکیل شده
          قسمت اول : هدر فایل
          قسمت دوم : تنظیمات لازم نسبت به نیاز

          shapour_SPI.h
          کد:
          [size=+2]//-----------------------------------------------------------------------------
          // Copyright:   Sabalan Electronic Co. LTD,
          // Author:     Shapour Jegargousheh
          // Remarks:    
          // known Problems: none
          // Version:    1.0.0
          // Description:  useful definitions!!! ...........
          //								 
          //-----------------------------------------------------------------------------
          
          #ifndef _SHAPOUR_SPI_H_
          #define _SHAPOUR_SPI_H_
          
          	// SPCR : SPI control register
          	//  /-------+-------\
          	//  7 6 5 4  3 2 1 0
          	//  ^ ^ ^ ^  ^ ^ \+/
          	//  | | | |  | | +---- SPR1,0 : SPI clock rate
          	//  | | | |  | +------- CPHA : clock Phase
          	//  | | | |  +--------- CPOL : clock polarity
          	//  | | | +------------- MSTR : master/slave select
          	//  | | +--------------- DORD : data order
          	//  | +----------------- SPE : SPI enable
          	//  +------------------- SPIE : SPI interrupt enable
          	//--------------------------------------------------------------------------------------
          	// SPI clock prescaler 
          	// SPI2X	SPR0	SPR1		
          	//---------------------------------------
          	//	0		0		0		=	F / 4
          	//	0		0		1		=	F / 16	
          	//	0		1		0		=	F / 64	
          	//	0		1		1		=	F / 128	
          	//	1		0		0		=	F / 2	
          	//	1		0		1		=	F / 8	
          	//	1		1		0		=	F / 32	
          	//	1		1		1		=	F / 64	
          	#define SPI_CK_DIV2()  			SPCR = (1<<SPI2X)<<8|0<<SPR1|0<<SPR0 // F_CPU/2 
          	#define SPI_CK_DIV4()  			SPCR = (0<<SPI2X)<<8|0<<SPR1|0<<SPR0 // F_CPU/4 
          	#define SPI_CK_DIV8()  			SPCR = (1<<SPI2X)<<8|0<<SPR1|1<<SPR0 // F_CPU/8 
          	#define SPI_CK_DIV16()  			SPCR = (0<<SPI2X)<<8|0<<SPR1|1<<SPR0 // F_CPU/16 
          	#define SPI_CK_DIV32()  			SPCR = (1<<SPI2X)<<8|1<<SPR1|0<<SPR0 // F_CPU/32 
          	#define SPI_CK_DIV64()  			SPCR = (0<<SPI2X)<<8|1<<SPR1|0<<SPR0 // F_CPU/64 
          	#define SPI_CK_DIV128() 			SPCR = (0<<SPI2X)<<8|1<<SPR1|1<<SPR0 // F_CPU/128 
          	//--------------------------------------------------------------------------------------
          	// CPHA : MOSI و MISO نمونه برداری از پایه های 
          	//						  		0 >> لبه بالا رونده
          	//						  		1 >> لبه پایین رونده 
          	#define SPI_CLOCK_PHASE_RISING() 	SPCR &= ~(0<<CPHA) 	// SPI clock phase (Chek MOSI_MISO) Rising edje
          	#define SPI_CLOCK_PHASE_FALING() 	SPCR |= 1<<CPHA 	// SPI clock phase (Chek MOSI_MISO) Faling edje
          	//-----------------------------------------------------
          	// CPOL : در صورتی که پالسی ارسال نمیشود SCK وضعیت اولیه پایه ی 
          	//						  		0 >> صفر میشود SCK پایه 
          	//					  			1 >> یک میشود SCK پایه 
          	#define SPI_CLOCK_POLARITY_HGIH()	SPCR |= 1<<CPOL 	// clock polarity High (SCK OFF)
          	#define SPI_CLOCK_POLARITY_LOW()	SPCR &= ~(1<<CPOL) // clock polarity Low(SCK OFF)
          	//--------------------------------------------------------------------------------------
          	// MSTR : 							0 >> انتخاب مد SLAVE
          	//    							1 >> انتخاب مد MASTER
          	#define SPI_MASTER()     		SPCR |= 1<<MSTR 	// SPI Type: Master select 
          	#define SPI_SLAVE()     		SPCR &= ~(1<<MSTR) // SPI Type: Slave select 
          	//--------------------------------------------------------------------------------------
          	// DORD : 							0 >> ارسال میشه LSB ابتدا بیت 
          	//    							1 >> ارسال میشه MSB ابتدا بیت
          	#define SPI_DATA_ORDER_LSB() 		SPCR &= ~(1<<DORD) // SPI Data order LSB First
          	#define SPI_DATA_ORDER_MSB() 		SPCR |= 1<<DORD 	// SPI Data order MSB First
          	//-----------------------------------------------------
          	// SPE : 							0 >> SPI غیر فعال کردن 
          	//    							1 >> SPI فعال کردن 
          	#define SPI_Enable()    		SPCR |= 1<<SPE  // SPI enable 
          	#define SPI_Disable()    		SPCR &= ~(1<<SPE) // SPI disable 
          	//--------------------------------------------------------------------------------------
          	// SPIE : SPI فعال شدن وقفه البته به شرط فعال بودن وقفه همگانی 
          	
          	//==========================================================================================
          
          	//  SPSR : SPI status register
          	//  /-------+-------\
          	//  7 6 5 4  3 2 1 0
          	//  ^ ^       ^
          	//  | |       +--- SPI2X : double SPI speed
          	//  | +----------------- WCOL : write collision flag
          	//  +------------------- SPIF : SPI interrupt flag
          	/// 
          	// SPI2X : در مد مستر دو برابر میشود SCK با یک کردن این بیت فرکانس
          	// WCOL : SPI check write collision flag
          	// SPIF : wait to SPI transfer complete signal
          	#define spi_write_collis()  	((SPSR&1<<WCOL)>>WCOL) // SPI check write collision flag 
          	#define spi_wait()      	while(!(SPSR&1<<SPIF)) // wait to SPI transfer complete signal */
          	//==========================================================================================
          
          	// SPDR ریجستر 
          	// خواندن و نوشتن دیتا توسط این ریجستر انجام میشود 
          	// SPDR : SPI data register
          	#define spi_write_data(vlu) 	SPDR = vlu 			// SPI data buffer write (master) 
          	#define spi_read_data()   	SPDR   				// SPI data buffer read (slave)
          	
          	//==========================================================================================
          	
          	
          	
          	//------------------------------
          	//
          	//------------------------------
          	#include <avr/io.h>
          	#include "shapour_SPI_Config.h"
          	
          	
          #endif // _SHAPOUR_SPI_H_ [/size]
          shapour_SPI_Config.h
          کد:
          //-----------------------------------------------------------------------------
          // Copyright:   Sabalan Electronic Co. LTD,
          // Author:     Shapour Jegargousheh
          // Remarks:    
          // known Problems: none
          // Version:    1.0.0
          // Description:  useful definitions!!! ...........
          //								 
          //-----------------------------------------------------------------------------
          
          #ifndef _SHAPOUR_SPI_CONFIG_H_
          #define _SHAPOUR_SPI_CONFIG_H_
          
          	#define HIGH	1
          	#define LOW		0
          	#define H		1
          	#define L		0
          	
          	//---------------------------------------
          	//	PIN			 MASTER		 	SLAVE
          	//---------------------------------------
          	//	CE			 OUTPUT			INPUT
          	//	MOSI		 OUTPUT			INPUT
          	//	MISO		 INPUT			OUTPUT		
          	//	SCK			 OUTPUT			INPUT
          
          	//-------------------------------------- CE_PIN
          	#define SPI_CE_DDR				DDRB
          	#define SPI_CE_PIN				PINB
            #define SPI_CE_PRT				PORTB
            #define SPI_CE_BIT				7 	
          	#define CE(x)   				((x) ? ( SPI_CE_PRT |= (1 << SPI_CE_BIT)) : ( SPI_CE_PRT &= ~(1 << SPI_CE_BIT)));	
          	
            //-------------------------------------- CSN_PIN
          	#define SPI_CSN_DDR				DDRB
          	#define SPI_CSN_PIN				PINB
          	#define SPI_CSN_PRT				PORB
            #define SPI_CSN_BIT				6 
          	#define CSN(x)   				((x) ? ( SPI_CSN_PRT |= (1 << SPI_CSN_BIT)) : ( SPI_CSN_PRT &= ~(1 << SPI_CSN_BIT)));	
          	
          	//--------------------------------------
            //
          	//--------------------------------------
          	void init_SPI(void)
          	{
          		//-------------------------------
          		// SPI initialization
          		//-------------------------------
          		SPI_MASTER();     			// SPI Type: Master 
          		SPI_CK_DIV4();   				// SPI Clock Rate ((F_CPU = 110d9200HZ)/4 = 2764.800 kHz)
          		SPI_CLOCK_PHASE_RISING(); 		// SPI clock phase (Chek MOSI_MISO) Raising
          		SPI_CLOCK_POLARITY_LOW();		// SPI clock polarity Low (SCK OFF)
          		SPI_DATA_ORDER_MSB();	 		// SPI Data order MSB First
          		SPI_Enable();	     		// SPI enable 
          
          		
          		//-------------------------------
          		// Mega8 SPI Pins initialization
          		// Master Mod
          		//-------------------------------
          		SPI_CE_DDR 	|= (1<<SPI_CE_BIT)	// CE
          		SPI_CSN_DDR |= (1<<SPI_CSN_BIT)// CSN
          		DDRB 		|= (1<<DDB3)		// MOSI 
          		DDRB 		&= ~(0<<DDB4)		// MISO 
          		DDRB 		|= (1<<DDB5)		// SCK
          
          		//==============================================
          /*	
          		//-------------------------------
          		// Mega16/32 SPI Pins initialization
          		// Master Mod
          		//-------------------------------
          		SPI_CE_DDR 	|= (1<<SPI_CE_BIT)	// CE
          		SPI_CSN_DDR |= (1<<SPI_CSN_BIT)// CSN
          		DDRB 		|= (1<<DDB5)		// MOSI 
          		DDRB 		&= ~(0<<DDB6)		// MISO 
          		DDRB 		|= (1<<DDB7)		// SCK
          */
          	}
          	
          	
          #endif // _SHAPOUR_SPI_CONFIG_H_

          دیدگاه


            #35
            پاسخ : تجربیات شما در زمینه کار با ماژول های ASK/HMR/HMT

            تمرکز رو ببریم سمت توسعه کاربری nrf ، واسه ارتباط spi برای هر میکرویی تو نت برنامه هست ، ما یه برنامه بدیم که قلب اصلی nrf رو بشه باش کنترل کرد
            راه اندازی یه قطعه کار سختی نیست !!!! ایده ی استفاده از اونه که کار سختیه !!!! پس بیاین تو کارهای آسون به هم کمک کنیم ....))))

            دیدگاه


              #36
              پاسخ : تجربیات شما در زمینه کار با ماژول های ASK/HMR/HMT

              این تصویر رو ببینین :
              داره نشون میده این چیپ دو نوع ارسال داره :
              1- ارسال اتوماتیک : منتظر میشینه تا دیتا اومد اونو میفرسته
              2- ارسال دستی : شما چند تا داده گذاشتین رو درگاه ، یا یدونشو میفرسته یا همشو و باز منتظر دستور شما برای ارسال میشه
              همچنین داره نشون میده دو نوع دریافت داره :
              1- دریافت اتوماتیک : منتظر میشینه تا دیتا اومد اونو میگیره
              2- دریافت دستی : هر موقع شما خواستین اون داده رو میگیره

              به این نحو برنامه بنویسیم ، چیپ هوشمندمون رو طوری بالا بیاریم که حتی افراد مبتدی هم بتونن باهاش کار بکنن ، نظرتون؟
              راه اندازی یه قطعه کار سختی نیست !!!! ایده ی استفاده از اونه که کار سختیه !!!! پس بیاین تو کارهای آسون به هم کمک کنیم ....))))

              دیدگاه


                #37
                پاسخ : تجربیات شما در زمینه کار با ماژول های ASK/HMR/HMT

                بدون میکرو میشه از nrf استفاده کرد؟من میخوام با استفاده از nrf و pt2262 و pt2272 ریموت کنترل درست کنم
                و اگر نمیشه بفرمایید به غیر از ماژول ask چه ماژولی با pt2272 سازگاره؟
                جدیدترین ویرایش توسط ip4ht2; ۱۱:۴۱ ۱۳۹۵/۱۲/۱۵.

                دیدگاه

                لطفا صبر کنید...
                X