hi
ich verwende den internen oszi
ich hatte auch schon o in den timer geladen. aba da ist nix passiert. also hab ich mal versuchsweise 200 reingeladen.
mfg
Druckbare Version
hi
ich verwende den internen oszi
ich hatte auch schon o in den timer geladen. aba da ist nix passiert. also hab ich mal versuchsweise 200 reingeladen.
mfg
Hallo
So sollte es gehen.Code:#include <inttypes.h> // Allgemeine Bibliotheken
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdint.h>
SIGNAL(SIG_OVERFLOW0)
{
TCNT0=200;
PORTB=~PORTB;
}
int main (void)
{
DDRB=0xFF;
PORTB=0x00;
TCCR0=(5<<CS00);
TCNT0=0x00;
TIMSK=(1<<TOIE0);
sei();
for(;;){}
}
Soll das so sein ?Zitat:
TCCR0=(5<<CS00);
besser
Das muß groß seinZitat:
TCCR0=(1<<CS00) | (1<< CS02);
^Zitat:
SIGNAL(SIG_OVERFLOW0)
Je nach Takt ist das aber zu schnell, um das blinken erkennen zu können.
Siehe auch http://www.mikrocontroller.net/artic...R-GCC-Tutorial
MFG
Dieter
nein auch so gehts nicht.
ich hab dieleds in main jetztabgeschalten undsiefangennicht an zu leuchten also wird der interrupt nicht aufgerufen.
das muss doch irgendwie gehn.
mfg macgyver
ps das mit 5<<cs00 war absicht (5=101)
Hallo
Die Int wird laut AVR Studio sehr wohl aufgerufen.
Habe das Programm gerade auf Hardware getestet. Bei 8 MHz Takt, kann
man das blinken deutlich erkennen.
Code:#include <inttypes.h> // Allgemeine Bibliotheken
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdint.h>
SIGNAL(SIG_OVERFLOW0)
{
PORTB=~PORTB;
}
int main (void)
{
DDRB=0xFF;
PORTB=0x00;
TCCR0=(5<<CS00);
TCNT0=0x00;
TIMSK=(1<<TOIE0);
sei();
for(;;){}
}
MFG
Dieter
Nachtrag
Du weißt aber, was die Zeile macht, und du Glück hattest, das es so geht ?Zitat:
ps das mit 5<<cs00 war absicht (5=101)
MFG
Dieter
danke dieter jetzt gehts. ich hab zwar keine ahnung warum aber ich hab jetzt auch schon ein paar andere progs mit interrupt geschrieben (lauflicht usw)
danke jedenfalls
mfg macgyver