mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC läuft erst nach reset ....


Autor: HAL9000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Hab das Problem, dass bei mir ein PIC16F876 erst dann läuft, wenn ich
ihn resette. Für meine Anwendung muss der aber laufen, sobald der Saft
angeht. Bei anderen PICs (84, 88, 648) geht das tadellos.
Wenn ich im reset-zustand (reset=0) anschalte, und reset loslassse
(reset=1) funktioniert es auch. Ich dachte, könnte das selbe durch
einen Tiefpass mit Kondis aller art lösen, dat mag er aber nicht :(
jemand Rat ?

danke und grüße, hal9000

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Datenblatt ist Dein Freund, einfach mal nachsehen, ob der überhaupt
ein internes Reset hat. Eventuell müssen Fuse Bits dafür gesetzt
werden.


AVRs haben ein internes Reset, welches man sich voll an die Backe
schmieren kann. Erst wenn man zusätzlich das Brown-Out-Reset
einschaltet, funktionierts wirklich.


MCs ohne internes Reset können durch ein RC-Glied (10k, 10µF) resettet
werden, wenn mindestens 10s der Saft weg war. Aber für 100%
Zuverlässigkeit brauchen die einen Reset-IC.


Peter

Autor: HAL9000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das datenblatt ist leider mal überhaupt kein freund :(
habs eben sogar versucht den Reset mit Komparator & RC zu schalten,
oder gar Digital mit einem anderen PIC, das interessiert ihn alles
scheinbar nicht. Erst wenn er da kleine Oszillationen bekommt
(geprellter Taster, oder wenn ich zitternd das Kabel an Masse lege)
geht das...
jetzt bin ich mehr als verwirrt :( kaputten uC schließe ich aus...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann gibt es noch die Möglichkeit, daß Dein Quarz nicht richtig
anschwingt und erst durch mehrere Pulse irgendwie in Gang kommt.

Ich glaub, die PICs habe auch verschiedene Fuses je nach Quarztyp.


Oder Variablen werden nicht richtig initialisiert und erhalten erst
durch Störpulse zufällig richtige Startwerte.


Hat denn Dein PIC ein Brown-Out-Reset und hast Du es aktiviert ?


Peter

Autor: mc.emi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du den "Power up timer" eingeschalten? der verzögert dir nach
anlegen der betriebsspannung den start des PICs um 72ms - vielleicht
hilft es ?

Autor: akw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würd mal die Startup Time hochsetzen, vllt steigt deine Spannung
nicht schnell genug.

Autor: HAL9000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab jetzt sowohl Brownout detect sowie powerup timer ausprobiert, bringt
beides nix ....
das mit den variablen schließ ich auch aus, ist momentan sogar nur ein
billiges LED-blink-testprogramm, um erstmal dieses problem zu lösen.
Quarz hab ich auch mal mit Keramikresonator und mit nen richtigen
Quarzoszillator ausgetauscht, hilft auch nicht... und ich mein mit
anderen PIC-typen funzt es ja...
HMMMM....

Autor: akw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RC-Glied schon probiert? Wenn garnix geht mal nen neuen nehmen. Oder n
REset-IC.

Autor: HAL9000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jap, bei RC auch selbes Phänomen. Und hab schon 5 PICs reingelegt, daran
kanns auch nicht liegen...
apropos, weiß jemand, wie man im CC5X compiler in den configs den
internen oszillator wählt ? #pragma config FOSC=INTRC oder so geht
leider nicht... der mag scheinbar nur HC, XT und RS...

Autor: Dieter Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls Du den internen Oszillator im 16F876 benutzen willst, der hat
keinen.
Siehe Datenblatt Seiten 145 und 146.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schreib doch mal deine picconfiguration hier rein. den funktionscode
kannst ja vorerst aussparen. und um das configword zu setzen könntest
du alternativ ja auch cc5x in mplab einbinden und dort das configword
im menü einstellen. zum debuggen ist die umgebung auch zu empfehlen =).

Autor: HAL9000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
uaaaa, danke für den Hinweis auf die Config, auch wenn das völlig ominös
ist, hab das problem gelöst:
habe zuvor meine Config immer nur mit "#pragma config WDTE=off" usw
gesetzt. Schreibe ich diese binär, (wo wiederum meine 88er und 648er
mucks machen) und setze dort noch irgendwelche codeprotection-bits,
geht es!! aber was zum teufel hat denn codeprotection damit zu tun,
dass der pic nicht bei powerup startet....
egal, danke an alle!

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das schreit aber danach, dass dein Compiler nicht auf den richtigen PIC
eingestellt ist. Haben denn die anderen PIC's, - die, bei denen es
funktioniert (84, 88, 648) - identische Config-Bits wie der 876?

Könnte ja sein, das du bei falscher Controller-Wahl in CC5X z. B. mit

 #pragma config WDTE=off

beim 867 das Config-Bit für Power-Up-Timer auf "0" setzt, und nicht
für den WDT, wie du eigentlich wolltest?!

Autor: HAL9000 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm also der power-up timer hatte zwar keine wirkung, aber das mit den
nicht identischen Config-bits ist interessant, vorallem wenn man sie
Binär schreibt. thx4 tip...

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.