Moin, So habe ein kleines Programm geschrieben um den 12F629 mal auszuprobieren und wollt eben das Programm auf den PIC brennen aber Brennprogramm sagt: "Checking Osccal & Bandgab..." "Check Osccal is Blank!" So meine Frage Wo kann ich denn Den Osccal einstellen ? im Datenbuch steht das er standart mässig in der Center Frequnz eingestellt ist. Ich benutze einen ALL-11C2 Brenner mit der dazugehörigen Brennsoftware vom Hersteller. Könnte mir bitte dabei jemand helfen ? Danke Sebastian
Ich Benutze MPLAB und dort hab ich im "Configuration & ID data" folgendes eingestellt: (Ich hab mein Programm mal in den anhang kopiert) Oscillator : INTOSC, I/O function on GP4 Watch dog : WDT disabled Power up Timer : PWRT enabled MCLR pin functi : /MCLR pin is Alternate function Brown-Out reset : BED Reset enabled Code Protect : Code Protect Off Data memory Prote: Code protect Off Und immer noch der gleiche fehler aber mit Oscillator : INTOSC, I/O function on GP4 Lege ich doch dest das der Interne Oszi verwendet wird oder ?
Hi >>Und immer noch der gleiche fehler aber mit >>Oscillator : INTOSC, I/O function on GP4 >>Lege ich doch dest das der Interne Oszi verwendet wird oder ? Ja, hier legst du den Internen Oszillator fest. Kannst du nicht bei deinem Programmer den OSCCAL-Wert festlegen? Ich habe mal geles wie man den OSCCAL da festleget.. aber i weis nicht mehr wie.. waren glaube ich nur 2 Zeilen oder so... i schau mal ob ich was finde. Aber sonst schau mal bei www.fernando-heitor.de vorbei.. da wirst du sicher deine Antwort(für die und zukünftige Fragen) bekommen.
Hallo Sebastian, Der 12 F629 springt beim reset immer erst auf Adresse 3FFFH. Dort steht normalerweise ein Retlw xx -Befehl. Wenn man den internen Oscillator benutzt, schreibt man als ersten Befehl ab Org 000 "movwf OSCAL " Damit ist der Oszillator kalibriert. Bei anderer Oszillatorkonfiguration kann man den Ladebefehl weglassen. Wenn du den Pic vor dem ersten Brennen ausliest, steht dort der Calibrationswert ab Werk. Gruss Digger
Hallo Leute. auf der Suche nach einer Lösung zu einem Problem mit MPLAB, PICkit2 und OSCCAL bin ich über diesen Thread gestolpert. Zunächst will ich mal den inhaltlichen Unsinn des letzten Beitrages korrigieren. Es geht hier um den PIC12F629. 1. Richtig ist, dass ab Werk an der letzten Programmspeicherzelle ein RETLW-Wert für OSCCAL steht. 2. Die Speicherzelle ist an 3FFh und nicht an 3FFFh. 3. Falsch ist, dass der 12F629 nach dem Reset in diese Zelle springt. Er springt nach 0. Ein RETLW könnte als erste Anweisung nicht funktionieren, weil er nicht wüsste wohin der "returnen" soll. 4. Deshalb ist auch falsch, dass mit einem "movwf OSCCAL" an org 0 der Oszillator kalibriert ist. OSCCAL ist in Bank1. Ohne eine vorangestellte Bankumschaltung kann das niemals funktionieren. Mit "movwf OSCCAL" an der ersten Programmspeicherzelle wird T1CON gelöscht oder irgendetwas anderes geschrieben, falls nach dem Reset im W-Register nicht 0 steht. In "Example 9-1" steht, wie der interne RC-Oszillator des PIC12F629 kalibriert wird. Das Reset-Verhalten der verschiedenen PICs ist unterschiedlich. Es gibt tatsächlich welche, die in die letzte Programmzelle springen. Ein Blick ins Datenblatt hilft hier weiter. Und nun zu meinem Problem: Die anfängliche Freude darüber, dass MPLAB nun auch direkt den PICkit2 anspricht, ist getrübt. In dieser Kombination wird gelegentlich der OSCCAL-Wert zerhackt und nach dem Brennen steht dort 0. Ein "call 0x3FF" geht also ins Nirvana. Anscheinend wird vor dem Brennen der Wert nicht korrekt ausgelesen. Schönen Tag noch, ein Gast
Mit MPLAB und dem PICSTART+ oder ICD2 gibts jedoch keine Probleme, da in beiden Fällen nur bis zu 0x3FE programmiert wird. Demnach bleibt der OSCCAL-Wert erhalten - es sei denn - man LÖSCHT vorher den gesamten Chip. Aber auch hier scheint MBLAB vorher den OSCCAL-Wert auszulesen, um ihn dann nachträglich wieder zu programmieren. Ich bekomme beim Programmieren immer den Hinweis, dass OSCCAL-Wert bereits kalibriert ist. Allerdings hab ich in der Firmware noch eine Abfangroutine implementiert, die einen gelöschten OSCCAL erkennen soll. z.B. call 0x3FF BANK_1 movwf OSCCAL addlw .1 movlw 0x80 btfsc STATUS,C movwf OSCCAL BANK_0 (BANK_1 und BANK_0 sind MACROS) Wenn der OSCCAL gelöscht wurde, steht normalerweise 0xFF drin. Ist dies der Fall, dann schreib ich einfach 0x80 rein, was laut Datenblatt als CENTER FREQUENCY deklariert wird. So kann ich wenigstens garantieren, dass der PIC nicht GANZ DANEBEN läuft. Gruß TK
Hallo TK, die Routine ist nutzlos, wenn alle Bits der Zelle gesetzt oder gelöscht sind und nicht nur die 8 Bit des Operanden - wie bei mir. Der "call 0x3FF" läuft in den Wald. Ich habe mir jetzt angewöhnt, den PICkit 2 wieder auf die alte Weise zu benutzen. In MPLAB das Hexfile machen und über die PICkit-Software importieren und brennen. Mit PICkit 1 lässt sich bei einigen PICs der OSCCAL-Wert "regenerieren". Das ist ganz praktisch. Das Gehampel mit dem Netzteil bei PICStart+ ist mir meist zu umständlich. Gruß, K
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.