Forum: Mikrocontroller und Digitale Elektronik Auswertung Disassemblerlist_Klährung Ungereimtheiten


von Rudi R. (microwitsch)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Ich versuche zu verstehen, wie das compilierte Programm mit Assemler 
aussehen würde.
Und dabei komme ich gerade mit einem Ablauf siehe Fotoanhang nicht 
klar!?
Meine Kommentare(so,wie ich sie verstehe)sind aufgeführt.

Warum wird dieses PWM-Register so bei der Intialisierung bearbeitet, 
wenn im Register nach meinem Verständnis kein unbekannter Wert stehen 
dürfte?

Es soll doch bloß das Bit für den zuständigen Timer gesetzt werden.
Was soll diese UND-und ODER Bearbeitung im Code?

Kennt sich hier jemand mit CCP-Registerverwendung aus?
Diese Grundeinstellungen sollten ja eigentlich für andere PICs auch 
gelten?

Guckt überhaupt noch einer auf diese Disassemlinglisten oder reicht es 
euch, wenn euer compiliertes einfach funktioniert?

Da ich Anfänger in dem Bereich bin, will ich halt noch sehen, wie der 
PIC zur Arbeit aufgefordert wird! :o)

: Bearbeitet durch User
von Hans (Gast)


Lesenswert?

Wie wäre es wenn Du erst einmal deutsch lernst?

Ciao Hans

von Rudi R. (microwitsch)


Lesenswert?

Hans schrieb:
> Wie wäre es wenn Du erst einmal deutsch lernst?

Das was fehlt habe ich beim Tippen vergessen,das meiste sind leider 
Tippfehler,sorry,
Ich bin es gerade nochmal durch...ich bin kein Bürohengst, der ständig 
auf einer Tastertur rumtippel!

Man kann es lesen... wenn man will...:)

: Bearbeitet durch User
von Disse (Gast)


Lesenswert?

Du hast es doch selbst gut beschrieben. Wert aus CCPTMR0 wird mit 
0b11111100 verundet. Dann sind die Bits 7..2 unverändert und die beiden 
letzten sind 0. Danach wird eine 0b01 hinzugeodert. Also steht in 
Register jetzt vorne der alte Wert und hinten auf jeden Fall 0b01 also 
so was wie 0bnnnnnn01. Die n stehen für den unbekannten alten Wert.
Es wird halt nur C1TSEL geändert. C2TSEL, C3TSEL und C4TSEL werden so 
gelassen wie sie sind.

von Jim M. (turboj)


Lesenswert?

Rudi R. schrieb:
> Es soll doch bloß das Bit für den zuständigen Timer gesetzt werden.
> Was soll diese UND-und ODER Bearbeitung im Code?

Du kannst i.d.R. keine Bits in Peripherie Registern einzeln setzen, 
sondern nur Bytes lesen und schreiben. Dann ist der Umweg nötig.

Beitrag #6583110 wurde von einem Moderator gelöscht.
von Rudi R. (microwitsch)


Lesenswert?

Disse schrieb:
> Du hast es doch selbst gut beschrieben. Wert aus CCPTMR0 wird mit
> 0b11111100 verundet. Dann sind die Bits 7..2 unverändert und die beiden
> letzten sind 0. Danach wird eine 0b01 hinzugeodert. Also steht in
> Register jetzt vorne der alte Wert und hinten auf jeden Fall 0b01 also
> so was wie 0bnnnnnn01. Die n stehen für den unbekannten alten Wert.
> Es wird halt nur C1TSEL geändert. C2TSEL, C3TSEL und C4TSEL werden so
> gelassen wie sie sind.

Oh, alles klar, sowas ähnliches dachte ich mir...aber werden beim 
Configurieren nicht schon alle Refister gelöscht?...
Also wenn ich anfange mein Programm an den PIC zu debuggen?

Die alten Daten dürften doch nicht mehr drin bleiben, wenn die Spannung 
von 5V wegfällt,oder?(Power target Cuircuit from PICkit4)
Solche Sachen sieht man nur wenn man sich die Disassmling anschaut.

Im Dokument zum PIC16F18877 steht die Initialisierung irgendwie ganz 
anders beschrieben?
Ich hatte es vorher nämlich nur in Assembler probiert, doch da ging 
nichts.

Nun ja danke erstmal,...werde mal probieren das im reinen Assemblercode 
wegzulassen und gleich den Wert 00000001 inst Register übertragen, mal 
gucken ob das nicht übertrieben war, was die da im Codegenerator 
festgelegt haben!?
Rein aus Interesse, weil ich ein Lehrbuch habe,in dem unter anderem auf 
solche kurriosen Übercodierungen hingewiesen wurde!?
Stört mich ja erstmal nicht,will ja nur wissen was das Ding gemacht 
hat...:)

von Jens G. (jensig)


Lesenswert?

>Oh, alles klar, sowas ähnliches dachte ich mir...aber werden beim
>Configurieren nicht schon alle Refister gelöscht?...
>Also wenn ich anfange mein Programm an den PIC zu debuggen?

Wieso sollen die beim Konfigurieren gelöscht werden?

>Die alten Daten dürften doch nicht mehr drin bleiben, wenn die Spannung
>von 5V wegfällt,oder?(Power target Cuircuit from PICkit4)
>Solche Sachen sieht man nur wenn man sich die Disassmling anschaut.

Die alten Daten nicht, aber Standardwerte nach dem Reset, so wie diese 
im DB beschrieben stehen.

>Im Dokument zum PIC16F18877 steht die Initialisierung irgendwie ganz
>anders beschrieben?
>Ich hatte es vorher nämlich nur in Assembler probiert, doch da ging
>nichts.

Initialisieren kann jeder, wie er lustig ist. Schließlich kommt es ja 
darauf an, was Du willst.

>Nun ja danke erstmal,...werde mal probieren das im reinen Assemblercode
>wegzulassen und gleich den Wert 00000001 inst Register übertragen, mal
>gucken ob das nicht übertrieben war, was die da im Codegenerator
>festgelegt haben!?

Wenn Du wirklich willst, daß dann 00000001 in den Bits des Registers 
drinnen steht, dann kannst Du das auch machen, wenn aber bereits 
unbekannte Bitsettings da drin sind, die beibehalten werden sollen (und 
das müssen nach einem Reset nicht immer 0-Werte sein), ist das eher eine 
schlechte Idee.

>Rein aus Interesse, weil ich ein Lehrbuch habe,in dem unter anderem auf
>solche kurriosen Übercodierungen hingewiesen wurde!?
>Stört mich ja erstmal nicht,will ja nur wissen was das Ding gemacht
>hat...:)

von oerks (Gast)


Lesenswert?

Zum korrekten Sprachgebrauch, nennt sich das im Slang:
"Ausmaskieren und Verodern".

Mit "Übercodierungen" kann hier keiner was anfangen.

Wobei die kleinen PICs Befehle zum Bit setzen und
Bit ruecksetzen haben. Aber halt immer nur eins zur Zeit.

Bei mehreren geht "Ausmaskieren und Verodern" dann
schneller, einfacher und mit weniger Programm.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.