PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : HI-TECH PICC-18 Config bei 18F6520



pointhi
28.01.2012, 14:50
Hy, ich proggge gerade an meinem neuesten selbstgemachten board und würde wie bei den früheren projekten die Config im C-Programmn setzen. Das problem ist nur dass im gegensatz zu den 16Fxxx die 18Fxxx reihe sehr viele einstellungsmöglichkeiten haben. Bei manchen weiß ich nicht mal was sie genau tun.

Beim PICC-18 werden die config nach dem was ich gelesen habe so eingestellt:



__CONFIG(1,OSC_HSPLL & FCMEN_OFF & IESO_OFF );
__CONFIG(2,PWRT_ON & BOREN_BOACTIVE & BORV_2);
__CONFIG(3,WDT_OFF);
__CONFIG(4,PBADEN_OFF & LPT1OSC_OFF & MCLRE_OFF);


(Bsp. muss nicht richtig sein, ist das was ich für den 18F2580 mal zusammengeschrieben hatte, aber dan deaktiviert habe.)

Man sieht das nach __CONFIG( eine zahl kommt, und das ist genau das problem bei mir. 1 ist noch klar, Das sollte CONFIG1H sein,
2 könnte CONFIG2L, CONFIG2H oder beide zusammen sein, und so geht es bis CONFIG7H weiter. Wenn ich irgendwie die config words im HEX überprüfen könnte wäre es kein problem, aber ich hab kein tool dafür gefunden.

habt ihr eine idee was richtig wäre?

mfg. pointhi

PICture
28.01.2012, 15:21
Hallo!

Um ein 18F... PIC richtig zu konfigurieren, sollte man sich entsprechende *.inc Datei anschauen und nur dort enthaltene Direktiven anwenden. ;)

Geprüftes Beispiel:

LIST P=18F252
include "P18F252.inc"
CONFIG OSCS=OFF,OSC=HSPLL, PWRT=ON, BOR=OFF, WDT=OFF, CCP2MUX=OFF, STVR=OFF, LVP=OFF, DEBUG=OFF
CONFIG CP0=OFF,CP1=OFF,CP2=OFF,CP3=OFF,CPB=OFF,CPD=OFF,WR T0=OFF,WRT1=OFF,WRT2=OFF,WRT3=OFF
CONFIG WRTB=OFF,WRTC=OFF,WRTD=OFF,EBTR0=OFF,EBTR1=OFF,EBT R2=OFF,EBTR3=OFF,EBTRB=OFF

pointhi
28.01.2012, 15:49
Danke, das ist aber assembler und ich habs gerade nicht wirklich zum laufen gebracht, auserdem würde ich gerne die enthaltene __CONFIG anweisung nutzen. Die dazugehörigen direktiven lese ich immer aus den entsprechendem .h File des PICs heraus.

Beispiel was für die config in der include steht (nur ein bruchteil davon)


// Config Register: CONFIG1H
// Oscillator Selection bits
// RC oscillator w/ OSC2 configured as RA6
#define OSC_RCIO 0xFFFF
// HS oscillator with PLL enabled; clock frequency = (4 x FOSC)
#define OSC_HSPLL 0xFEFF
// EC oscillator w/ OSC2 configured as RA6
#define OSC_ECIO 0xFDFF
// EC oscillator w/ OSC2 configured as divide-by-4 clock output
#define OSC_EC 0xFCFF
// RC oscillator w/ OSC2 configured as divide-by-4 clock output
#define OSC_RC 0xFBFF
// HS oscillator
#define OSC_HS 0xFAFF
// XT oscillator
#define OSC_XT 0xF9FF
// LP oscillator
#define OSC_LP 0xF8FF
// Oscillator System Clock Switch Enable bit
// Oscillator system clock switch option is disabled (main oscillator is source)
#define OSCS_OFF 0xFFFF
// Timer1 Oscillator system clock switch option is enabled (oscillator switching is enabled)
#define OSCS_ON 0xDFFF


