Hab bissle rumgespielt und komme auf folgendes Phänomen
Man kann einen Ausgang mit maximal 88,75 bis 89 KHz takten. Schneller läuft das Programm nicht.
int LEDpin3 = 12;
int LEDpin2 = 11;
int LEDpin1 = 10;
void setup() {
// put your setup code here, to run once:
pinMode(LEDpin1, OUTPUT);
pinMode(LEDpin2, OUTPUT);
pinMode(LEDpin3, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(LEDpin3,HIGH);
digitalWrite(LEDpin3,LOW);
}
Das selbe dann nochmal etwas modifiziert
int LEDpin3 = 12;
int LEDpin2 = 11;
int LEDpin1 = 10;
void setup() {
// put your setup code here, to run once:
pinMode(LEDpin1, OUTPUT);
pinMode(LEDpin2, OUTPUT);
pinMode(LEDpin3, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(LEDpin3,HIGH);
digitalWrite(LEDpin1,HIGH);
digitalWrite(LEDpin3,LOW);
digitalWrite(LEDpin1,LOW);
}
Ergebniss nur noch 38,75KHz
Am Oszi sieht man zwischen den positiven Flanken von 3 und 1 8µsec Zeit vergehen. Bei 16MHz sind das 128 Takte. was macht den der Microcode im Controller da alles um einen Ausgang einzuschalten?
Zwischendrin sieht man noch irgendwelche Interrupts, weil das Signal nicht konstant ist. Es hat ab und zu längere Offphasen, was aber erstmal egal ist. Wäre eh nicht zu ändern.
Jedenfalls sind 128 Takte doch ne ganze Menge. Oder mess ich da was falsch? Vieleicht kann jemand mit Oszi das mal prüfen
Achja, hab einen Arduino Nano Clone mit 328p