Ja, der Code oben stimmt nicht mehr ganz, hier der Versuch, nur den Port so kurz wie möglich auf High zu schalten
Code:
#include <avr/io.h>
#include <avr/interrupt.h>
ISR(TIMER0_OVF_vect)
{
TCNT0 = 176;
PORTD =0x40; // PORTD6 auf High setzen
PORTD =0x00; // PORTD auf Low setzen
}
int main ()
{
DDRD=0xff; // PORTD6 auf Ausgang
PORTD =0x00; // PORTD vorsichtshalber mal auf Low gesetzt
TCCR0 |= (1<<CS00);
TCNT0 = 176;
TIMSK |= (1<<TOIE0);
sei();
do
{
}
while (1);
}
Nur bleibt der Port halt wie gesagt für ca. 9mS High, und da ich bis jetzt noch nie ein Signal selbst erzeugen wollte, weiß ich nicht ob das jetzt normal ist, sprich das Umschalten der Ports wirklich so lange dauert, oder ob ich hier einfach etwas übersehen habe.
Weil bei "längeren" Signalen gehts ja, nur nicht unter 9mS, was ich halt seltsam finde, da ich denke am Umschalten kanns doch nicht liegen, eine PWM z.B. kann den Port ja auch so schnell schalten, nur auf meine manuelle Art klappt es einfach nicht.
Lesezeichen