Sunday, May 24, 2020

Using counter 0 of ATMega32 to count external input pulses

Timer/counter 0 could operates in timer mode, or counter mode. In counter mode, the TCNT0 increase its values whenever the input pulse fed to pin PB0/T0 falling down or rising up. We can select between these to pulse transitions.

To use counter, we must work with CS02:00 of the TCCR0 register.
  • Timer/Counter Control Register 0 (TCCR0)
BIT 7





 BIT 0
 FOC0WGM00COM01COM00WGM01CS02CS01CS00

When the CS02:00 = 0x06 , then TCNT0 count the falling edge pulse clock fed to pin PB0/T0.
When the CS02:00 = 0x07, then TCNT0 count the rising edge pulse clock fed to pin PB0/T0.

TCNT0 is 8-bit wise read/write register. It counts from 0x00 to 0xFF. When its value rolls from 0xFF to 0x00, then the TOV0 flag is set.

We can count any value larger than 0xFF by working with TOV0, and adding more variables with programming technique. 
In this example, I create a counter device display the counting result up to 9999.

Using counter 0 of ATMega32 to count external input pulses
Schematic diagram.
PortC and PortD display the 4-digit SSD.
SW2 connects the source signal GEN1
to pin PB0/T0, fed the counter 0.
MET1 roles as a pulse counter here, counting
the input signal from GEN1 whenever SW2
is closed.

Source code is here:


A screen shot of this program.

Using counter 0 of ATMega32 to count external input pulses
A simulation screen shot.
The counting reaches 2179 with some bugs. 



Back to main tutorial page ATMega32 tutorials in C with Atmel Studio 7.

If you want a standard PCB for ATMega32 micro-controller, you can order my AVR Microcontroller project from PCBWay with a reasonable price. Click here to get a free $5 credit for new account.

Interfacing ATMega32 to 74HC595 shift register
ATMega16 ATMega32 Experiment Board PCB from PCBWay

No comments:

Post a Comment

Search This Blog

Labels

25AA010A (1) 8051 (7) 93AA46B (1) ADC (30) Analog Comparator (1) Arduino (15) ARM (6) AT89C52 (7) ATMega32 (54) AVR (57) CCS PICC (28) DAC (1) DHT11 (2) Display (105) Distance Sensor (3) DS18B20 (3) dsPIC (2) dsPIC30F1010 (2) EEPROM (5) Environment Sensor (4) esp8266 (1) I2C (29) Input/Output (67) Interrupt (19) Keil (5) Keypad (10) LCD (46) Master/Slave (1) MAX7221 (1) MCP23017 (5) MCP23S17 (4) Meter (3) MikroC (2) Motor (15) MPLABX (66) Nokia 5110 LCD (3) OLED (2) One-Wire (6) Oscillator (8) PCB (6) PCD8544 (3) PCF8574 (5) PIC (107) PIC12F (2) PIC16F628A (2) PIC16F630 (1) PIC16F716 (3) PIC16F818 (10) PIC16F818/819 (2) PIC16F84A (15) PIC16F876A (1) PIC16F877A (9) PIC16F88 (1) PIC16F887 (60) PIC18 (19) PIC18F1220 (4) PIC18F2550 (3) PIC18F4550 (12) PWM (11) RTC (8) Sensor (10) SH1106 (1) Shift Register (11) Shift Registers (2) SPI (24) STM32 (6) STM32 Blue Pill (6) STM32CubeIDE (6) STM32F103C8T6 (6) SysTick (3) temperature sensor (11) Thermometer (21) Timer/Counter (30) TM1637 (2) UART (7) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (94)