suit WELCOME TO MY logo WEEK 7

RETURN TO HOMEPAGE

Embedded Programming

Hi pals?..this is the embedded programming week and its sort of a recap of last week Electronics Design where I redrew the Hello world board adding an led and a button which was a success...only this time I`m being required to program the board to do something in as many programming languages as possible.. I took up the challenge with great zest since I was trying to catch up in electronics quite fast...
Let me start by pointing out a few key areas Prof. Neil touched upon..
  • various architectures i.e Harvard, von Neumann RISC, CISC microprocessor, microcontroller FPGA, CPLD ALA
  • Several peripherals such as: A/D ,comparator, D/A, timer/counter/PWM,USART, USB,,

  • programmer families we introduced:8051 PIC MSP AVR ARM STM32 PSoC, xCORE, Propeller

  • Various AVR processors were explained in detail:

    ATtiny10 ATtiny45V ATtiny44A ATmega328P ATmega16U2 ATxmega16E5 ATxmega16C4
    Wait a minute::

    Ok this are the design as designed and modified in Eagle CAD:
    led_________led...
    This is me working on the board accompanied with the final working board..
    led_________led...
    Not so fast pals.. here is the code I used in making the board work...The first pramming language I worked with was C and used AVR to generate makefile...I used an off-the shelf programmer not FabIsp..
    #include
    #include
    #define bit_get(p,m) ((p) & (m))
    #define bit_set(p,m) ((p) |= (m))
    #define bit_clear(p,m) ((p) &= ~(m))
    #define BIT(x) (0x01 << (x))
    int main()
    {
    //SETUP
    //Button is on PA3
    //LED is PA7
    bit_clear(DDRA,BIT(2)); //clear DDRA bit 7 makes PA3 (pin 6) an input to monitor my pushbutton - I don’t need pull-up resistor
    bit_set(DDRB,BIT(5)); //Set DDRA bit 2 makes PA7 (pin 5) an output to control my LED
    //LOOP
    while (1)
    {
    if(bit_get(PINA,BIT(2)))//button is not
    {
    bit_clear(PORTB,BIT(5));//LED is off
    }
    else // button is pushed
    {
    bit_set(PORTB,BIT(5));//LED is on

    }
    }


    Ok this is the rest of the material we covered in class:
    packages :
    DIP SOT SOIC TSSOP TQFP LQFP MLF, CSP, BGA

    clocks : RC (10%, 1% calibrated) ceramic (0.5%) quartz (50 ppm)

    in-system development :

    ISP (header, pads, clip) bootloader JTAG, debugWire, PDI ICE

    programmers :

    ISP AVRISP FabISP avrdude JTAG, debugWIRE, PDI Atmel-ICE

    assembly language : hex file instruction set, opcodes mnemonics, directives, expressions avr-as gavrasm C GCC AVR Libc

    modules types math avr-libc, binutils-avr, gcc-avr WinAVR CrossPack Atmel Studio

    host communication : RS232 bit timing VT100/ANSI/ISO/ECMA terminal Kermit Minicom term.py USB software

    hardware FTDI cable libFTDI echo hello-world hello.ftdi.44.cad board components traces interior

    programming hello.ftdi.44.echo.c hello.ftdi.44.echo.c.make hello.ftdi.44.echo.interrupt.c hello.ftdi.44.echo.interrupt.c.make

    hello.ftdi.44.echo.asm hello.ftdi.44.echo.asm.make

    IDE :

    Atmel Studio Eclipse AVR Firefly Scratch Modkit

    boards :
    Arduino board + C libraries + IDE + bootloader Fabkit Fabio hello.arduino.328P.cad board components traces

    interior Blink.pde boards.txt programming hello.arduino.328P.blink.c hello.arduino.328P.blink.make programming

    ATtiny PSoC Maple Tessel BeagleBone PandaBoard Rasberry Pi

    Interpreters :

    Python BASIC FORTH AVRSH JavaScript

    debugging :

    "printf" Atmel Studio gdb, ddd, Insight

    STM32:

    processor STM32F3 data sheet toolchain gcc-arm-none-eabi sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded

    OpenOCD http://sourceforge.net/projects/openocd/files/latest/download?source=files QStlink2 sudo add-apt-repository ppa:mobyfab/qstlink2

    stlink git clone https://github.com/texane/stlink.git programmer ST-Link V2 software ST library STMCube board

    STM32F3Discovery software blink.zip programming Nucleo

    Well thats it for this week, I`ll keep on practicig and updating however till next time..cheers.