stefan-tiger
04.05.2007, 13:44
Hallo,
ich habe die PICs 16F870 bzw. 877.
Angeschlossen ist ein 16 MHz Quarz.
Im Datenlatt steht, daß Befehle 1 Taktzyklus brauchen, Sprungbefehle 2 Taktzyklen.
In der gewünschten Anwendung, soll eine SPI-Kommunikation abgefangen werden, d.h. zwischen einem anderen Controller und einem Sensor soll der PIC eingebaut werden.
Der andere Controller, der SPI-Master sozusagen, frägt den Sensor in Paketen zu 16 Taktzyklen mit 66 kHz ab.
serial clock & data Leitungen vom anderen Controller sowie die serical clock & data Leitung des Sensors sind an entsprechend vier I/O-Pins des PICs angeschlossen.
Ich habe nun ein kleines Programm geschrieben und auf den PIC gebrannt. (Tools: MPLAB, CCS, ICD2).
Das Programm wartet auf die steigende Taktflanke der serial clock Leitung vom anderen Controller arbeitet dann ein bisschen Code ab indem auch die Taktflanke irgendwann auf den Sensor weitergegeben wird. Auch die Datenleitungen werden abgefragt bzw. gesetzt.
Das Prorgamm besteht aus 7 kleinen Funktionen, in denen nichts großartig gemacht wird, da als erster Schritt nur die Weiterreichung der Kommunikation implementiert ist. Eingriffe in die Kommunikation sind für später geplant.
Mit einem Frequenzgenerator teste ich also den serial clock I/O-Pin des PIC welchen vom anderen Controller später kommen soll und Messe den anderen I/O-Pin des PIC der serial clock welches spätzer zum Sensor führen soll.
Ich hoffe man kann sichs Vorstellen.
Bei der Messung sollte herauskommen: jede steigende Flanke des "Eingangs" ergibt eine steigende Flanke des "Ausgangs".
Problem: Es werden Taktflanken "verschluckt".
Es scheint so als arbeite der PIC zu langsam.
Woran kann das liegen?
Wie kann ich feststellen, daß mein PIC wirklich mit 16 MHz läuft und somit pro ASM-Befehl 1/16 µs bzw. 2/16 µs dauert?
ich habe die PICs 16F870 bzw. 877.
Angeschlossen ist ein 16 MHz Quarz.
Im Datenlatt steht, daß Befehle 1 Taktzyklus brauchen, Sprungbefehle 2 Taktzyklen.
In der gewünschten Anwendung, soll eine SPI-Kommunikation abgefangen werden, d.h. zwischen einem anderen Controller und einem Sensor soll der PIC eingebaut werden.
Der andere Controller, der SPI-Master sozusagen, frägt den Sensor in Paketen zu 16 Taktzyklen mit 66 kHz ab.
serial clock & data Leitungen vom anderen Controller sowie die serical clock & data Leitung des Sensors sind an entsprechend vier I/O-Pins des PICs angeschlossen.
Ich habe nun ein kleines Programm geschrieben und auf den PIC gebrannt. (Tools: MPLAB, CCS, ICD2).
Das Programm wartet auf die steigende Taktflanke der serial clock Leitung vom anderen Controller arbeitet dann ein bisschen Code ab indem auch die Taktflanke irgendwann auf den Sensor weitergegeben wird. Auch die Datenleitungen werden abgefragt bzw. gesetzt.
Das Prorgamm besteht aus 7 kleinen Funktionen, in denen nichts großartig gemacht wird, da als erster Schritt nur die Weiterreichung der Kommunikation implementiert ist. Eingriffe in die Kommunikation sind für später geplant.
Mit einem Frequenzgenerator teste ich also den serial clock I/O-Pin des PIC welchen vom anderen Controller später kommen soll und Messe den anderen I/O-Pin des PIC der serial clock welches spätzer zum Sensor führen soll.
Ich hoffe man kann sichs Vorstellen.
Bei der Messung sollte herauskommen: jede steigende Flanke des "Eingangs" ergibt eine steigende Flanke des "Ausgangs".
Problem: Es werden Taktflanken "verschluckt".
Es scheint so als arbeite der PIC zu langsam.
Woran kann das liegen?
Wie kann ich feststellen, daß mein PIC wirklich mit 16 MHz läuft und somit pro ASM-Befehl 1/16 µs bzw. 2/16 µs dauert?