Forum: Mikrocontroller und Digitale Elektronik Pic 18f4525 läuft nicht


von Kevin (Gast)


Lesenswert?

Hi Leute,

Ich habe im moment die Aufgabe ein Programm für einen PIC 18f4525 zu 
schreiben. Da ich bisher nur mit AVRs und Arduinos gearbeitet habe ist 
das etwas ungewohnt.

Das Problem was ich im Moment habe ist, dass ich den Controller zwar 
angeblich flashen kann (mit MPLABX und einem ICD3), der aber scheinbar 
garnichts macht. Zum Testen habe ich mal ein Minimalprogramm geschrieben 
was nur einen Pin toggeln soll.

Gibt es da irgendeine Falle an die ich nicht gedacht haben könnte, ist 
an meinem Code irgendwas falsch, oder gibt es noch etwas spezielles auf 
das ich achten muss?
Spannungsversorgung habe ich bereits kontrolliert. Umstellung von 
externen Quarz auf den internen habe ich auch schon versucht. Auch mit 
den anderen Portregistern hatte ich kein Glück.
1
/*
2
 * Includes
3
 */
4
#include <xc.h>
5
#include <pic18f4525.h>
6
#include <stdint.h>
7
/*
8
 * Defines
9
 */
10
#define _XTAL_FREQ 10000000 //Define uc frequency for _delay functions (10MHz)
11
//#pragma config OSC = HS         // Oscillator Selection bits (HS oscillator)
12
#pragma config OSC = INTIO67    // Oscillator Selection bits (Internal oscillator block, port function on RA6 and RA7)
13
14
#pragma config WDT = OFF         // Watchdog Timer Enable bit
15
#pragma config PWRT = OFF
16
#pragma config BOREN = OFF
17
18
void main(void) {
19
       LATCbits.LATC6 = 0x0;
20
       TRISCbits.TRISC6 = 0x0;  
21
    
22
       while (1) {
23
           LATCbits.LATC6 = ~LATCbits.LATC6 ;
24
           __delay_ms(1000);        
25
       } 
26
    return;
27
}

Vermutlich ist es irgend ein kleiner, dummer Fehler. Aber ich finde ihn 
gerade nicht....

von Stefan (Gast)


Lesenswert?

Schaltplan ?

von Thomas (Gast)


Lesenswert?

Spannung am Reset Pin?

von Toxic (Gast)


Lesenswert?

1.
Zeile "#include <pic18f4525.h>" ist normalerweise nicht notwendig - 
dafuer ist xc.h alleine zustaendig

2.Checke ob LVP(Low Voltage Programming) = "on" oder "off" sein muss

von Rest (Gast)


Lesenswert?

Hast du mal den Programmer abgesteckt bzw. mit Programmer dran probiert? 
Der Klassiker, wenn man am Reset-Eingang nichts oder was falsches tut. 
Wie ist die Spannung am Reset-Eingang? Externer Pullup? Schaltplan?

von Kevin (Gast)


Angehängte Dateien:

Lesenswert?

Sorry, hatte vergessen den mit dran zu hängen

von HyperMario (Gast)


Lesenswert?

Kevin schrieb:
> der aber scheinbar garnichts macht.

Klassisch ist das irgendwelche Komparatoren und A/D Wandler Ports nicht 
auf digital I/O gesetzt werden.

Dann würde ich noch prüfen ob das Programm wirklich drin ist (auslesen 
Checksumme vergleichen) und ob die "Fuse Bits" richtig gesetzt wurden.

Ob er läuft kann man auch an der Stromaufnahme (Reset/kein Reset) sehen.

von Erich (Gast)


Lesenswert?

Meiner Meinung nach ist an MCLR der C35 viel zu gross.
Setze den auf 1 nF, evtl. auch den R39 auf 1k vergrössern.

Gruss

von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo
Hier ein Testprogramm für deinen PIC.
LED an RC6 sollte blinken.
Wenn nicht dann stimmt was nicht
mit deiner Hardware.

von Boris (Gast)


Lesenswert?

ANSELC auf digital umstellen!

von Stefan (Gast)


Lesenswert?

Da gibt es kein ANSEL Register.
DB lesen.

von Teo D. (teoderix)


Lesenswert?

Kevin schrieb:
> LATCbits.LATC6 = ~LATCbits.LATC6 ;

LATCbits.LATC6 = !LATCbits.LATC6 ;

Frag mich nich warum, "~" hat mir aber schon mal Probleme gemacht. Vor 
Jahren mal(XC8 ?.??).

von Volker S. (vloki)


Lesenswert?

Kevin schrieb:
> Das Problem was ich im Moment habe ist, dass ich den Controller zwar
> angeblich flashen kann (mit MPLABX und einem ICD3), der aber scheinbar
> garnichts macht.

Bleib doch einfach im Debug Modus, bis dein Programm fertig entwickelt 
ist. Da kannst du immer schauen, ob der Controller überhaupt läuft und 
was genau passiert!

Bei den Congfig Bits am besten immer gleich alle definieren. Geht auch 
ganz einfach: 
http://microchipdeveloper.com/mplabx:view-and-set-configuration-bits

Nettes PIC Einsteiger Webinar 
https://www.youtube.com/watch?v=33kgfbL3Sr0

: Bearbeitet durch User
von Kevin (Gast)


Lesenswert?

Stefan schrieb:
> LED an RC6 sollte blinken.

Hi Stefan,
dein Hex file läuft. An der Hardware liegt es also schonmal net.
Könntest du auch mal den Sourcecode posten? Dann kann man das mal 
vergleichen

von Volker S. (vloki)


Angehängte Dateien:

Lesenswert?

Kevin schrieb:
> Könntest du auch mal den Sourcecode posten?

Kann man auch einfach importieren und zumindest den Maschinencode 
anschauen.
(falls Stefan heute nicht mitließt ;-)

Lerne debuggen, ist im Endeffekt viel schneller!

<edit> Sorry, anscheinend habe ich die erste Datei test.txt aus Versehen 
überschrieben. Also nochmal test_code.txt.

: Bearbeitet durch User
von dudley (Gast)


Lesenswert?

wie versorgst du deinen controller währens des flashens, bzw welchen 
programmer nutzt du?

von Stefan (Gast)


Lesenswert?

Benutze einen anderen Compiler.
Aber in C sollte es so aussehen.

void main() {

  TRISC6_bit = 0;

  do {
    LATC6_bit = 0x00;

    Delay_ms(1000);

    LATC6_bit = 0x01;

    Delay_ms(1000);

  } while(1);
}

von jemand (Gast)


Lesenswert?

Hau halt mal einen Breakpoint rein, und kuck, ob er ins main loop geht.
Du hast einen Debugger - nutze ihn...

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.