• Compile AVR Code in Raspberry Pi

    I have recorded a video showing the steps to compile AVR code.

    In this video, you will see how to compile AVR led blinking code for the atmega32 microcontroller is being compiled using AVR-GCC in raspberry pi 3 b+.

    Step 1. : Create a file and put your avr c code in that file. Save that file with a “.c” extension

    Step 2. : Run the following commands one by one

    avr-gcc -g -0s -mmcu=atmega32 -c led.c
    
    avr-gcc -g -mmcu=atmega32 -o led.elf led.o
    
    avr-objcopy -j .text -j .data -o ihex led.elf led.hex

    Step 3. : The step 2 will create a hex file. which can be uploaded to the microcontroller with the help of a programmer.

  • How to install AVR-GCC Compiler in raspberry pi

    In this video, you will see that how avr compiler can be installed in raspberry pi model 3 b+.

    For steps on how to install avrdude in raspberry pi you can go here.

    http://www.exasub.com/component/integrated-circuit/microcontroller/avr/using-usbasp-v2-0-avr-programmer-with-raspberry-pi-3/

    AVR compiler and avrdude together on raspberry pi make it a development environment for embedded systems involving Avr microcontroller.

  • Using USBASP V2.0 AVR Programmer with Raspberry Pi 3

    Raspberry pi or Rpi can be used for programming certain AVR microcontrollers. I have made a video showing you the steps.

    Step 1: you have to install AVRDUDE

    sudo apt-get install avrdude -y

    Step 2: You can check if the avrdude is installed properly or not using

    avrdude

    step 3: connect your USBASP v2.0 to your microcontroller

    avrdude -c usbasp -p m32

    Microcontroller Programmed:

    Atmega32, atmega32a, Atmega16, Atmega16a,

  • Capacitor

    A physical device capable of storing energy in the form of the electric field in the dielectric medium when voltage is applied across it.

    In the following video, you will find explanations to:

    1. capacitor
    2. capacitance
    3. Series and Parallel connection of capacitor
    4. Impedance
    5. Reactance
  • How to calculate the value of a resistor from colour codes

    To calculate the value of a resistor from colour codes.

    Then, First, you have to locate the Tolerance band.
    The tolerance band mostly in most of the resistors is made from either gold colour or silver colour.

    Then you need to look at the next band which tells you the multiplier.

    Then you need to look at the opposite end of the resistor and note down the colour in order till the multiplier.

    The first band from the left gives us the first digit.
    The next band gives the next digit.

    Resistor color coding chart
  • Resistor

    A resistor is an electronic component that offers resistance in the flow of current. The practical resistor has a slight shift in its values from the ideal counterparts.

    Not all the values of the resistor are available in the market. There is a certain number that is chosen and is readily available. If a particular value is to be achieved then a combination made from the selected resistors is to be used.

    An ideal resistor follows Ohm’s law.

    A practical resistor changes its value if the surrounding temperature, pressure and changes in mechanical dimension etc. Though there are very nominal changes yet they differentiate the ideal resistor from the practical counterpart.

    The resistors value is generally marked on the surface. If the resistor is big, standard values along with manufacturing company seal are also printed on top of it.

    For very small resistors; either colour bands or some code is written on top of it. As the size goes on decreasing the surface area becomes small and reaches a point where it is not feasible to print anything that can be visible to the naked eye. Then the values are written beside the component.

    10 Kilo Ohm Through Hole Type Resistor
    SMD Resistor with value code written on it
    SMD resistor with a reference to value is printed beside it.

    There are two types of resistors.

    1. Fixed Value resitors
    2. Variable Value Resistors

    It is important to consider the power dissipation of a resistor. Since resistor obstructs the flow of current. The obstruction causes a buildup of energy which needs to dissipate. If this energy is not released then it will burn the resistor or permanently change its resistance values. So resistors use heat to dissipate the energy.

    for example:
    Let’s consider an 8-ohm resistor that resists the flow of current.


    A voltage source of 9V has connected across. The 8-ohm resistor drops the voltage from 8V to 0V. Blocking a significant portion of voltage that is 8V.
    and Let’s say the current flowing in the circuit is one Ampere.
    So the resistor needs to dissipate 8W of energy.
    Now you need to select a resistor that can dissipate more than 8W of energy. and the next best option is to use a resistor of 10 watts.

  • How to add a new .h header file in STM32 Cube IDE

    1. Click on [arrow] besides Core in your project explorer
    2. Right Click on “Inc” folder and point your mouse at the “NEW” menu item.
    3. Select “header file” option
    4. A new Header file dialog box will appear
    5. Fill in the name of the header file in “Header file” with a dot h extension
    6. Click on finish
    7. Now open your main.c file and add your custom header file after USER CODE BEGIN Incudes
  • How to Perform Discrete Fourier Transform on N-Point Sequence using STM32L476G

    x(n) = { 0, 1, 0, 1}

    Here x(n) is a 4 point sequence

    Now to perform Fourier transform on this sequence.

    DFT Formula

    Here X(k) is the DFT of x(n)

    ‘k’ is the index representing individual frequency component

    ‘N’ is the Length of the sample sequence

    ‘n’ is an index of the element of the sequence in x(n)

    For example: if we calculate the value for k =1

    This will give us the X(1)

    So, if the sequence is sampled at 4Hz and the sampling frequency is equal to two times the max frequency. Then X(1) gives us the 1 Hz frequency component.

    To calculate Euler identity

    Here is the code:

    /*
    * Author: ABHAY KANT
    * Discrete Fourier Transform using STM32L476vg on STM32L476g-Disco board.
    * computes N point DFT
    * computes magnitude of N/2 Points of dft
    * computes phase of N/2 points of dft
    * NOTE: DFT array is named xfft. It DOES NOT Calcultes DFT using FFT algo.
    * Limitations: for a 2000 point sequence it takes a lot of time.
                   And as the number of points increase the computational time also increases.
    a rough estimate of time for a 2000 point dft it takes roughly ~ 60 seconds. 
    */
    asm("nop");
    //int xn[6] = {1,1,2,2,3,3};
    
    int16_t Len = 1024; 
    float xn[Len];
    
    float xfft[Len * 2];
    
    /*
     * calculating phase and mag for only N/2 since the value generated after N/2 are conjugate 
     */
    float phase[Len/2], mag[Len/2];
    int	k = 1;
    int	N = 0;
    int	n = 0;
    float	real = 0;
    float	imag = 0;
    float	param = 0;
    int	freq = 10;
    int i;
    
    /*
     * These two "for loops" are used to initalize the array with zero's
     */
    for(n=0;n<=Len;n++){xn[n] = 0;}
    for(n=0;n<=Len*2;n++){xfft[n] = 0;}
    
    
    
    /*
     * Generating a sine Wave 
     */
    
    	for(i=0; i<Len/2; i++){
    		xn[i+512] = sin((2 * 3.1415926 * i * freq)/Len);
    	}
    
    N = Len;				
    /* Note: if Len/8 then it will only calculate the 1/8 th term from 0 only.*/
    /*
     * This loop calculates the x[n].e^(-j2.PI.n.k/N)
     */
    
    	for(k=0 ; k<N ; k++){
    
    		for(n=0 ; n<N; n++){
    		param = ((2 * M_PI * n * k)/N);
    		real = real + ( xn[n] * cos(param) );
    		imag = imag + ((-1) * xn[n] * sin(param) );
    		}
    		xfft[2 * k] = real;
    		xfft[(2 * k) + 1] = imag;
    		real = 0;
    		imag = 0;
    	}
    
    
    
    /*
     * Calculate phase angle of each frequency component
     */
    float temp;
    for(k=0; k<N/2;k++)
    {
    	temp = xfft[(2 * k ) + 1] / xfft[2 * k];
    	phase[k] = atan(temp);
    }
    
    /*
     * Calculate Magnitude of each frequency 
     */
    
    for(k=0; k<N/2;k++)
    {
    	temp = sqrt( (xfft[(2 * k ) + 1] * xfft[(2 * k ) + 1] ) + ( xfft[2 * k] * xfft[2 * k] ) );
    	mag[k] = temp;
    }
    asm("nop");  //added to support for creating breakpoint during debug
  • How to add CMSIS DSP Library to STM32 Cube IDE Project for stm32l476vg

    To add CMSIS DSP library in you stm32cube project.

    You can follow the steps written on ST’s website

    Configuring DSP libraries on STM32CubeIDE

    I have also made a video.

    In this video. I have shown steps to add the arm_math.h header file. You need to configure the stm32 cube ide.

  • How to write german umlauts in MS Word

    To write umlauts

    1. Press
      ctrl + shift + :
    2. Release the key
    3. Type the alphabet

    ä – a

    Ä – A

    ü – u

    Ü – U

    To write ess tset ß

    • alt + 0223
    • ß

    Write umlaut using ALT codes

    UmlautAlt + code
    ÜAlt + 0220
    üalt + 0252
    äalt + 0228
    Äalt + 0196
    Öalt + 0214
    öalt + 0246
    ßalt + 0223