Hallo,
habe mal zur Hand genommen was da war. Atmega 16 @ 16 Mhz
Obere Kurve PD5 untere PD 7 mit 4,7K Pullup.
Wie man auf dem Bild vielleicht erahnen kann ist eine Zeiteinteilung von 1µs/div gewählt.
Code:
#include <avr/io.h>
#define NOP asm("nop")
int main (){
DDRD |= (1<<PD5);
while (1)
{
PORTD |= (1<<PD5); //a
DDRD |= (1<<PD7);
PORTD &= ~(1<<PD7); //b
DDRD &= ~(1<<PD7); //c
NOP;
NOP;
PORTD &= ~(1<<PD5); //d
}
return 0;
}
Das ist etwa das was ich erwartet habe. Ein weiter Test bei dem nicht die Pegeländerung am Beinchen, sondern der interne Zustand des PIN's auf einen anderen Ausgang gelenkt wurde, bestätigt, dass was zerush geschrieben hat. Darum Code und Messverfahren posten.
@zerush Wobei das Problem ja darin besteht, dass der Übergang von Ein- auf Ausgang auffällig lange dauert. Erst durch den Übergang wird eine Pegeländerung des PIN's hervorgerufen, die dann sicher auch beim OP schnell genug erkannt wird.
Gruß
Jens
Lesezeichen