PIC16F648A - Interner krotischer Fehler

G

Grzegorz Zalot

Guest
Nochmals, aber jetzt schon 99,9% Wahr... Leider :-( !

Bei einer Neuentwicklung wurden kritische Probleme mit PIC16F628A-1/P (Serie
03142Y3, DIP18) festgestellt. Es wurde folgendes beobachtet :
1. Bei einem Schreibvorgang in den Port A wurden dir Konfigurationsbits (TRISA)
so umgestellt, dass ein Ausgang als Eingang definiert wurde. Das fuehrte zu
einer Fehlfunktion. Zum Teil laesst sich das mit einem erneuten Schreiben des
TRISA-Registers vermeiden. Wir vermuten, dass die Bank-Umschaltung hat
falscherweise den Bank 1 gewaehlt.
2. Zwei aus drei Geraeten nach einigen Minuten seiner Arbeit haengen sich auf,
trotzt eingeschalteten Watchdogs. Das Programm hat ziemlich viele Interrupts,
wir vermuten, dass RAM-BANK falsch adressiert wurde (wie in 1).

Testmethode :
Genau dasselbe Testprogramm (also HEX-Datei) wurde in 3 verschiedene Prozessoren
gebrannt :
- PIC16F628 - Ergebniss OK
- PIC16F628A - Ergebniss OK
- PIC16F648A - Ergebniss falsch.

Zusaetzlich wurde ein Zwischensockel verwendet und nach einer ganz kleinen
Programmaenderung das Programm wurde auf einem PIC16F873 und PIC16F873A
getestet. Ergebniss - OK.

Wir vermuten einen kritischen Fehler in der internen Struktur des Prozessors.
Leider eine genaue Ursache ist noch nicht bekannt (wurde auch mehrere Tausend $
wert ;-) !

Hat jemand vielleicht auch aehnliche Probleme mit diesen Chips ?

Ich hatte diese Prozessoren bei Microchip bemangelt, aber die Verluste bleiben
so wie so. Vielleicht kann ich die anderen ein bisschen warnen ....

MfG
--
Grzegorz Zalot

complex ltd.
office tel/fax : +48 32 2505840
mobil : +48 501 301515

http://www.complex.org.pl/
mailto:complex@alpha.pl
 
Hallo!

Grzegorz Zalot schrieb:
Bei einer Neuentwicklung wurden kritische Probleme mit PIC16F628A-1/P (Serie
03142Y3, DIP18) festgestellt. Es wurde folgendes beobachtet :
1. Bei einem Schreibvorgang in den Port A wurden dir Konfigurationsbits (TRISA)
so umgestellt, dass ein Ausgang als Eingang definiert wurde. Das fuehrte zu
einer Fehlfunktion. Zum Teil laesst sich das mit einem erneuten Schreiben des
TRISA-Registers vermeiden. Wir vermuten, dass die Bank-Umschaltung hat
falscherweise den Bank 1 gewaehlt.
2. Zwei aus drei Geraeten nach einigen Minuten seiner Arbeit haengen sich auf,
trotzt eingeschalteten Watchdogs. Das Programm hat ziemlich viele Interrupts,
wir vermuten, dass RAM-BANK falsch adressiert wurde (wie in 1).
Ich kenn den 16F648 nicht, dafür den 16F628 recht gut, und ich hab ihn
im Einsatz.
Irgendwie klingt das stark nach Interrupt-Problem.
Bist Du auch wirklich sicher, dass die Interrupt-Behandlung alles
berücksichtigt, also z.B. auch FSR und PCLATH sichern? Ein solches
Problem
hatte ich schon mal.
Vielleicht stellt der 648 höhere Anforderung an die Qualität der
Versorgung. Dem 628 kann man fast alles verfüttern was spannungsmäßig
im erlaubten Bereich liegt, der läuft immer.
Aber das heißt ja nicht dass es bei 648 auch so ist. Ich denke da an
Spannungseinbrüche, Spikes, Einstreuung usw usf.
Vielleich auch Probleme mit dem Oszillator. Probier doch mal einen
anderen (=externen) Oszillator statt Quarz.

Testmethode :
Genau dasselbe Testprogramm (also HEX-Datei) wurde in 3 verschiedene Prozessoren
gebrannt :
- PIC16F628 - Ergebniss OK
- PIC16F628A - Ergebniss OK
- PIC16F648A - Ergebniss falsch.
Das kann alles und nichts heißen...

Zusaetzlich wurde ein Zwischensockel verwendet und nach einer ganz kleinen
Programmaenderung das Programm wurde auf einem PIC16F873 und PIC16F873A
getestet. Ergebniss - OK.
Warum nimmst Du dann nicht den? Soviel teurer kann er ja auch nicht
sein.

HTH
Wolfgang
 
Hallo Wolfgang Mahringer !:
.......
Ich kenn den 16F648 nicht, dafür den 16F628 recht gut, und ich hab ihn
im Einsatz.
Wir auch, eigentlich problemlos ..... lediglich etwas zu knapp Raum fuers
Programm :-( - ich denke, 8 k waere prima !

Irgendwie klingt das stark nach Interrupt-Problem.
Bist Du auch wirklich sicher, dass die Interrupt-Behandlung alles
berücksichtigt, also z.B. auch FSR und PCLATH sichern? Ein solches
Problem hatte ich schon mal.
Wenn das dies waere, sollte auch auf dem 628 nicht mehr laufen - die Prozessoren
sollen doch fast identische Innenstruktur haben !

Vielleicht stellt der 648 höhere Anforderung an die Qualität der
Versorgung. Dem 628 kann man fast alles verfüttern was spannungsmäßig
im erlaubten Bereich liegt, der läuft immer.
Ich glaube, das ist nicht der Fall. Ein 100n genau unter dem IC, 5V, ausserdem
einige Tests mit und ohne Last (auch Relais, Trafos usw.) haben deutlich
gezeigt, das der Hund nicht hier begraben wurde :-( ...

Aber das heißt ja nicht dass es bei 648 auch so ist. Ich denke da an
Spannungseinbrüche, Spikes, Einstreuung usw usf.
Vielleich auch Probleme mit dem Oszillator. Probier doch mal einen
anderen (=externen) Oszillator statt Quarz.
Das koennen wir noch machen. Aber wie gesagt, mit dem 628A laeuft alles problemlos !

Testmethode :
Genau dasselbe Testprogramm (also HEX-Datei) wurde in 3 verschiedene Prozessoren
gebrannt :
- PIC16F628 - Ergebniss OK
- PIC16F628A - Ergebniss OK
- PIC16F648A - Ergebniss falsch.


Das kann alles und nichts heißen...
Hmmm, ich glaune, das Programm doch RICHTIG ist !

Zusaetzlich wurde ein Zwischensockel verwendet und nach einer ganz kleinen
Programmaenderung das Programm wurde auf einem PIC16F873 und PIC16F873A
getestet. Ergebniss - OK.


Warum nimmst Du dann nicht den? Soviel teurer kann er ja auch nicht
sein.
Na ja, fast doppel so teuer .... und etwas zu gross ;-( ... Und die Platinen
fuer den 648 waren schon fertig !

HTH
...... :-( !
Danke fuer die Antwort !
--
Grzegorz Zalot

complex ltd.
office tel/fax : +48 32 2505840
mobil : +48 501 301515

http://www.complex.org.pl/
mailto:complex@alpha.pl
 
Hi Grzegorz,

Grzegorz Zalot schrieb:
Ich kenn den 16F648 nicht, dafür den 16F628 recht gut, und ich hab ihn
im Einsatz.

Wir auch, eigentlich problemlos ..... lediglich etwas zu knapp Raum fuers
Programm :-( - ich denke, 8 k waere prima !
Ein 8k-Projekt mit einem 16F648 .... gewaltig :)
Ich hab bisher nur ein einziges Projekt gemacht, wo ich die 8K eines
16F877A fast voll ausgeschöpft habe. Aber das ist kein Vergleich, das
Teil hat ja viel mehr Pins -> kann man viel mehr ansteuern damit.
Und das Programm ist nur so groß weil ein Haufen Tabellen drin sind.

Nimmst Du einen C-Compiler oder so was?
Ich meine, vielleicht kann man die Software platzmäßig optimieren
und Du kannst dann den 628 nehmen.

Irgendwie klingt das stark nach Interrupt-Problem.
Bist Du auch wirklich sicher, dass die Interrupt-Behandlung alles
berücksichtigt, also z.B. auch FSR und PCLATH sichern? Ein solches
Problem hatte ich schon mal.

Wenn das dies waere, sollte auch auf dem 628 nicht mehr laufen - die Prozessoren
sollen doch fast identische Innenstruktur haben !
_Sollen_ jaja, aber wer garantiert das?
Ich verlaß mich nicht auf solche Aussagen. Die Marketing-Heinis
erzählen alles mögliche...und dann steht plötzlich als Fakt
auf der Website.
Datenblatt ist das einzige was zählt...und da sind noch genügend
Spielräume zur Interpretation :)

Vielleicht stellt der 648 höhere Anforderung an die Qualität der
Versorgung. Dem 628 kann man fast alles verfüttern was spannungsmäßig
im erlaubten Bereich liegt, der läuft immer.

Ich glaube, das ist nicht der Fall. Ein 100n genau unter dem IC, 5V, ausserdem
einige Tests mit und ohne Last (auch Relais, Trafos usw.) haben deutlich
gezeigt, das der Hund nicht hier begraben wurde :-( ...
Mir fällt noch ein:
- Offener Pin als Eingang geschaltet
- Config-Bits richtig? Ich meine sind die gleich wie beim 628er?
Bin zu faul zum Datenblatt saugen und nachzusehen.

Aber das heißt ja nicht dass es bei 648 auch so ist. Ich denke da an
Spannungseinbrüche, Spikes, Einstreuung usw usf.
Vielleich auch Probleme mit dem Oszillator. Probier doch mal einen
anderen (=externen) Oszillator statt Quarz.

Das koennen wir noch machen. Aber wie gesagt, mit dem 628A laeuft alles problemlos !
Ich weiß schon. Es geht doch darum, das Problem einzugrenzen.
Bitte dann berichten :)

Testmethode :
Genau dasselbe Testprogramm (also HEX-Datei) wurde in 3 verschiedene Prozessoren
gebrannt :
- PIC16F628 - Ergebniss OK
- PIC16F628A - Ergebniss OK
- PIC16F648A - Ergebniss falsch.


Das kann alles und nichts heißen...


Hmmm, ich glaune, das Programm doch RICHTIG ist !
Man könnte noch nach und nach Teile aus dem Testprogramm rausnehmen
damit es kürzer wird und dann checken ob nach der "Operation" der
Fehler noch da ist. Ist aber zeitaufwändig.

Zusaetzlich wurde ein Zwischensockel verwendet und nach einer ganz kleinen
Programmaenderung das Programm wurde auf einem PIC16F873 und PIC16F873A
getestet. Ergebniss - OK.

Warum nimmst Du dann nicht den? Soviel teurer kann er ja auch nicht
sein.

Na ja, fast doppel so teuer .... und etwas zu gross ;-( ... Und die Platinen
fuer den 648 waren schon fertig !
Naja, die Zeit die Du aufgewendet hast, um den 648 zum Laufen zu
kriegen kostet nichts? _Das_ ist teuer!

Ich muß mir direkt mal so einen 648er besorgen, nur der Neugier
halber...

lG
Wolfgang
 
Hallo Wolfgang Mahringer !:
........
Ein 8k-Projekt mit einem 16F648 .... gewaltig :)
Doch, doch :) !!!
......
Nimmst Du einen C-Compiler oder so was?
Ich meine, vielleicht kann man die Software platzmäßig optimieren
und Du kannst dann den 628 nehmen.
Na ja, za. 50 % der Prozeduren in Assembler .....
.....
Wenn das dies waere, sollte auch auf dem 628 nicht mehr laufen - die Prozessoren
sollen doch fast identische Innenstruktur haben !


_Sollen_ jaja, aber wer garantiert das?
Normalerweise Microchip .....
.........
Ich glaube, das ist nicht der Fall. Ein 100n genau unter dem IC, 5V, ausserdem
einige Tests mit und ohne Last (auch Relais, Trafos usw.) haben deutlich
gezeigt, das der Hund nicht hier begraben wurde :-( ...


Mir fällt noch ein:
- Offener Pin als Eingang geschaltet
gemacht

- Config-Bits richtig? Ich meine sind die gleich wie beim 628er?
ja.

Bin zu faul zum Datenblatt saugen und nachzusehen.
ich etwa auch ein bisschen, aber mein Mitarbeiter musste (!) das machen ....
.........
Hmmm, ich glaune, das Programm doch RICHTIG ist !


Man könnte noch nach und nach Teile aus dem Testprogramm rausnehmen
damit es kürzer wird und dann checken ob nach der "Operation" der
Fehler noch da ist. Ist aber zeitaufwändig.
Genau. Und diese zeit fehlt jetzt gerade .....
........
Naja, die Zeit die Du aufgewendet hast, um den 648 zum Laufen zu
kriegen kostet nichts? _Das_ ist teuer!
Und die produktion sollte irgendwann in 1000-er Stueckzahlen stattfinden. Hier 1
Eur macht schon langsam tausende ....

Ich muß mir direkt mal so einen 648er besorgen, nur der Neugier
halber...
Genau. Bloss Achtung ! Manche Programme laufen problemlos !!!

Bis dann
--
Grzegorz Zalot

complex ltd.
office tel/fax : +48 32 2505840
mobil : +48 501 301515

http://www.complex.org.pl/
mailto:complex@alpha.pl
 
Hallo Grzegorz,

Könnte es vielleicht sein, dass die Assembler-Routinen probleme machen?

Ich könnte mir folgendes Vorstellen:

Asselmblerroutine geht über eine Seitengrenze hinweg. Da passiert ja
weiter nix, PCLATH wird automatisch gesetzt. Dann kommt ein Sprung über
die Seitengrenzen zurück, PCLATH wird nicht gesetzt, wo der Sprung dann
endet,...

Gruss Jochen
 
Hallo Jan Reucker !:
Am Mon, 21 Jul 2003 07:12:54 +0200 schrieb Grzegorz Zalot:


Mir fällt noch ein:
- Offener Pin als Eingang geschaltet

gemacht


Was gemacht, die offenen als Eingang geschaltet? Oder
(richtigerweise) alle noch offenen Pins als Ausgang?
Auf die Masse, oder per R auf +5V, und Eingang. Keinerlei unnoetigen Impulse,
die auch Interrupts ausloesen koennen. Das betrifft allerdings nur 2 Pins ...
die auch fuer die Programmierung notwendig sind.


--
Grzegorz Zalot

complex ltd.
office tel/fax : +48 32 2505840
mobil : +48 501 301515

http://www.complex.org.pl/
mailto:complex@alpha.pl
 
Hallo jochen rapp !:
Hallo Grzegorz,

Könnte es vielleicht sein, dass die Assembler-Routinen probleme machen?

Ich könnte mir folgendes Vorstellen:

Asselmblerroutine geht über eine Seitengrenze hinweg. Da passiert ja
weiter nix, PCLATH wird automatisch gesetzt. Dann kommt ein Sprung über
die Seitengrenzen zurück, PCLATH wird nicht gesetzt, wo der Sprung dann
endet,...
Dann aber der 16F628, 16F873 und die anderen haetten auch den Fehler "gemeldet".
Das ist nicht der Fall.

--
Grzegorz Zalot

complex ltd.
office tel/fax : +48 32 2505840
mobil : +48 501 301515

http://www.complex.org.pl/
mailto:complex@alpha.pl
 
Am Tue, 22 Jul 2003 07:29:17 +0200 schrieb Grzegorz Zalot:

Auf die Masse, oder per R auf +5V, und Eingang. Keinerlei unnoetigen Impulse,
die auch Interrupts ausloesen koennen. Das betrifft allerdings nur 2 Pins ...
die auch fuer die Programmierung notwendig sind.
Andersherum geht's halt auch und die Notwendigkeit einer
externen Beschaltung entfällt. Einfach auf Ausgang stellen
und Ruhe ist.

MfG
Jan

--
Jan Reucker
email: jan dot reucker at web dot de
web: http://www.reucker-online.de
 

Welcome to EDABoard.com

Sponsor

Back
Top