Gast
#3180605
Hallo
Mein Timer startet nicht in der ISR.
Mein Microcontroller ist ein Attiny861 und verwende einen 16 bit Timer.
Danke im voraus!
/*
* Dekodierung_des_Empfangssignales.c
*
* Created: 05.04.2013 09:31:40
* Author: 09EPAM42
*/
#include <avr/io.h>
#include <avr/interrupt.h>
int16_t Code = 0x0000;
int Einlesen;
int Auslesen;
ISR(PCINT_vect)
{
GIMSK = 0x00; //PCINT sperren
if ((PINB & 0x10) == 0x00)
{
Code = Code | 0x8000;
}
Code = Code >> 1;
GPIOR0 = Code;
if ((Code & 0B0000000000001100) == 0B0000000000001100)
//0B11010100000001 --> 100000 00101 T 11
{
PORTA = 0x04;
Code = 0x00;
}
TCNT0H = 0xFA;
TCNT0L = 0x88;
TCCR0B = 0x02; // Timer starten
}
ISR(TIMER0_OVF_vect)
{
PORTA = 0xFF;
TCCR0B = 0x00; // Timer stoppen
GIMSK = 0x01; // INT freigeben
GIFR = 0x00; // Flag löschen
}
int main(void)
{
for (int i=0; i<30000;i++);
DDRA = 0xFF;
DDRB = 0x00;
PORTB = 0xFF;
//PORTB = 0x10; // Konfiguration für den Sensor
TCCR0A = 0x80; // 16 Bit Modus
PORTA = 0x00; // Konfiguration für die LED
TCNT0H = 0xFC;
TCNT0L = 0x18;
GIMSK = 0B00100000; // GIMSK setzen
PCMSK1 = 0B00010000;// Interrupt Maskierung
SREG = 0x80; // Global Enable Bit setzen
//TIMSK = 0x00; //
while (1) {}
}