PIC 16F877A - Keine Programmabarbeitung / ICSP-Programmierung nur wenn PGM auf LOW

OP Persönliche Seite #1126087
Lesenswert?

Hallo zusammen,

ich habe ein kleines Problem mit einer Platine die ich entwickelt habe.

Hier das Layout:
http://img523.imageshack.us/my.php?image=boardsf7.png

und hier der Schaltplan (Teil-Ausschnitt):
http://img403.imageshack.us/my.php?image=circuitms0.png

Das Problem ist folgendes:

Ich habe ein einfaches Programm zum Testen per ICSP in den PIC gebrannt.
Das funktionierte nur wenn ich PGM (RB3) mit einem Draht auf GND gelegt 
habe. Das ist das eine Problem - vielleicht hat dazu jemand auch eine 
Antwort.

Das viel größere Problem ist, dass der PIC das Programm nicht 
abarbeitet.
Das Programm macht nicht mehr als PORTB von High auf Low und umgekehrt 
zu wechseln und damit die 2 LEDs D4 und D5 zum blinken zu bringen.
Leider passiert rein GAR nichts.
Es scheint als würde der PIC den Quarz den ich verwende (16MHz) nicht 
"akzeptieren".

Hier das zugehörige Programm:
1
#include <pic.h>
2
#define PIC_CLK 16000000
3
#include "delay/delay.h"
4

5
__CONFIG (HS & BORDIS & PWRTEN & WDTDIS & UNPROTECT & DEBUGDIS & LVPDIS);
6

7
void main() {
8
  TRISB = 0x00;
9
  for(;;) {
10
    PORTB = 0x00;
11
    DelayMs(500);
12
    PORTB = 0xFF;
13
    DelayMs(500);
14
  }
15
}

Wenn ich den Quarz am Oszilloskop ansehe, dann schwingt der schön mit 16 
MHz... Eigenartig.

Bin um jeden Tipp dankbar!
Gast #1126106
Lesenswert?

noh,
ähm ich hätte die Vermutung dass es sich um einen Analog Port handelt, 
dieser muss ersteinmal auf Digital umgestellt werden ADCON Register 
glaub ich. Ansonsten alle Spannungen kontrollieren MCLR un co.
Gast #1126124
Lesenswert?

So hier hab ich mal ne Ini in assembler für den Pic bei mir funktioniert 
sie:

__CONFIG   _PWRTE_ON  & _HS_OSC & _WDT_OFF & _BODEN_OFF & _LVP_OFF & 
_DEBUG_OFF



movlw   0x00      ; Interupt disable
  movwf   INTCON

Und vorsichtshalber kannst du denn auch nocheinmal das INTCON Register 
nullen, dann bist du auf der sicheren Seite!!!!!!!!!!

Also meiner läuft mit der Initialisierung wunderbar, aber wie gesagt ist 
asm!!!!!!!!^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Gast #1126128
Lesenswert?

Das ist Normal, da du den LVP Modus nicht abgeschalten hast.
Und um den abzuschalten, mußt du in den HVP gehen. Dazu muß aber
PGM auf low sein, sonst ist immer der LVP aktiv, und damit lässt sich
das Konfig-Register nicht umprogrammieren.
Gast #1126135
Lesenswert?

Schau mal auf sprut.de der hat es mit Pics gut drauf. Dort ist auch das 
von dir beschriebene Problem verzeichnet, mach mittels HVP das Bit für 
die Low Voltage Programmierung weg und du hast ruhe. Das ganze ist unter 
"Fehlern/Fussangeln usw" beschrieben da soweit ich weiß jeder da mal 
reintappt... :)
OP Persönliche Seite #1126271
Lesenswert?

Hallo...
danke für die Antworten. Ich habe jetzt PGM/RB3 auf GND gelegt. Jetzt 
funktioniert das Programmieren im HVP wunderbar!

Leider läuft das Programm immer noch nicht.

Ich habe es mal gekürzt und nun setze ich nur PORTB komplett auf High. 
Leider geht das trotzdem nicht.
1
#include <pic.h>
2
#define PIC_CLK 16000000
3
#include "delay/delay.h"
4

5
__CONFIG (HS & BORDIS & PWRTEN & WDTDIS & UNPROTECT & DEBUGDIS & LVPDIS);
6

7
void main() {
8
  TRISB = 0x00;
9
  INTCON = 0x00;
10
  PORTB = 0xFF;
11
}

Das muss doch gehen! Leider sagt bei mir der komplette PortB nichts!

Noch eine Idee?

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