Forum: Mikrocontroller und Digitale Elektronik PIC 16F877A - Keine Programmabarbeitung / ICSP-Programmierung nur wenn PGM auf LOW


von Tobias J. (tobiasjohn) Benutzerseite


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!

von joa (Gast)


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.

von joa (Gast)


Lesenswert?

hhmmm hab grad mal das Datenblatt inhaliert hmmmm trifft wohl nicht zu 
mit dem analog Port^^!!!

von joa (Gast)


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!!!!!!!!^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

von ChrisS (Gast)


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.

von Enrico (Gast)


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... :)

von Tobias J. (tobiasjohn) Benutzerseite


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?

von Tobias J. (tobiasjohn) Benutzerseite


Lesenswert?

Kaum zu glauben. Der Quarz war defekt.
Ausgetauscht und schon gings!

Danke trotzdem!

Gruß,
 Tobias

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
Noch kein Account? Hier anmelden.