Forum: Mikrocontroller und Digitale Elektronik Verzweiflung mit Willkür bei Pic Testplatine?


von Maruu ;. (maruu)


Angehängte Dateien:

Lesenswert?

Hallo,

vor ca. 2 Jahren hab ich mich schon intensiv mit PIC´s beschäftigt.
Damals hab ich mir aus ne Lochrasterplatine eine Testplatine für einen
PIC 16F876 zusammengelötet. Naja damals gabs Probleme und ich dachte es
liegt an meinen Lötkünsten da es nicht besonders aussah.
So nun muss ich im Rahmen eines Projektes wieder einen PIC16F876
programmieren. Dieses mal hab ich die Möglichkeit gehabt eine
Testplatine zu ätzen. Den Schaltplan hab ich mal angehängt. Oben das
ist der Reset Taster und sonst sind einfach die Ports des PICs auf
Sockelleisten geführt. Außerdem ist noch ein kleiner Spannungsregler
drauf und eine ICSP Schnittstelle sowie eine I2C Schnittstelle.
Als Taktgeber dient ein Quarz mit 4MHZ mit zusätzlich jeweils einem
33pf Kondensator.

So nun hab ich im cc5x ein einfachens Programm geschrieben:

#include <C:\Programme\bknd\CC5X\16F876A.h>// Prozessor-Typ
definieren

#pragma config |= 0b.1111.1111.0010


void Delay1ms()
{
OPTION = 2;// Vorteiler auf 8 einstellen
TMR0 = 131;// 125 * 8 = 1000 (= 1 ms)
while (TMR0);// Schleife, solange bis TMR0=0 wird
}


void main(void)// Start des Hauptprogramms
{
TRISB = 0b.0000.0000;// Pins RB0...RB7 -Ausgänge

char Wert;
int u=0;

Sprungmarke:
u=200;
Wert=0b.1010.1010;
PORTB=Wert;
while(u!=0)
  {
    Delay1ms();
  u=u-1;
  }
Wert=0b.0101.0101;
PORTB=Wert;
u=200;
while(u!=0)
  {
    Delay1ms();
  u=u-1;
  }
goto Sprungmarke;// Alles wiederholen
}

Ich hab an den PortB LEDs mit 1K Vorwiederständen gehängt. Das Programm
soll nun abwechselnt die einen 4 LEDS für 200ms leuchten lassen und dann
die anderen. Aber was der PIC macht ist mir suspekt. Er wechselt zwar
schon die 4 Lämpchen aber nicht nach 200ms sonder willkürlich zwischen
ca. 300ms-1s udn irgendwann bleibt er stehen.

Woran kann sowas liegen? Ist der kaputt? Packt der PIC es nicht die
LEDS zu treiben? Stimmt was mit dem Quarz nicht?

Danke für eure Antworten.

Gruß

Hannes

von Dietmar (Gast)


Lesenswert?

@Hannes:

Arbeite nur seltenst mit PIC, aber:

Pfui, mit goto arbeitet man ja nicht mehr gerne. Obwohl, daran kann es
nicht liegen, wie ich sehe.

Aber wer weiß, vielleicht macht der C-Compiler doch irgendwelche
Mätzchen:

Sauberer und übersichtlicher wäre es so:

void main(void) // Start des Hauptprogramms
{
  TRISB = 0b.0000.0000; // Pins RB0...RB7 -Ausgänge

  unsigned char Wert;
  unsigned int u;

  while (1)
  {
    u=200;
    Wert=0b.1010.1010;
    PORTB=Wert;

    while(u!=0)
    {
      Delay1ms();
      u--;
    }

    Wert=0b.0101.0101;
    PORTB=Wert;
    u=200;

    while(u!=0)
    {
      Delay1ms();
      u--;
    }
  }
}

von Maruu ;. (maruu)


Angehängte Dateien:

Lesenswert?

Hi,

danke für den Tipp, stimmt schon gotos sind eigentlich nix, aber das
wars leider nicht.
Was noch zu erwähnen wäre am Port B funktioniert anscheinend ein Pin
nicht mehr, da leuchtet garkeine LED mehr.
Ich hab mal die IC-Prog Einstellungen angehängt passt das alles? Was
brauch ich an WDT,... und ist HS ok oder lieber den XT Oscillator?

Gruß

Hannes

von Dietmar (Gast)


Lesenswert?

Laß mal alle Zusatzinitialisierungen wie Watchdog, brownout, alles
überflüssige weg, und was du nicht brauchst.

Oszillator, da mußt du den initialisieren, der verwendet werden soll.
Wahrscheinlich XT (= extern?), wie aus dem Schaltplan ersichtlich. Der
Oszillator dort ist OK.

Gruß

Dietmar

von Dietmar (Gast)


Lesenswert?

Hast du noch einen 2. PIC in Reserve zum Vergleich?

Bei Hardware-Defekt, wie einem Pin, der nicht mehr funktioniert, (was
immer damit geschehen ist, Überspannung, Kurzschluß) läuft man Gefahr,
daß auf dem Silizium-Chip auch noch andere Strukturen beschädigt sind.

Gruß

Dietmar

von Profi (Gast)


Lesenswert?

Hast Du die Schaltung so wie im Schaltplan aufgebaut?

Beim Spannungsregler sind doch Pin 1 und 3 vertauscht!
Und warum steht bei der Power-Verbindung / C1  +5V??

von Nablus (Gast)


Lesenswert?

Du musst ihm sagen dass er mit 4MHz xt laufen soll.
876 oder 876A  ?
ein hohes C direkt am Chip..

von Ssss S. (sssssss)


Lesenswert?

Pack mal 100nF direkt hinter den Spannungsregler und unbedingt
noch einen 100nF so nah an die Versorgungspins vom pic wie möglich.

Bye, Simon

von Maruu ;. (maruu)


Lesenswert?

So jetzt mal an alle die mir hier so schnell geantwortet haben.
Es tut, oleeeee.
Es war kein Hardwaredefekt, auch der Schaltplan hat gestimmt, bzw. der
Schaltplan stimmt ned aber ich hab den Spannungsregler richtig herum
eingebaut ;-) die Kondensatoren an den Versorggungspins sinds auchch
nicht, die hab ich noch nicht eingebaut.
Es ist die Konfiguration beim Programmieren, ahhh. Ich hab alle Sachen
wie WDT, ... weggelassen und XT als Osillator eingestellt und jetzt
tuts, ahhh. Da könnte man verrückt werden, man probiert ewig rum, lötet
rum und dann sowas*g*
Aber nochmal danke an alle für die Super Hilfe.


Gruß

Hannes

von Günther Schock (Gast)


Lesenswert?

Hallo
Hast du den LVP benutzt (low voltage Programming)? Dann geht nämlich
ein Pin des PORTB nicht mehr (RB3) ,und wenn dann dort irgendwelche
Dinge passieren, geht der PIC in den Programmiermodus, mit sehr
komischen Effekten.

Viel Erfolg

von Maruu ;. (maruu)


Lesenswert?

Lol genau das hab ich gemacht, und deshalb hat der PortB total
gesponnen.
Aber jetzt gehts ja.
Danke für die Info.

Gruß


Hannes

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.