PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Initialisierung des internen Oszillators des 12F675 mit cc5x



Mr.S
11.06.2008, 12:55
Hallo,
ich möchte gerne für eine minimal Schaltung, den internen Oszillator des
PIC 12F675 verwenden, welchen ich in C mit cc5x programmiert habe.
Leider bekomme ich es nicht hin diesen zu initialisieren. Kann mir dazu
jemand einen Tipp geben. Wie muss die #pragma config aussehen und was
muss ich sonst noch beachten?

Habe zur Zeit nur folgende drin stehen:
// WD off, Power up Timer on, IntRC Oscillator, CP off
#pragma config |=0xFEAz

Danke und Gruß
Basti

PIC_Tick
12.06.2008, 06:53
Moin
ich gehe mal davon aus das du PIC Controller kennst.

#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#use delay(clock=20000000)

Bei use delay deine Clock frequenz eingeben. Dann kannst du über setup_oscillator( OSC_2MHZ ); die Frequenz des Oszilator bestimmen. Welche Frequenze der Interne kann erfährst du im Datenblatt.

Mr.S
12.06.2008, 07:23
Moin
ich gehe mal davon aus das du PIC Controller kennst.

#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#use delay(clock=20000000)

Bei use delay deine Clock frequenz eingeben. Dann kannst du über setup_oscillator( OSC_2MHZ ); die Frequenz des Oszilator bestimmen. Welche Frequenze der Interne kann erfährst du im Datenblatt.

Hi,
danke für deine Antwort, leider hat sie mir nur bedinngt weitergeholfen da der Syntax wohl für einen anderen Compiler als cc5x ist und ich bei cc5x nur eine Fehlermeldung bekomme:


(The source line starting with '#' contains invalid syntax or context
dependent syntax)

Aber ggf. habe ich auch was anderes falsch gemacht. Hier mal mein Quellcode:




//Display Ansteuerung für 19"-Rahmen\\


#include "prozess.h" // Der verwendete Prozessor
#include "C:\cc5x\INT16CXX.H" //Zuständig für das Speichern der Register bei einem Interrupt
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#use delay(clock=40000000)



void pause(uns16 ms) // Unterprogramm zum Abwarten einer
{ // angegebenen Anzahl von Millisekunden
while(ms) // Schleife verlassen, wenn ms=0 ist
{
OPTION = 2; // Vorteiler auf 8 einstellen
TMR0 = 131; // 125 * 8 = 1000 (= 1 ms)
while (TMR0); // Abwarten einer Millisekunde
ms--; // "ms" mit jeder Millisekunde erniedrigen
}
}

void aktivieren()
{
GPIO.4=1;
GPIO.1=1;
pause(1000);
pause(1000);
pause(1000);
GPIO.4=0;
}

void deaktivieren()
{
GPIO.1=0;
pause(1000);
pause(1000);
pause(1000);
}


void main(void) // Hier beginnt das Hauptprogramm
{
CMCON=0x07; //alles digitale IO-Pins
ANSEL=0x00; //alles digitale IO-Pins
WPU=0; //Pullups off
setup_oscillator( OSC_2MHZ );

TRISIO.0=1; // Eingang BUS
TRISIO.1=0; // Ausgang zum Schalten der 4066
TRISIO.2=1; // Eingang Taster mit Pulldown
TRISIO.3=0; // Ausgang Signal für BUS
TRISIO.4=0; // Unbenutzt
TRISIO.5=0; // Unbenutzt


Start:

if (GPIO.2 == 1) {
aktivieren();
}

if (GPIO.0 == 1) {
deaktivieren();
}

goto Start;

}

PIC_Tick
12.06.2008, 08:37
setze das Fuse mal dort wo auch die anderen Fuses gesetzt werden. Ich denke in der Prozess.H wird das gemacht. Und das use delay kommt unter die Fuses.

Der Code ist für den CCS Compiler erstellt.