LIST OF EXPERIMENTS LIST OF EXERCISES USING uKeil / IAR WORK BENCH /ARM C COMPILER Study of ARM evaluation system. 2. Interfacing ADC and DAC. 3. Interfacing LED and PWM. 4. Interfacing real time clock and serial port. 5. Interfacing keyboard and LCD. 6. Interfacing of servo motor and DC motor. 7. Interfacing stepper motor and temperature sensor. 8. Implementing zigbee protocol with ARM. LIST OF EXERCISES USING RASPBERRY PI 3 Study of Raspberry-Pi and OS installation 2. Simple web interface for Raspberry-Pi to control the connected LEDs remotely through the interface. 3. Implementation of client and server application on Raspberry-Pi.
ARM • Advanced Risc Machines (formerly Acorn Risc Machines) •Originally conceived by Acorn Computers for business oriented computing in 1985
Design Objectives Common Architecture – Fixed instruction length – Load/Store model – Pipelined architecture Reduced Cost Power Efficiency Well Rounded Performance
Rise of Popularity • Designer Flexibility – Power Efficiency – Performance – Robust debugging tools • Uncommon business model • Manufacturing Flexibility
Low Level Implementation • ARM 64‐bit Instruction Set (AArch64) – 32-bit instructions – 32 - 128-bit registers – Supports 32 or 64-bit arguments • Jazelle Instruction Set – 8‐bit instructions – Uses Javabyte code execution
Low Level Implementation • ARM Instruction Set – 32‐bit instructions – Support load‐store architecture – Execution uses a 3‐address format – Example : ADDS r0,r1,#1
Low Level Implementation • Thumb Instruction Set – 16‐bit instructions, support load‐store architecture, – Unconditional execution (branch instructions), – Uses a 2‐address format – Example : ADD r1,#1
ARM Product Series • “Classic” ARM: ARM7, ARM9, ARM11 – Cheap, low power solutions – Cheaper, lower performance than Cortex Series – Lower‐End devices, or devices that require simple controllers
ARM Product Series • Cortex Embedded Processors – Cortex M Series • Low gate count • Low power consumption • Designed as microcontrollers – Cortex R Series • Higher Performance • Designed for Real‐Time Applications
ARM Product Series • Cortex Application Processor (A Series) – Emphasis on performance and power efficiency – Most Profitable Platform, fastest growing platform – Three Main Varieties: • A5, A8, A9
IAR Embedded Workbench provides an integrated development environment (IDE) that allows to develop and manage complete application projects for embedded systems. The environment comprises tools for compiling, linking, and debugging and they have comprehensive and specific target support. (i.e.same user interface - regardless of any type of microcontroller) Software's used in the LAB
OVERVIEW Software's used in the LAB
THE IDE The IDE is the framework where all tools needed to build your application are integrated: a C/C++ compiler, an assembler, a linker, library tools, an editor, a project manager, and the Debugger. In addition to these tools, you can invoke external tools to the tool chain. The tool chain that comes with your product package is adapted for a certain microcontroller. However, the IDE can simultaneously manage multiple tool chains for various microcontrollers. This means that if you have IAR Embedded Workbench installed for several microcontrollers, you can choose which microcontroller to develop for in the IDE. Software's used in the LAB
2. FLASH MAGIC NXP Semiconductors produce a range of Microcontrollers that feature both on- chip Flash Memory and the ability to be reprogrammed using In-System Programming(ISP) technology. Flash Magic is Windows software that allows easy access to all the ISP features provided by the devices. Software's used in the LAB
3. Win X talk Win X talk software is windows software that allows send and receives the data from serial port. COM port configuration is variable. Softwares used in the LAB
Introduction to 8086 (continued.....) STM32F407VG
Introduction to 8086 (continued.....)
Introduction to 8086 (continued.....)
Introduction to 8086 (continued.....)
Introduction to 8086 (continued.....) LED SECTION
KEYPAD SECTION
LCD DISPLAYS
Registers's used for initialization
GPIO-MODER
GPIO-MODER
Introduction to 8086 (continued.....) GPIO-TYPER
GPIO port pull-up/pull-down register (GPIOx_PUPDR) The GPIOx_PUPDR registers configures the internal pull-ups and pull-down resistors on each I/O pin. The internal pull-up/down resistors can be configured on GPIO pins set as input or output (though I'd imagine they'd be more popular on input pins). The Pullup/down resistors have a typical value of 40KOhms but can range from 30-50Kohms .
Introduction to 8086 (continued.....) GPIO-PUPDR
GPIO-PUPDR
GPIO port output speed register (GPIOx_OSPEEDR) 32-bit register where each set of two bits represent the speed of a single output pin. For example bits 0 and 1 of the OSPEEDR register associated with port C (GPIOC_OSPEEDR), represent the speed setting of the output pin PC0 and bits 26 and 27 of the same register represent the speed setting of the output pin PC13. These two bits can be set to: 'x0': 2MHz Low speed '01':10MHz Medium speed '11': 50MHz High speed
Introduction to 8086 (continued.....) GPIO-SPEEDER
16-bit read-only register. Each bit represents the input value on a corresponding pin. Reading a '0' in bit 8 of this GPIOC _IDR register indicates that the voltage on PC8 is 0V (GND). reading a '1' in bit 8 of this GPIOC _IDR register indicates that the voltage on PC8 is 3.3V (VDD) GPIO port input data register (GPIOx _IDR)
GPIO-Input data register
GPIO port output data register (GPIOx_ODR) 16-bit read/write register. Each bit represents the output value on a corresponding pin. Writing a '0' in bit 8 of this GPIOC _ODR register indicates that the voltage on PC8 is driven by the micro to 0V (GND). writing a '1' in bit 8 of this GPIOC _ODR register indicates that the voltage on PC8 is driven by the micro to 3.3V (VDD).
GPIO-Output data register
#include "stm32f4xx.h" /* delay function */ void delay(long int a) { long int b,c; for(b=0;b<a;b++) for(c=0;c<a;c++); } void LED_init() { RCC->AHB1ENR = 1 <<3; //enable the clock to port D GPIOD->MODER = 0x55555555; //select all pins as output mod GPIOD->OTYPER = 0x00000000; //push-pull type GPIOD->OSPEEDR= 0xAAAAAAAA; //50MHz speed GPIOD->PUPDR = 0x00000000; //no pull-up no pull down } /*main function starts here */ void main() { LED_init(); //LED initialization while(1) { GPIOD->ODR =0x00000A00; //leds turns ON delay(3000); //delay GPIOD->ODR =0x00000000; //leds turns OFF delay(3000); //delay }}