Gast
#515017
hab folgendes problem:
sobald ich EIMSK initialisiere, dann wird mein Overflow Int nicht
ausgeführt.
Wenn EIMSK = 0, dann funktioniert der overflow_0 int.
komischerweise erfolgt die toggle-ausgabe an portb dennoch... was mach
ich falsch bzw: hab ich was im datenblatt überlesen ?!!
Int 0 sowie das Xmem-Interface werden für andere dinge benötigt.
source:
----------------------------------------
#include <stdio.h>
#include <avr/io.h>
#include <avr/interrupt.h>
volatile unsigned int bla;
signal (SIG_OUTPUT_COMPARE0) {
bla++;
}
int main(void) {
XMCRA = (1<<SRE);
XMCRB = (1<<XMBK) | (1<<XMM2)|(1<<XMM1)|(1<<XMM0);
EICRB = 0x0; // disable int 7:4
EICRA = (0<<ISC01)|(0<<ISC00);
EIMSK = 1;
EIFR = 1;
PORTB &= ~(1<<PB7);
DDRB |= (1<<PB7);
OCR0A = 0;
TCCR0A = (0<<COM0A1) | (1<<COM0A0) |
(1<<WGM01) | (0<<WGM00) |
(1<<CS02)|(0<<CS01)|(1<<CS00);
TIFR0 = (1<< OCF0A);
TIMSK0 = (1<< OCIE0A); // | (1<<TOIE0);
OCR0A = 123;
sei();
while (1) {
printf ("%X\n",bla);
}
}
----------------------------------------