Was ist die schnellste Zeit, in der ein Mikrocontroller (in diesem Fall PIC16) eingestellt und gelöscht werden kann? Es wird durch die Häufigkeit definiert, aber ich kenne die Formel nicht, um die schnellste Zeit zu berechnen, in der ein einzelner Pin gesetzt und gelöscht werden kann.
Angenommen, die Frequenz (XTAL) beträgt 20 MHz und es gibt keine Verzögerungen dazwischen, wie lange dauert es, bis der Pin gesetzt und gelöscht wird?
Zum Beispiel:
RB2=0;
RB2=1;
RB2=0;
Wann ist RB2 hoch?
Dies hängt von dem jeweiligen PIC ab, da einige PICs einen Befehl pro Zyklus ausführen können und andere beispielsweise einen Befehl für jeweils vier Zyklen des Systemtakts ausführen.
Obwohl das OP um Informationen zu einem 20-MHz-PIC16 gebeten hat, zeige ich, da dies bereits angesprochen wurde, Informationen für die schnellste Version in allen verschiedenen Familien von PICs. Wo es signifikante Unterschiede zwischen Teilen in verschiedenen Unterfamilien gibt, wie PIC24F/PIC24EP und PIC32MX/PIC32MZ, zeige ich beide getrennt.
Ich habe die Zahlen erhalten, indem ich auf die Digi-Key- Website gegangen bin, nach Teilen für jede Familie gesucht und dann die höchste Geschwindigkeit ausgewählt habe. Ich habe dann ein Datenblatt zu einem Beispielteil hochgezogen, das auch den MIPS-Wert verifiziert hat.
Family Clock Speed I/O toggle time
PIC10F 16 MHz 4 MIPS 250 ns
PIC12F 20 MHz 5 MIPS 200 ns
PIC16F 20 MHz 5 MIPS 200 ns <--- example in the original question
PIC16F 48 MHz 12 MIPS 83 ns
PIC18F 64 MHz 16 MIPS 62 ns
PIC24F 32 MHz 16 MIPS 62 ns
PIC24EP 70 MHz 70 MIPS 28 ns
dsPIC30 40 MHZ 30 MIPS 33 ns
dsPIC33EP 70 MHz 70 MIPS 28 ns
PIC32MX 100 MHz 100 MIPS 10 ns
PIC32MZ 200 MHz 200 MIPS 5 ns
Wenn jemand Korrekturen an dieser Tabelle vornehmen möchte, zögern Sie bitte nicht, sie zu bearbeiten.
MIPS sind Millionen Anweisungen pro Sekunde. Die E/A-Umschaltzeit ist die Zeit in Nanosekunden (ns), die der E/A-Pin entweder ein- oder ausgeschaltet wäre, und wird als eine Million geteilt durch die MIPS-Zahl berechnet.
Alle diese Prozessoren haben die Fähigkeit, einen I/O-Pin in einem einzigen Befehl ein- oder auszuschalten. Die Anweisungen selbst variieren je nach Prozessor.
Wenn Sie einen 20-MHz-Quarz verwenden, bedeutet dies, dass Sie 5 MIPS (5 Millionen Anweisungen pro Sekunde) haben, da die 20 MHz intern durch 4 geteilt werden.
Das bedeutet, dass eine Einweisung dauert .
Sie können in der Montage erreichen, was Sie wollen, wie folgt:
bcf PORTB, 2 // Sets the pin state to 0
bsf PORTB, 2 // Sets the pin state to 1
bcf PORTB, 2 // Sets the pin state to 0
Dies zeigt, dass das Ändern des Pin-Status eine Anweisung erfordert, daher beträgt die Mindestzeit, die der Pin eingeschaltet ist, 200 ns (wenn Sie ihn direkt wieder löschen).
Ich habe nur Erfahrung mit PIC16 und PIC18, bei dsPIC, PIC32 und allen anderen Varianten bin ich mir nicht sicher. Aber im Allgemeinen, wenn Sie die Anzahl der Anweisungen pro Sekunde kennen (Sie können sie aus der Oszillatorkonfiguration berechnen), können Sie die minimale Einschaltzeit berechnen, wie Sie es sagen.
Benutzer17592
trosley
Olin Lathrop
trosley