// Config Register: CONFIG2L
// Power-up Timer Enable bit
// PWRT disabled
#define PWRT_OFF 0xFFFF
// PWRT enabled
#define PWRT_ON 0xFFFE
// Brown-out Reset Enable bit
// Brown-out Reset enabled
#define BOR_ON 0xFFFF
// Brown-out Reset disabled
#define BOR_OFF 0xFFFD
// Brown-out Reset Voltage bits
// VBOR set to 2.5V
#define BORV_25 0xFFFF
// VBOR set to 2.7V
#define BORV_27 0xFFFB
// VBOR set to 4.2V
#define BORV_42 0xFFF7
// VBOR set to 4.5V
#define BORV_45 0xFFF3

EDIT:

mein Lehrer hat mir den link geschickt: http://ww1.microchip.com/downloads/en/DeviceDoc/PIC Config bit Format_Syntax_AndDefinitions.pdf
nach dem was dort als example steht und nach abgleich mit meinen includefiles muss ich z.b. CONFIG2L und CONFIG2H zusammen in ein __CONFIG schreiben. Leider sind die include-befehle beim beispiel schon veraltet, die meisten direktiven heißen jetzt anders. Aber mal probieren :)

mfg. pointhi

PICture
28.01.2012, 16:10
Leider sind die include-befehle beim beispiel schon veraltet, die meisten direktiven heißen jetzt anders. Aber mal probieren :)

Die Direktiven funktionieren bei mir immernoch anwandfrei, dein PIC braucht sie aber aus aktueller für ihn *.inc Datei. ;)

pointhi
28.01.2012, 16:11
config sollte passen, hier das was ich geschrieben habe:



__CONFIG(1, OSC_HSPLL & OSCS_OFF );
__CONFIG(2, PWRT_ON & BOR_ON & BORV_42 & WDT_OFF);
__CONFIG(3, CCP2MUX_ON);
__CONFIG(4, STVR_OFF & LVP_OFF & DEBUG_OFF );
__CONFIG(5, CP0_OFF & CP1_OFF & CP2_OFF & CP3_OFF & CPB_OFF & CPD_OFF);
__CONFIG(6, WRT0_OFF & WRT1_OFF & WRT2_OFF & WRT3_OFF & WRTC_OFF & WRTB_OFF & WRTD_OFF );
__CONFIG(7, EBTR0_OFF & EBTR1_OFF & EBTR2_OFF & EBTR3_OFF & EBTRB_OFF);

Unklare directiven, bzw. deren benutzung:

OSCS_OFF Oscillator System Clock Switch Enable bit Kann ich da manuell umschalten oder ist das eine failsaife funktion wenn ich sie aktiviert habe?

STVR_OFF Stack Full/Underflow Reset Enable bit Reset verstehe ich, aber wann Reset der controller, bzw. vor was schützt dieses bit?

Der Brenner brennt alles korrekt rein, aber es kommen 3 ERRORS nach dem brennen:

Der Output von UsBurn V1.11 a5



-- HEX-file re-loaded
-- HEX-file contains Config-data

Erase PIC -finished
Start to program FLASH - ok
Start to program ID - ok
Start write Configuration## 3 error(s)

Auf der seite von sprut steht das die errors normal sind wenn keine config files im hex enthalten sind, daher hab ich mir vorher nicht gewundert, aber jetzt frage ich mir was das problem sein könnte.

mfg. pointhi

PICture
28.01.2012, 16:17
Sorry, aber dein PIC kenne ich gar nicht und kann nicht weiterhelfen. ;)

pointhi
28.01.2012, 18:25
hat wohl den grund dass es den nur im nervigen SMD gehäuse gibt, hatte mit ihm schon probleme wegen dem Layout :) 64 Pin auf TQFP :). Aber mit der neuen Platine Passts.

NACHTRAG:

Achso, das meinst du :), ist ein 18F6520, steht aber auch im Titel