Tom Seiph
12.05.2006, 20:10
Hallo ich bin am Verzweifeln:
Ich habe folgende kleine Schaltung mit dem PIC16F628 aufgebaut:
3,3V SPG-Reg als Versorgung
An RB0-RB3 je ein 1k Widerstand und dann eine LED auf Masse
An RB4-RB7 je einen 4k7 Pullup und einen Schalter auf Masse
So alles was ich (momentan noch) will, ist über die Schalter die LEDS
an und aus zu schalten. Als Oszilator soll der Interne OSC des Pics
verwendet werden.
Hierzu habe ich ein kleines C-Programm (siehe ganz unten) für den
CC5X-Compiler geschrieben mit MPLAB und dem CC5X das HEX-File generiert und dieses dann mit dem PIC Brenner5 Rev 5a von Sprut auf den PIC gebrannt.
(Folgende Configuration: INTRC CLKOUT - Watchdog OFF - Power Up Timer ON - Brown Out Disabled - Master Clear Enabled - Low Voltage Program Disabled - Data EE Read Protect Disabled - Code Protect OFF)
Danach kommt der PIC auf die Schaltung aber irgendwie geht da nix an
und aus.
Ich kann mir nicht erklären warum nicht. Stimmen evtl. die
Einstellungen nicht oder ist ein fehler im Programm?
Es wäre nett wenn Ihr mir weiterhelfen könntet.
Vielen Dank
Tom
Hier noch schnell das Programm:
/* Funktionsprototypen */
void Startup(void);
/*--Globale Variablen---*/
/* Definitionen für die Belegung der IO-Ports */
#pragma bit S1 @ PORTB.7; /* Schalter 1 */
#pragma bit S2 @ PORTB.6; /* Schalter 2 */
#pragma bit S3 @ PORTB.5; /* Schalter 3 */
#pragma bit S4 @ PORTB.4; /* Schalter 4 */
#pragma bit L1 @ PORTB.3; /* LED 1 */
#pragma bit L2 @ PORTB.2; /* LED 2 */
#pragma bit L3 @ PORTB.1; /* LED 3 */
#pragma bit L4 @ PORTB.0; /* LED 4 */
/* Startup Code - Initialisierungen */
void Startup(void)
PORTB = 0b.0000.0000;
TRISB = 0b.1111.0000; /* Pin 4-7 als Eingang (1) Pins 0-3 als
Ausgang (0) */
return;
}
/*===== Hauptprogramm ===== */
void main(void)
{
Startup();
/* Endlosschleife - Main Loop */
for(;;)
{
/* Schalter-Port ist pulled-up -> Wenn der Schalter
betätigt ist, liegt der Port auf 0 = Low */
if (!S1)
L1 = 1;
else if (S1)
L1 = 0;
if (!S2)
L2 = 1;
else if (S2)
L2 = 0;
if (!S3)
L3 = 1;
else if (S3)
L3 = 0;
if (!S4)
L2 = 1;
else if (S4)
L2 = 0;
}
}
Ich habe folgende kleine Schaltung mit dem PIC16F628 aufgebaut:
3,3V SPG-Reg als Versorgung
An RB0-RB3 je ein 1k Widerstand und dann eine LED auf Masse
An RB4-RB7 je einen 4k7 Pullup und einen Schalter auf Masse
So alles was ich (momentan noch) will, ist über die Schalter die LEDS
an und aus zu schalten. Als Oszilator soll der Interne OSC des Pics
verwendet werden.
Hierzu habe ich ein kleines C-Programm (siehe ganz unten) für den
CC5X-Compiler geschrieben mit MPLAB und dem CC5X das HEX-File generiert und dieses dann mit dem PIC Brenner5 Rev 5a von Sprut auf den PIC gebrannt.
(Folgende Configuration: INTRC CLKOUT - Watchdog OFF - Power Up Timer ON - Brown Out Disabled - Master Clear Enabled - Low Voltage Program Disabled - Data EE Read Protect Disabled - Code Protect OFF)
Danach kommt der PIC auf die Schaltung aber irgendwie geht da nix an
und aus.
Ich kann mir nicht erklären warum nicht. Stimmen evtl. die
Einstellungen nicht oder ist ein fehler im Programm?
Es wäre nett wenn Ihr mir weiterhelfen könntet.
Vielen Dank
Tom
Hier noch schnell das Programm:
/* Funktionsprototypen */
void Startup(void);
/*--Globale Variablen---*/
/* Definitionen für die Belegung der IO-Ports */
#pragma bit S1 @ PORTB.7; /* Schalter 1 */
#pragma bit S2 @ PORTB.6; /* Schalter 2 */
#pragma bit S3 @ PORTB.5; /* Schalter 3 */
#pragma bit S4 @ PORTB.4; /* Schalter 4 */
#pragma bit L1 @ PORTB.3; /* LED 1 */
#pragma bit L2 @ PORTB.2; /* LED 2 */
#pragma bit L3 @ PORTB.1; /* LED 3 */
#pragma bit L4 @ PORTB.0; /* LED 4 */
/* Startup Code - Initialisierungen */
void Startup(void)
PORTB = 0b.0000.0000;
TRISB = 0b.1111.0000; /* Pin 4-7 als Eingang (1) Pins 0-3 als
Ausgang (0) */
return;
}
/*===== Hauptprogramm ===== */
void main(void)
{
Startup();
/* Endlosschleife - Main Loop */
for(;;)
{
/* Schalter-Port ist pulled-up -> Wenn der Schalter
betätigt ist, liegt der Port auf 0 = Low */
if (!S1)
L1 = 1;
else if (S1)
L1 = 0;
if (!S2)
L2 = 1;
else if (S2)
L2 = 0;
if (!S3)
L3 = 1;
else if (S3)
L3 = 0;
if (!S4)
L2 = 1;
else if (S4)
L2 = 0;
}
}