Hallo!
Ich habe das Thema geöffnet mit einer Hoffnung, dass mit der Zeit es eine Art von FAQ für alle, die sich mit PIC Mikrokontroller beschäftigen, seien wird.
Es soll eine Sammlung von kleinen sowohl Software als auch Hardware Ideeen sein, die aus Erfahrung vorkommt und hilfreich ist.
Für guten Anfang möchte ich als Beispiel zwei vorstellen:
Kopieren von eizelnem Bit vom Regiter1 (z.B. Bit 3) ins Register2 (z.B. Bit 5):
bcf Register2,5
btfsc Register1,3
bsf Register2,5
"Togglen" vom Timer1 um Prescaler auszulesen:
bsf Register,T0SE
bcf Register,T0SE
Wobei Register ist der, der TOSE Bit enthält z.B. OPTION_REG beim PIC16F84(A).
Ich bedanke mich im voraus für alle Posts, die (hoffentlich) dazu beitragen werden, dass die Sammlung wächst!
MfG
Schaut mal dort (und Umgebung), ev.
http://www.talkingelectronics.com/te...ive_index.html
Da kann man einiges übernehmen (übersetzen), natürlich mit Quellen angabe (oder halt link)
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hallo PicNick!
Vielen Dank für den interesanten Link!
MfG
Hallo!
Die alle im ASM Programm ungebrauchten SFRs können als "normale" Register (GPR) verwendet werden. Wenn zum Beispiel Timer1 nicht benutzt wird, können seine Register TMR1H und TMR1L für Speicherung von Daten benutzt werden. Oder wenn keine indirekte Adressierung benutzt wird, kann für Daten Speicherung Register "FSR" angewendet werden, u.s w.
Es könnte aber gefährlich werden, wenn mehrere Programme gebindet sind. Deswegen muss es immer am Ende, beim volständigen Programm, geprüft werden, welche SFRs tatsächlich benutzt werden dürfen.
MfG
Hallo!
Wenn mann ein Menü auf dem Grafikdisplay erstellt, kann bestimmter Menüpunkt invers dargestellt werden, wenn mann vor der Ausgabe durch UP "DispOut" ein "_Finv" (invers) Flag setzt. Wenn es gesetzt ist, werden alle Bits des ausgegebenden Bytes im Register "R" mit "comf R" negiert, sonst wird der Befehl übersprungen und das Byte aus "R" normal ausgegeben. Nach der inversen Ausgabe wird das "_Finv" Flag gelöscht. Ein Beispielcode dazu:
MfGCode:#define _Finv Flags,0 ; Flag definieren ............... DispOut btfsc _Finv ; prüfen, ob _Finv gesetzt (invers) ist comf R,1 ; wenn ja, alle bits im "R" negieren, ............. ; sonst normal ausgeben return
Hallo!
Wenn gleicher Pin durch Umschalten von TRISX Bit zum Eilesen einer Taste und Ausgabe auf ein Display benutzt werden sollte, muss seriel mit der Taste ein Widerstand geschaltet werden, da die Taste während der Ausgabe den Portpin an GND kurzschliessen kann.
Wenn interne pull-ups benutzt werden, entfällt der pull-up Widerstand 10k.
MfGCode:VCC + | .-. | | 10k | | '-' zum PIC | Portpin <-----+-----> zum Display | .-. | | 1k | | '-' | \ o \ \. o | === GND
Hallo!
Bei Entwicklungsboards, um Defekte von Ports zu vermeinden, sollte zwischen jedem Portpin und dem Anschluss von externer Hardware ein Widerstand 270 Ohm, der den Kurzlussstrom auf ca. 20 mA begrenzt, geschaltet werden.
MfGCode:.-----. ___ .---. | |-|___|---o | Anschluss- | | 270 | | buchse für | |.......| o | externe | | ___ | | Hardware | |-|___|---o | | PIC | 270 '---' | | | | | | | | | | '-----'
Hallo!
Jeder PIC, welcher für HS oder XT Oszillator konfiguriert ist, funktioniert genauso, wenn anstatt eines Quarzes und zwei Kondensatoren, die auf Pins OSC1 und OSC2 angeschlossen sind, auf Pin OSC1 ein Rechteck aus einem Quarzoszillator zugeführt wird.
Die PICs aus der 18FXXX Familie funktionieren sogar wenn sie für HSPLL Oszillator konfiguriert sind. Die Frequenz ist dann gleich 4x Frequenz des Quarzoszillators.
Das ermöglichst ein Austausch eines Quarzes mit einem Quarzoszillator ohne Änderung der Konfiguration und die Option _EXT_OSC scheint überflüssig zu sein.
MfG
Hallo!
Aus meiner eigener Erfahrung zeigt es sich, dass wenn man nicht in der Konfiguration _BODEN_OFF einsetzt, fast alle Programme (vor allem die mit Displays) beim Einschalten der Betriebspannung besser (sicherer) starten.
MFG
Lesezeichen