Hallo
Ich habe ein kleines Problem.
Und zwar get es um einen Pic16F676, denn ich gerne in C programmieren
würde.
Ich programmiere mit der MPLAB-Entwicklungsumgebung v.8.50 und mit dem
CCS-Compiler (3.5.0.92). Als Programmer benutze ich den ICD3-Debugger.
Vorläufig, um den Pic mal richtig einzustellen, habe ich eine sehr
einfache Schaltung aufgabaut (mit Pic und LED), da ich im Pic
programmieren noch fast keine Erfahrung habe.
Ich habe inzwischen schon mehrere Stunden damit verbracht, in Foren nach
einer Lösung zu suchen und bin langsam am verzweifeln...
Ich habe auch schon mehrere Konfigurationen mit den fuses ausprobiert.
Ich möchte gerne mit dem Internen Osccilator arbeiten.
Hier ist mal mein C-Code:
Der Compiler gibt zwar keinen Error aus, aber wenn ich das Programm auf
den Pic laden will, kommt eine Warnung (Screenshot). Wenn ich dann auf
OK klicke wird das Programm auf den Pic geladen. Wenn ich dann aber das
Programm starten möchte, passiert rein gar nichts.
Hat irgendjemand eine Idee, an was das liegen könnte?
Ich habe auch schon über einen anderen Theard in diesem Forum einen
Beitrag gefunden über ein Head Interface
(http://de.farnell.com/microchip/ac162052/head-interface-for-16f676-630/dp/4300841).
Würde das Funktionieren?
Vielen Dank für eure Hilfe.
Gruss Lukas
Habe nochmals ein wenig geschaut, ob ich noch was finde...
Hier im CCS-Forum hatte einer ein ähnliches Problem:
http://www.ccsinfo.com/forum/viewtopic.php?t=32914&highlight=16f676
Darin geht es hauptsächlich, dass wenn man den Pic vollständig löst,
dass danach das OSCCAL Value für die interne Oscillator Konifiguration
mit gelöst wird. Und wie man es manuel wieder hinzufügt.
Ich habe jetzt nach diesem Theard mal meinen Code angepasst.
1
#include<16F676.H>
2
#fuses INTRC_IO, NOWDT, NOPROTECT, BROWNOUT, PUT
3
#use delay(clock = 4000000)
4
#rom 0x3FF = {0x3480}
5
//===================================
6
voidmain()
7
{
8
9
while(1)
10
{
11
output_high(PIN_C4);
12
delay_ms(500);
13
output_low(PIN_C4);
14
delay_ms(500);
15
}
16
}
Und es dürfte auch nicht an irgendwelchen comperator intialisierungen
liegen, da der Ausgang C4 keine andere Funktion ausser IO hat.
Allerdings glaube ich nicht, dass das der Haupgrund ist, das es nicht
funktioniert. Warum? Weil wenn ich die Speisung immer wieder Ein- und
Ausschalte, funktioniert der Code etwa jedes 20mal durchschnittlich.
Also vermute ich langsam, das der Pic wirklich nicht mehr richtig
zurückgesetzt wird. Also müsste es tatsächlich etwas mit dem MCLR zu tun
haben. Da es aber wie schon gesagt mit NOMCLR und MCLR fuses nicht
funktioniert. Weis ich langsam nicht mehr weiter...
Hat irgend jemand vielleicht noch eine Idee was ich gegen dieses Problem
unternehmen könnte?
Gruss Lukas
Lukas Lieb schrieb:> Darin geht es hauptsächlich, dass wenn man den Pic vollständig löst,> dass danach das OSCCAL Value für die interne Oscillator Konifiguration> mit gelöst wird. Und wie man es manuel wieder hinzufügt.
Jo wen der Programmer das nicht berücksichtigt wir das auch gebügelt :)
Macht aber nich wirklich was, nur der interne OSC is halt nicht mehr
kalibriert (ungenauer). Laufen tut er aber trotzdem.
Lukas Lieb schrieb:> Da es aber wie schon gesagt mit NOMCLR und MCLR fuses nicht> funktioniert.
Hast Du eigentlich beides mal die Warnmeldung ?
Ja die Warnmeldung kommt beides mal... Das ist ja das komische. Ich
meine einmal müsste doch der interne MCLR ausgeschalten sein und einmal
nicht oder?
Also das Programm habe ich von der Seite, die ich oben gepostet habe
übernommen und da es bei anderen läuft, müsste es das eigentlich bei
micht aucht tun... Ausserdem habe ich, bevor ich diesen Post geschrieben
habe ausprobiert, ob es mit set_tris funktioniert.
Im Anhang mal ein Test für deinen PIC.
RC4 sollte im Sekundentakt blinken, bei mir tut er das auch.
MCLR ist disabled, gebrannt mit Sprut Brenner 8.
Holger
ist das nicht so, dass wenn man den Reset einmal auf intern gestellt
hat, dass es dann nicht mehr rückgängig zu machen ist mit diesem
Programmer? Wie bei den Atmels auch, wenn man mit dem Programmer den
Reset abstellt, dann braucht man ein STK500 oä für die reaktivierung...
JJ
Jens schrieb:> ist das nicht so, dass wenn man den Reset einmal auf intern gestellt> hat, dass es dann nicht mehr rückgängig zu machen ist
Nö, noch nie was von so nem Blödsinn gehört. So was würden die doch nie
verkaufen, so wie andre Hersteller ;)
(ka obs da Ausnahmen gibt, werde mir wenn ich zeit habe mal die Errata
angugen)
Jens schrieb:> ist das nicht so, dass wenn man den Reset einmal auf intern gestellt> hat, dass es dann nicht mehr rückgängig zu machen ist mit diesem> Programmer? Wie bei den Atmels auch, wenn man mit dem Programmer den> Reset abstellt, dann braucht man ein STK500 oä für die reaktivierung...
Bei den PIC16 ist HV-Programmierung Standard. Du kannst Dich nicht
aussperren.
fchk
So ich habe jetzt mal gedacht, vielleicht stimmt ja was mit dem
ICD3-Debugger nicht. Also habe ich mal den PICSTART Plus genommen und
dein (Holger's) Programm auf dem Pic geladen.
Zu Erste einmal ging nichts. (bzw. wie vorhin etwa jedes 20x hat es
funktioniert.)
Danach dachte ich mir vielleicht funktioniert es ja mit einem neuen Pic.
Und es hat funktioniert! Auch das Programm von mir ging jetzt ohne
Probleme...
Da dies jetzt funktioniert nehme ich an, dass mein ICD3 irdend einen
Defekt hat, der das MCLR vom Pic zerstört.
Da ich den Pic jetzt endlich programmieren kann, werde ich mich mal an
die Programmierarbeit machen :) und melde mich wieder, wenn es weitere
Probleme geben sollte.
Ich danke euch allen für die Unterstützung.
Gruss Lukas