AVR Interrupts and binary counter

  
Inside:
Repository
In previous article about the Atmel AVR We have only blinked with LEDs, without influence of events outside the microprocessor. All ports operated only as outputs, there was no input. Now we will show how to connect control buttons to the microcontroller and how to the INTO and INT1 pins as inputs. To demonstrate this, I chose the Atmega8 (You can
AVR Interrupts and binary counter - schematic

also use the newer Atmega8A). The buttons are connected to pins 4 and 5, which are bits 3 and 4 of the port D, but also have an alternative function - INT0 and INT1. These alternative functions are in our interest. They are external interrupt sources. If these interrupts are enabled, you can use these inputs to trigger the interrupt handler. INT1 interrupt is enabled using the most significant bit in register GICR. Interrupt INT0 is enabled using the second highest bit. Enabling both interrupts we do by setting the two upper bits of GICR to 1: Next, we have to select what will trigger the interrupt - the interrupt sensitivity. This is done by using the MCUCR registr. Sensitivity of INT0 is chosen by combination of two bits - ISC01 and ISC00. Sensitivity INT1 is chosen bits ISC10 and ISC11. In our example, we want sensitivity to the falling edge, and therefore each pair is set to 1 0. We can do it this way: Pressing the button now initiates the appropriate interrupt handler. In our example, this is the increment / decrement the working register REG and subsequently sending its state on output, which is a port C - its first 6 bits. Its status is indicated by 6 LED. Now you have built the binary counter, you can press a one button to add 1 and second button to substract 1. Schematic diagram of this experimental circuit you can see below. This video on the bottom of this page demonstrates the function. You can certainly find a...



Leave Comment

characters left:

New Circuits

.