Forum: Mikrocontroller und Digitale Elektronik Konfiguration PIC 18F2550


von PicNeuling (Gast)


Lesenswert?

Hallo an alle.

Ich komme bei meinem PIC- Projekt einfahc nicht mehr weiter. Und zwar 
fährt der PIC wahrscheinlich nicht richtig hoch. Da ich am Quarz keinen 
Takt messen kann und alle PINS 4,2 V liefern. Egal ob als Ausgang oder 
Eingang definiert.

Hier ist meine Beispielcode. Soll einfach nur den PortB als Ausgang 
setzen und dann je 4 setzen und 4 nichtsetzen.

Als Quarz habe ich einen 20 MHZ mit passenden 15pF- Kondenstaoren.
1
/** I N C L U D E S **********************************************************/
2
#include "p18f2550.h"
3
#include "delays.h"                        // für die Warteschleife
4
 
5
6
/** Configuration ********************************************************/
7
#pragma config FOSC = HS   //CPU=20 MHz
8
#pragma config PWRT = ON
9
#pragma config BOR = OFF
10
#pragma config WDT = OFF  //Watchdog Timer
11
#pragma config LVP = OFF  //Low Voltage ICSP
12
#pragma config PBADEN = OFF
13
#pragma config VREGEN = OFF
14
#pragma config PLLDIV = 5
15
#pragma config CPUDIV = OSC4_PLL6
16
#pragma config USBDIV = 2
17
#pragma config MCLRE = ON
18
19
 
20
21
/** D E C L A R A T I O N S **************************************************/
22
#pragma code
23
24
void main(void)
25
{
26
27
  TRISBbits.TRISB0 = 0;
28
  TRISBbits.TRISB1 = 0;
29
  TRISBbits.TRISB2 = 0;
30
  TRISBbits.TRISB3 = 0;
31
  TRISBbits.TRISB4 = 0;
32
  TRISBbits.TRISB5 = 0;
33
  TRISBbits.TRISB6 = 0;
34
  TRISBbits.TRISB7 = 0;
35
36
  PORTBbits.RB0 = 1;
37
  PORTBbits.RB1 = 0;
38
  PORTBbits.RB2 = 1;
39
  PORTBbits.RB3 = 0;
40
41
42
43
  LATBbits.LATB4 = 1;
44
  LATBbits.LATB5 = 0;
45
  LATBbits.LATB6 = 1;
46
  LATBbits.LATB7 = 0; 
47
48
49
  while(1)
50
  {
51
    int a = 23;
52
  }
53
54
} //end main


Reicht diese Config? Ich hab sie mir aus dem Handbuch + diversen 
Internetbeispielen zusammengeschrieben?
Vielen vielen Dank fpr jede Hilfe

MfG

Pascal

von Timo P. (latissimo)


Lesenswert?

Wenn du nen ganzen Port setzen willst, warum schreibst du dann nicht 
sowas:
(mal von nem 8Bit ausgegangen)
1
TRISB = 0;
2
PORTB = 0xFF;
3
// *** Pause ***
4
PORTB = 0xF0;
5
// *** Pause ***
6
PORTB = 0x0F;

Welche Entwicklungsumgebung nutzt du? In manchen musst du ein 
Configurationsword per Hakensetzen unter Einstellungen erstellen.

interessant wird für dich die Seite http://www.sprut.de sein!

von PicNeuling (Gast)


Lesenswert?

Sprut hab ich das Tutorial durchgemacht.

Ich benutze wie dort MPLAB mit cem C18 Compiler und zum Brennen gas 
Galep32 für das Galep4 Programmiergerät.


Ich wollte erstmal allesbitweise machen um solche Fehlerquellen schon 
mal auszuschließen.
Könntest du mir was zur Konfiguration sagen? Ob die so stimmt!?

MfG

Pascal

von Timo P. (latissimo)


Lesenswert?

CONFIG    OSC = HS     ; HS 20 MHz
    CONFIG    PWRT = ON    ; power up timer on
    CONFIG    BOR = OFF    ; brown out detect off
    CONFIG    WDT = OFF    ; watchdog off
    CONFIG    LVP = OFF    ; lvp off

von PicNeuling (Gast)


Lesenswert?

Also ich hab die Schleife optimiert. Und es ist das selbe Spiel: Auf 
allen PINS liegen genau 3,3 V an ( sorry hat ich verwechselt).

Hardwareaufbaue

VDD => direkt an +5,02 V
2x VSS => über 220nF an Masse
OSC1 OSCS2 => 20 MHz je über 15pF an Masse
MLCR => über 1000k an + 5,02V

Mehr hab ich noch nicht angeschloßen!?

Kann mir irgendjemand sag woran es liegt.

Ich habe mit MPLQB programmiert und meine Linker + 2 Headerdateien 
angehängt und gehe über den Button "Build ALL" zum Umwandeln.

Dann lade ich das entstandene HEx-File (ersten 14 Zeilen beschrieben, 
REST alles FF) in Galep 32, wähle meinen PIC (DIL 18F2550 (Häckchen 
Verwende Bauteiladresse) und brennen es über einen Galep 4 Adapter.
Es brennt und es kommt Program OK, zum Wiederholen Wähle IC1.


Mit dem Multimeter kann ich die +5 an VDD und MCLR messen und jeweisl 
3,6 an den VSS.

Ich weiß wirklich nicht mehr weiter! Vielleicht hat jemand eine Idee.

MfG

Pascal

von holger (Gast)


Lesenswert?

>2x VSS => über 220nF an Masse

Vss gehört direkt an Masse.

von Yob (Gast)


Lesenswert?

DAs klingt nach einem Schaltungsproblem. Verstehe ich das richtig du 
hast an den VSS-Anschlüssen einen Kondensator gegen Masse geschalten?

VSS = Masse -> mit Masse der Gesamtschaltung verbinden

Die 220nF müsstest du zwischen VDD und VSS schalten.

falls ich jetzt etwas falsch verstanden habe messe mal zwischen VDD (+) 
und VSS (-) die Spannung.

-> Falls der PIC nicht anschwingen sollte kannst du auch mal 22pF statt 
15pF einsaetzen, dies soll laut Datenblatt die Stabilität erhöhen und 
bei Problemen helfen. Die 15pF sind nur ein Richtwert, der Anwender (Du) 
musst das selbst ausprobieren.


VG Yob.

von Timo P. (latissimo)


Lesenswert?

mach mal nen screenshot vom schaltplan bitte, dann kann man dir besser 
helfen....

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.