PIC16F676 Programmierproblem

OP #2747777
Lesenswert?

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:
1
#include <16F676.h>  
2

3
#fuses INTRC_IO, NOWDT, NOPROTECT, BROWNOUT, PUT, NOCPD,MCLR
4
#use delay (clock=4000000)
5

6
#define PTC  PIN_A0
7
#define SF  PIN_A1
8
#define SG  PIN_A2
9
#define SE  PIN_A4
10
#define Pow  PIN_A5
11
#define SA  PIN_C0
12
#define SB  PIN_C1
13
#define SC  PIN_C2
14
#define SD  PIN_C3
15
#define S1  PIN_C4
16
#define S2  PIN_C5
17

18
void main(void){
19
  
20
  SETUP_TIMER_1(T1_DISABLED);      //Timer ausschalten
21
  DISABLE_INTERRUPTS(GLOBAL);      //Interrupts ausschalten
22
  setup_adc(NO_ANALOGS);        //AD-Wandler ausschalten
23
    setup_comparator (NC_NC_NC_NC);    //Comparator-Modul ausschalten
24
  set_tris_a(0x08);          //Port A als Ausgang definieren
25
    set_tris_c(0x00);          //Port C als Ausgang definieren    
26

27
  while(1){
28
    output_high(PIN_A5);
29
    delay_ms(500);
30
    output_low(PIN_A5);
31
    delay_ms(500);
32
  }
33
}

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
Angehängte Dateien:
OP #2749208
Lesenswert?

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
void main()
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
#2749585
Lesenswert?

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 ?
OP #2750407
Lesenswert?

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.
Gast #2750520
Lesenswert?

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
#2750603
Lesenswert?

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
OP #2750683
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren