Verzweiflung mit Willkür bei Pic Testplatine?

OP #330660
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
Angehängte Dateien:
Gast #330661
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--;
    }
  }
}
OP #330662
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
Angehängte Dateien:
Gast #330663
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
Gast #330664
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
OP #330668
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
Gast #330669
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.