پروژه های ramin.yousefi2@gmail.com AVR,ARM,PIC,8051

لطفا ایمیل بزنید

درباره میکروکنترلر ARM

 

کامپایلر های Keil برای شرکت ARM

کامپایلر IAR Embedded Workbench یا همون EWARM

 

 

 

 

قسمت سخت افزاری به نام SAM-BA در arm می تونیم بدون اینكه احتیاج به پروگرمر خاصی باشد از طریق پورت USB پروگرمش كنیم. 

 

سازندگان مختلف و خانواده های تولیدی :

میکروکنترلرهای ARM شرکت ATmel با نام گذاری AT91

 

شرکت NXP و میکروکنترلرهای سری LPC

از جمله LPC1000 ، LPC2000 ، LPC3000 ، LPC4000

 

میکروکنترلرهای خانواده ی LPC1100  (L   از ارزان ترین و کوچکترین ، کم مصرف ترین و پربازده ترین میکروکنترلرهای 32 بیتی در بازار هستند.

 

                                      پایه های AT91sam7s

 

 

زمانيكه يك پردازنده داريد و مي خواهيد كارهاي بسياري را با روند وترتيب خاصي انجام دهد روش مناسب استفاده از يك سيستم عامل مي باشد.

بر حسب اينكه پردازنده شما چه مقدار توان پردازشي دارد اين سيستم عامل مي تواند سبك يا سنگين باشد. مثلا شما بر روي atmega32 مي توانيد يك سيستم عامل داشته باشيد ولي اين سيستم عامل هرگز ويندوز نيست!

سيستم عامل چيست؟

سيستم عامل برنامه اي مي باشد كه ...

 سيستم عامل برنامه اي مي باشد كه بر روي يك سخت افزار نصب مي گردد تا نرم افزار هاي ديگر را بتوان بر روي آن اجرا نمود.

 پورت كردن سيستم عامل چيست؟

 اينكه سيستم عامل چگونه سخت افزار هايي را كه شما برايش فراهم كرده ايد را بشناسد و چطور با انها ارتباط برقرار كند را پورت كردن سيستم عامل مي نامند

زمانيكه شما مي خواهيد سخت افزارتان عمليات خاصي مثلا ارسال بلوتوث وهمزمان كنترل چندين رله و در نهايت ذخيره اطلاعات و نمايش بر روي تابلو روان را انجام دهد بايد پروتكل هاي بلوتوث را بشناسيد بتوانيد همزمان تابلو روانتان را رفرش كنيد و چندين عمليات نرم افزاري و سخت افزاري را همزمان مديريت كنيد. يك سيستم عامل هر كدام از اين وظايف را يك task  ميداند و براحتي مي تواند از ميان آنها اولويتها را بيابد. همچنين توابع و library هايي كه برايش فراهم شده و ميتواند ارتباط بهتري با سخت افزار هايش برقرار مي نمايد. پس در چنين پروژه اي ملزم به استفاده از سخت افزار همراه سيستم عامل مي باشيد.

 در سالهاي اخير سيستم عامل قدرتمندي به نام اندرويد وارد مسابقه سيستم عامل ها گرديده، اندرويد به دليل منبع باز بودنش (open source ) طرفداران و كاربران بسياري در سطح دنيا پيدا كرده.

براي پروسسور هايي مانند آرم بسيار مناسب است. البته اندرويد كمي سنگين تر از سيستم عامل هايي مانند lancos ,tinyos ,Coocox , freertos ميباشد اين سيستم عامل ها براي AVR ها مناسبترند. سيستم عامل بسيار ساده و كارآمدي  كه بر روي بيش از40 مدل از avrهاي سري tiny , mega پورت شده Femto OS ميباشد. اگر ميخواهيد بيشتر با اين سيستم عامل آشنا شويد سايت http://www.femtoos.org  را ملاحظه كنيد.

نكته آخر اينكه يكي از مزاياي سيستم عامل بلادرنگ بودن RTOS ميباشد. Real Time Operation System زمانيكه تعداد وظايف زياد شود اين خصوصيت بسيار مهم و قابل تفكر است. سعي كنيد سيستم عاملي را كه مي خواهيد استفاده كنيد در عين سادگي از ميان RTOS  ها انتخاب كنيد. 

 

بزرگ کردن سایز برنامه در نرم افزار Keil

Edit --  configuration --  colors & Fonts  --  c/cpp Editor files  --  courier  new 

 

کلید میانبر بزرگ کردن سایز برنامه در نرم افزار Keil نگه داشتن دکمه ی ctrl  و چرخاندن قلقلک موس 

 

 

 

 

 

 

کلید واژه ها

 

MC = Memory Controller

RSTC = Reset Controller

CKGR = Clock Generator

PMC = Power Management Controller

AIC = Advanced Interrupt Cotroller

DBGU = Debug Unit

PIT = Periodic Interval Timer

WDT = Windowed Watchdog

RTT  = Real-time Timer

PIO = Parallel Input/Output

PDC = Peripheral DMA Controller

MII = Media Independent Interface

RMII = Reduced Media Independent Interface

SSC = Synchronous Serial Controller

USART = Universal Synchronous/Asynchronous Receiver Transmitters

SPI = Serial Peripheral Interfaces

TC = Timer / Counter

PWMC = Power Width Modulation Controller

TWI = Two-Wire Interface

SODR = Set Output Data Register

OER = Output Enable Register

PER = Pio Enable Register

PCER = Peripheral Clock Enable Register

CODR = Clear Output Data Register

 

 

PDSR = Pin Data Status Register

 

PPUER = Pull_up Enable Register

 

IFDR = Input Filter Disable Register

 

IDR = Interrupt Disable Register

 

ODR = Output Disable Rgister

 LPC2138

 

 

 

 

توابع کتابخانه های شرکت اتمل

کتابخانه SPI

void SPI_Enable(AT91S_SPI *spi)

void SPI_Disable(AT91S_SPI *spi)

void SPI_Configure(AT91S_SPI *spi,unsigned int id,unsigned int configuration)

void SPI_ConfigureNPCS(AT91S_SPI *spi,unsigned int npcs,unsigned int configuration)

void SPI_Write(AT91S_SPI *spi, unsigned int npcs, unsigned short data)

unsigned char SPI_WriteBuffer(AT91S_SPI *spi,void *buffer,unsigned int length)

unsigned char SPI_IsFinished(AT91S_SPI *pSpi)

unsigned short SPI_Read(AT91S_SPI *spi)

unsigned char SPI_ReadBuffer(AT91S_SPI *spi,void *buffer,unsigned int length)

 

کتابخانه Pio

static void PIO_SetPeripheralA( AT91S_PIO *pio,unsigned int mask, unsigned char enablePullUp)

static void PIO_SetPeripheralB(AT91S_PIO *pio,unsigned int mask,unsigned char enablePullUp)

static void PIO_SetInput(AT91S_PIO *pio,unsigned int mask,unsigned char enablePullUp,unsigned char enableFilter)

  

static void PIO_SetOutput(AT91S_PIO *pio,unsigned int mask,unsigned char defaultValue,unsigned char enableMultiDrive, unsigned char enablePullUp)

unsigned char PIO_Configure(const Pin *list, unsigned int size)

void PIO_Set(const Pin *pin)

void PIO_Clear(const Pin *pin)

unsigned char PIO_Get(const Pin *pin)

unsigned char PIO_GetOutputDataStatus(const Pin *pin)

unsigned int PIO_GetISR(const Pin *pin)


 

کتابخانه PMC

 

void PMC_SetFastWakeUpInputs(unsigned int inputs)

 

void PMC_DisableMainOscillatorForWaitMode(void)

 

void PMC_DisableMainOscillator(void)

 

void PMC_DisableProcessorClock(void)

 

void PMC_EnablePeripheral(unsigned int id)

 

void PMC_DisablePeripheral(unsigned int id)

 

void PMC_EnableAllPeripherals(void)

 

void PMC_DisableAllPeripherals(void)

 

unsigned int PMC_IsAllPeriphEnabled(void)

 

unsigned int PMC_IsPeriphEnabled(unsigned int id)

 

void PMC_CPUInIdleMode(void)

 

 

 

کتابخانه dbgu

 

void DBGU_Configure(unsigned int mode,unsigned int baudrate,unsigned int mck)

 

void DBGU_PutChar(unsigned char c)

 

unsigned int DBGU_IsRxReady()

 

unsigned char DBGU_GetChar(void)

 

signed int fputc(signed int c, FILE *pStream)

 

signed int fputs(const char *pStr, FILE *pStream)

 

signed int putchar(signed int c)

 

کتابخانه aic

 

void AIC_ConfigureIT(unsigned int source,unsigned int mode,void (*handler)(void))

 

void AIC_EnableIT(unsigned int source)

 

void AIC_DisableIT(unsigned int source)


 

کتابخانه tc

 

void TC_Configure(AT91S_TC *pTc, unsigned int mode)

 

void TC_Start(AT91S_TC *pTc)

 

void TC_Stop(AT91S_TC *pTc)

 

unsigned char TC_FindMckDivisor(unsigned int freq,unsigned int mck,unsigned int *div,unsigned int *tcclks)

 

 

 

کتابخانه pit

 

void PIT_Init(unsigned int period, unsigned int pit_frequency)

 

void PIT_SetPIV(unsigned int piv)

 

void PIT_Enable(void)

 

void PIT_EnableIT(void)

 

void PIT_DisableIT(void)

 

unsigned int PIT_GetMode(void)

 

unsigned int PIT_GetStatus(void)

 

unsigned int PIT_GetPIIR(void)

 

unsigned int PIT_GetPIVR(void)

 

 

 

کتابخانه adc

 

static void ADC_CfgModeReg(AT91S_ADC *pAdc, unsigned int mode)

  

void ADC_Initialize (AT91S_ADC *pAdc,unsigned char idAdc,unsigned char trgEn,unsigned char trgSel,

 

unsigned char sleepMode,unsigned char resolution, unsigned int mckClock,unsigned int adcClock,

 

unsigned int startupTime,unsigned int sampleAndHoldTime)

  

unsigned int ADC_GetModeReg(AT91S_ADC *pAdc)

 

void ADC_EnableChannel(AT91S_ADC *pAdc, unsigned int channel)

 

void ADC_DisableChannel (AT91S_ADC *pAdc, unsigned int channel)

 

unsigned int ADC_GetChannelStatus(AT91S_ADC *pAdc)

 

void ADC_StartConversion(AT91S_ADC *pAdc)

 

void ADC_SoftReset(AT91S_ADC *pAdc)

 

unsigned int ADC_GetLastConvertedData(AT91S_ADC *pAdc)

 

unsigned int ADC_GetConvertedData(AT91S_ADC *pAdc, unsigned int channel)

 

void ADC_EnableIt(AT91S_ADC *pAdc, unsigned int flag)

 

void ADC_EnableDataReadyIt(AT91S_ADC *pAdc)

 

void ADC_DisableIt(AT91S_ADC *pAdc, unsigned int flag)

 

unsigned int ADC_GetStatus(AT91S_ADC *pAdc)

 

unsigned int ADC_GetInterruptMaskStatus(AT91S_ADC *pAdc)

 

unsigned int ADC_IsInterruptMasked(AT91S_ADC *pAdc, unsigned int flag)

 

unsigned int ADC_IsStatusSet(AT91S_ADC *pAdc, unsigned int flag)

 

unsigned char ADC_IsChannelInterruptStatusSet(unsigned int adc_sr, unsigned int channel)

 

  

کتابخانه can

 

static void CAN_ErrorHandling( unsigned int status, unsigned char can_number)

 

static void CAN_Handler( unsigned char can_number )

 

static void CAN0_Handler(void)

 

static void CAN1_Handler(void)

 

void CAN_InitMailboxRegisters( CanTransfer *pTransfer )

 

void CAN_ResetAllMailbox( void )

 

void CAN_ResetTransfer( CanTransfer *pTransfer )

 

static unsigned char CAN_Synchronisation( void )

 

unsigned char CAN_Write( CanTransfer *pTransfer )

 

unsigned char CAN_Read( CanTransfer *pTransfer )

 

unsigned char CAN_IsInIdle( CanTransfer *pTransfer )

 

void CAN_BasicTestSuiteWithoutInterrupt(void)

 

void CAN_disable( void )

 

unsigned char CAN_BaudRateCalculate( AT91PS_CAN   base_CAN,  unsigned int baudrate )

 

unsigned char CAN_Init( unsigned int baudrate, CanTransfer *canTransfer0, CanTransfer *canTransfer1 )

 

 

 

کتابخانه rtt

 

void RTT_SetPrescaler(AT91S_RTTC *rtt, unsigned short prescaler)

 

unsigned int RTT_GetTime(AT91S_RTTC *rtt)

 

void RTT_EnableIT(AT91S_RTTC *rtt, unsigned int sources)

 

unsigned int RTT_GetStatus(AT91S_RTTC *rtt)

 

void RTT_SetAlarm(AT91S_RTTC *pRtt, unsigned int time)

 

 

 

 

 

کتابخانه usart

 

void USART_Configure(AT91S_USART *usart,unsigned int mode,unsigned int baudrate,unsigned int masterClock)

 

void USART_SetTransmitterEnabled(AT91S_USART *usart,unsigned char enabled)

 

void USART_SetReceiverEnabled(AT91S_USART *usart,unsigned char enabled)

 

void USART_Write(AT91S_USART *usart,unsigned short data,volatile unsigned int timeOut)

 

unsigned char USART_WriteBuffer(AT91S_USART *usart,void *buffer,unsigned int size)

 

unsigned short USART_Read(AT91S_USART *usart,volatile unsigned int timeOut)

 

unsigned char USART_ReadBuffer(AT91S_USART *usart,void *buffer,unsigned int size)

 

unsigned char USART_IsDataAvailable(AT91S_USART *usart)

 

void USART_SetIrdaFilter(AT91S_USART *pUsart, unsigned char filter)