På T0 (klockingången) har jag för tillfället anslutit en liten tangentbordsknapp som är hårdvarumässigt "avstudsad". Den signalen ser hur fin ut som helst på oscilloskopet (10uF, 10k och en Inv. Schmittrigger). Jag förväntar mig alltså att då jag tryckt på knappen 5 gånger ska led:en på PB1 tändas, men det händer ingenting.
Kod: Markera allt
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
int main(void)
{
DDRB |= (0 << PB2); // Pin PB2(T0) markeras som input (vilket är default)
DDRB |= (1 << PB1); // Pin PB1 markeras som output
PORTB |= (1 << PB2); // Aktiverar pullup-resistorn
//Kontrollblink
PORTB |= (1<<PB1);
_delay_ms(500);
PORTB &= (0<<PB1);
cli(); // Stänger av globala interrupts (clear interrupts)
TCCR0A = 0; // Sätter hela registret till 0
TCCR0B = 0;
TCCR0B |= (1 << CS00); //Extern klocka på T0. Stigande flank.
TCCR0B |= (1 << CS01); //Extern klocka på T0. Stigande flank.
TCCR0B |= (1 << CS02); //Extern klocka på T0. Stigande flank.
TCCR0A |= (0 << WGM00); // Mode CTC (Clear Timer on Compare Match Mode)
TCCR0A |= (1 << WGM01); // Mode CTC
TCCR0B |= (0 << WGM02); // Mode CTC
OCR0A = 5; // Räknarens upplösning, TOP-värde.
TIMSK = (1 << OCIE0A); // Aktiverar interrupt för TCNT0 = OCR0A (TOP-värdet är nått)
sei(); // Slår på globala interrupts (set interrupts)
while(1)
{
}
}
ISR(TIMER0_COMPA_vect)
{
//Kontrollblink
PORTB |= (1<<PB1);
}