www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Konfiguration PIC 18F2550


Autor: PicNeuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
/** I N C L U D E S **********************************************************/
#include "p18f2550.h"
#include "delays.h"                        // für die Warteschleife
 

/** Configuration ********************************************************/
#pragma config FOSC = HS   //CPU=20 MHz
#pragma config PWRT = ON
#pragma config BOR = OFF
#pragma config WDT = OFF  //Watchdog Timer
#pragma config LVP = OFF  //Low Voltage ICSP
#pragma config PBADEN = OFF
#pragma config VREGEN = OFF
#pragma config PLLDIV = 5
#pragma config CPUDIV = OSC4_PLL6
#pragma config USBDIV = 2
#pragma config MCLRE = ON

 

/** D E C L A R A T I O N S **************************************************/
#pragma code

void main(void)
{

  TRISBbits.TRISB0 = 0;
  TRISBbits.TRISB1 = 0;
  TRISBbits.TRISB2 = 0;
  TRISBbits.TRISB3 = 0;
  TRISBbits.TRISB4 = 0;
  TRISBbits.TRISB5 = 0;
  TRISBbits.TRISB6 = 0;
  TRISBbits.TRISB7 = 0;

  PORTBbits.RB0 = 1;
  PORTBbits.RB1 = 0;
  PORTBbits.RB2 = 1;
  PORTBbits.RB3 = 0;



  LATBbits.LATB4 = 1;
  LATBbits.LATB5 = 0;
  LATBbits.LATB6 = 1;
  LATBbits.LATB7 = 0; 


  while(1)
  {
    int a = 23;
  }

} //end main


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

MfG

Pascal

Autor: Timo P. (latissimo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du nen ganzen Port setzen willst, warum schreibst du dann nicht 
sowas:
(mal von nem 8Bit ausgegangen)
TRISB = 0;
PORTB = 0xFF;
// *** Pause ***
PORTB = 0xF0;
// *** Pause ***
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!

Autor: PicNeuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Timo P. (latissimo)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: PicNeuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>2x VSS => über 220nF an Masse

Vss gehört direkt an Masse.

Autor: Yob (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Timo P. (latissimo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mach mal nen screenshot vom schaltplan bitte, dann kann man dir besser 
helfen....

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.