www.mikrocontroller.net

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


Autor: Maruu ;-) (maruu)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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--;
    }
  }
}

Autor: Maruu ;-) (maruu)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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??

Autor: Nablus (Gast)
Datum:

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

Autor: Ssss Ssssss (sssssss)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Maruu ;-) (maruu)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Günther Schock (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Maruu ;-) (maruu)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.