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
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); } }
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
ok werde gleich machen (mit dem oszi checken) die quarzfrequenz ist 32MHZ, danke für die antwort
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...
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...
also quarz arbeitet, habe gerade probiert, die frequenz stimmt, MCLR ist auf Hi und ich komme einfach nicht weiter!!!
najo hast du es tatsächlich programmiert, oder vielleicht nur als debug-anwendung raufgeladen?
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
Die Quarz Frequenz ist zu hoch! Wenn du 32Mhz brauchst dann einen 8Mhz nehmen und beim PIC H4 einstellen.
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
Thorsten hat recht: max. erlaubte quarzfrequenz ist 20MHz wenn du 32MHz brauchts -> 8MHz-quarz und HSPLL
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.