Siro
28.09.2015, 19:29
Ich habe eben ein SEHR komplexes Programm geschrieben :)
Bit setzen
Bit löschen
Bit setzen
Bit löschen
wollte mal schauen wie schnell das geht.
Bei meinem, mit internem 8MHz Oszillator getakteten PIC, sind das 500ns High dann 500ns Low.
Völlig okay. Durch die 4 stufige Pipline werden also 4 Quarztakte a 125ns benötigt.
Nun habe ich ein NOP zwischen die Zeilen gesetzt in der Annahme, nun müste mein Signal 1us High dann 1 us Low sein.
GP0 = 1;
NOP();
GP0 = 0;
NOP();
GP0 = 1;
NOP();
GP0 = 0;
NOP();
Aber zu meinem Erstaunen sind die Signale nun 1,5us lang.
Also braucht der NOP 1us und nicht 500ns
Dann habe ich 2 NOPs eingebaut und nun habe ich rechnerisch 1,5us aber mein Ossi zeigt 2us
Hier hat also der erste NOP 1ms und jeder weitere 500ns ????
Ich hab das in "C" codiert und mir den Assemblercode angesehen.
Da wurde nix eingefügt von wegen Banklselect oder ähnlichem vom Compiler.
Das ist absolut 1 zu 1 Assembler
bsf GPIO0,0
NOP
bcf GPIO0,0
NOP
usw.
Hat dafür jemand eine Erklärung.
Achja, es handelt sich momentan um den PIC12F683
Siro
Die ersten beiden Signale auf dem Ossibildern sind ohne NOPs, die nachfolgenden mit NOP
Bit setzen
Bit löschen
Bit setzen
Bit löschen
wollte mal schauen wie schnell das geht.
Bei meinem, mit internem 8MHz Oszillator getakteten PIC, sind das 500ns High dann 500ns Low.
Völlig okay. Durch die 4 stufige Pipline werden also 4 Quarztakte a 125ns benötigt.
Nun habe ich ein NOP zwischen die Zeilen gesetzt in der Annahme, nun müste mein Signal 1us High dann 1 us Low sein.
GP0 = 1;
NOP();
GP0 = 0;
NOP();
GP0 = 1;
NOP();
GP0 = 0;
NOP();
Aber zu meinem Erstaunen sind die Signale nun 1,5us lang.
Also braucht der NOP 1us und nicht 500ns
Dann habe ich 2 NOPs eingebaut und nun habe ich rechnerisch 1,5us aber mein Ossi zeigt 2us
Hier hat also der erste NOP 1ms und jeder weitere 500ns ????
Ich hab das in "C" codiert und mir den Assemblercode angesehen.
Da wurde nix eingefügt von wegen Banklselect oder ähnlichem vom Compiler.
Das ist absolut 1 zu 1 Assembler
bsf GPIO0,0
NOP
bcf GPIO0,0
NOP
usw.
Hat dafür jemand eine Erklärung.
Achja, es handelt sich momentan um den PIC12F683
Siro
Die ersten beiden Signale auf dem Ossibildern sind ohne NOPs, die nachfolgenden mit NOP