Hallo an alle Freeduino mitglieder
ich habe seit ein paar tagen ein Problemm ich mus mit dem Arduino 3 Rechtecksigale erzeugen und schaffe das nicht ganz
hier erst mall meinen code
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(13, OUTPUT);
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
}
void loop() {{
for (int x=0; x <450; x++) {
digitalWrite(13, HIGH); // pin 13 on
digitalWrite(0, LOW); // pin 0 off
delayMicroseconds(63);
digitalWrite(13, LOW); // pin 13 off
digitalWrite(0, HIGH); // pin 0 on
delayMicroseconds(63);
}
digitalWrite(1, HIGH); // pin 1 on
}
for (int x=0; x <450; x++) {
digitalWrite(13, HIGH); // pin 13 on
digitalWrite(0, LOW); // pin 0 off
delayMicroseconds(63);
digitalWrite(13, LOW); // pin 13 off
digitalWrite(0, HIGH); // pin 0 on
delayMicroseconds(63);
}
digitalWrite(1, LOW); // pin 1 off
}
nun kriege ich es hin das an ausgang pin 13 und 0 ein Rechteck 7 KHz rauskommt aber ist es leider nicht exzakt gegenpfasig was kann ich hier bei ändern
ausgang 1 sollte 10 hz bekommen aber da bin ich immer bei 24 hz
vll kann mir jemand einen typ in die richtige richtung geben das wäre super
mfg MrJoney
vor 1 year 15 weeks
Ich messe an ausgang #1 7.81Hz.
Die zeitverzoegerung von 3.80µs is auf die langsamheit von digitalWrite() zurueckzufuehren. Diese funktion mach allerlei checks und so weiter.
Wenn du es schnell brauchst, dann geht KEIN weg an direkten register manipulationen vorbei. Also so etwas wie
PORTD |= _BV(PD1);
Nur als beispiel versteht sich.
Wenn das getan wird, dann ist die verzoegerung nur noch 122ns.
Login or register to post comments