mikrocontroller.net

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


Autor: Thomas (Gast)
Datum:

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

Autor: Thomas (Gast)
Datum:

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

Autor: Gerhard (Gast)
Datum:

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

Autor: Thomas (Gast)
Datum:

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

Autor: Tajas R. (tony)
Datum:

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

Autor: Thomas (Gast)
Datum:

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

Autor: Thomas (Gast)
Datum:

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

Autor: Michael H. (morph1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
najo

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

Autor: Maik Werner (werner01)
Datum:

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

Autor: Thorsten (Gast)
Datum:

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

Autor: Gerhard (Gast)
Datum:

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

Autor: Master Snowman (snowman)
Datum:

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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok werde mit hspll ausprobieren

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.