Forum: Mikrocontroller und Digitale Elektronik Pic18f1320 fährt nicht hoch


von Thomas (Gast)


Lesenswert?

habe ein programm geschrieben in c (mplab compiler) aber pic fährt nicht 
hoch passiert gar nichts, hier sind die einstellungen:
#include <p18f1320.h>
#pragma config OSC=HS,PWRT=ON,WDT=OFF,BOR=OFF,LVP=OFF
woran kann es liegen

danke

von Thomas (Gast)


Lesenswert?

hier ist das restliches programm:
#define HIGH_uint(x) (unsigned char)  ((x)>>8)  //liefert High-Teil
#define LOW_uint(x)  (unsigned char)  (x)       //liefert Low-Teil
#pragma code
volatile long int p1=31622;
volatile long int p;
static long double r=5E-10;
volatile long int l;
volatile long int k,j,i,s;
short int f;
char z;
unsigned long int ps=500;

void hiserv(void);             // Prototyp Serviceprogramm
#pragma code einsprung=0x08    // Einsprungadresse
void einsprung (void)          // Hilfsfunktion für Sprung
{
 _asm GOTO hiserv _endasm      // Assembler: Sprung nach Servicefunktion
}
#pragma code             // System Codebereich
#pragma interrupt hiserv       // Kennwort interrupt veranlasst
void hiserv(void)              // Rücksprung aus Interrupt!!!
{
 p=p1*(1-r*p1*p1);
 p1=(long int)p;
 l=(long int)p1;
 k=(long int)(l/65535);
 s=(long int)(l%65535);
 if(z==0){LATB=0x05;}
 if(z==1){LATB=0x06;}
 if(z==2){LATB=0x0A;}
 if(z==3){LATB=0x09;}
 f=65535-s;
 if(z<4){z=z+1;}
 if(z==4){z=0;}
 TMR0H=HIGH_uint(f);
 TMR0L=LOW_uint(f);
 INTCONbits.TMR0IF = 0;      // Timer0 Anzeigeflag löschen
}
#pragma code                     // System Codebereich
void main(void)
{
 TRISB=0b11110000;
 ADCON1 = 0x7f;
 LATB=0x00;
 f=65535;
 TMR0H=HIGH_uint(f);
 TMR0L=LOW_uint(f);
 RCONbits.IPEN = 0;            // Interruptsteuerung nicht priorisiert
 INTCONbits.TMR0IF = 0;        // Timer0 Anzeigeflag löschen
 INTCONbits.TMR0IE = 1;        // Timer0 Interrupt freigeben
 INTCONbits.GIE = 1;           // Interrupts global freigeben

 while(1){
 T0CON = 0b10000010;        // Timer0 ein, 16bit,intern,x,Vorteiler,1:8
 while(INTCONbits.TMR0IF!=1);
  }
}

von Gerhard (Gast)


Lesenswert?

Hi

woran siehst du, dass der PIC nicht hochfährt ?

Als Oscillator hast du HS eingestellt, also einen schnellen Quarz. Hast 
du schon mal mit dem Oszi gemessen, ob der auch anschwingt ?

Gerhard

von Thomas (Gast)


Lesenswert?

ok werde gleich machen (mit dem oszi checken) die quarzfrequenz ist 
32MHZ,  danke für die antwort

von Tony R. (tony)


Lesenswert?

MCLR-Beschaltung und solche Kleinigkeiten prüfen. Zur Not mal mit dem 
internen Oszillator ausprobieren. Sicherstellen, das das Config-Word 
auch beim programmieren korrekt ist, falls du kein PicKit o.Ä. hast...

von Thomas (Gast)


Lesenswert?

na ja die portb ausgänge sind ganze zeit auf low, ich habe das 
compileirte programm mit pic18 simulator ide laufen lassen. in der 
simulation kann man sehen, dass die interrups werden ausgelöst und portb 
tut nacheinander die bitkombinationen ausgeben. sobald ich den pic in 
schaltung stecke und mit strom versorge passiert gar nichts, hmm...

von Thomas (Gast)


Lesenswert?

also quarz arbeitet, habe gerade probiert, die frequenz stimmt, MCLR ist 
auf Hi und ich komme einfach nicht weiter!!!

von Michael H. (morph1)


Lesenswert?

najo

hast du es tatsächlich programmiert, oder vielleicht nur als 
debug-anwendung raufgeladen?

von Maik W. (werner01)


Lesenswert?

Servus,


also kondensator am pic an den Ub-Versorgungspinns? 
Quarzlastkondensatoren
wie im Datenblatt? und mit internen Oszie ohne PLL tuts? der hat keinen 
erweiterten Befehlssatz und die Debugsache ist im Config auch aus?



chek das alles mal ab!





servus

von Thorsten (Gast)


Lesenswert?

Die Quarz Frequenz ist zu hoch! Wenn du 32Mhz brauchst dann einen 8Mhz 
nehmen und beim PIC H4 einstellen.

von Gerhard (Gast)


Lesenswert?

Hi

woran siehst du, dass der PIC nicht hochfährt ?

Ich wiederhole nochmal meine Frage. Funktioniert dein Prog nicht, oder 
läuft der PIC nicht ? Wenn der Quarz tut, und der PIC nicht im reset 
hängt kann er eignetlich nur noch laufen.

In solchen Situationen bau ich einen "Toggle" ein. ich mach ne Schleife 
ins Prog, die permanent und ausschliesslich abgearbeite wird und in der 
der irgend ein Ausgang abwechselnd high und low geschaltet wird. Das 
kontroll ich mit dem Oszi. Wenn das tut, kanns nur noch andeinem prog 
liegen...

Gerhard

von Master S. (snowman)


Lesenswert?

Thorsten hat recht: max. erlaubte quarzfrequenz ist 20MHz
wenn du 32MHz brauchts -> 8MHz-quarz und HSPLL

von Thomas (Gast)


Lesenswert?

ok werde mit hspll ausprobieren

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.