mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC 16F84A / Daten-EEPROM-Fehler


Autor: hro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liebe Gemeinde,

folgendes Problem:
Fuer die Ueberwachung einer Netzspannung (230V) wird diese als Pegel 
ueber einen Optokoppler gesiebt an einen PIC 16F84A angeschlossen 
(CNY17, Eingang mit antiparalleler Diode und Vorwiderstand, Ausgang C 
mit 10uF). Sobald ich das mache, faellt die Datenuebertragung (RS485 
optoisoliert) aus.
Das Einlesen des PICs hat ergeben, dass jeweils immer das erste Byte des 
Daten-EEPROMs veraendert wird. Dieses ist Bestandteil der Busadresse.
Messungen haben ergeben, dass der Ausgang des Netzspannungswandlers 
potentialfrei ist (Phasenpruefer). Das Oszi (ohne Trenntrafo) zeigt am 
Ausgang +/-3V  an, welche an den PIC mit ca. 1kOhm angekoppelt werden.
Versorgung des PICs per AC/DC-Wandler 230V/12V und 7805.

Meine Frage:
Kennt jemand ein solches Problem?
Abhilfe?

Gruss hro

Autor: nullchecker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was möchtest du denn dedektieren ?
230 V / AC vorhanden Ja/Nein, oder Spannungsschwankungen (200-240V)?

Wie sieht die Firmware aus, stelle mal deinen Quelltext und dein
Schaltbild der Schaltung hier ein.

RS485 hat der 16F84A nicht, also per Hardware un Software gemacht.
Welchen Port hast du dafür verwendet (USART hat der F84 keinen).

EEPROM (internes des 16F84A) benötigt Zeit zum Schreiben und sollte 
währenddessen auch nicht Unterbrochen werden. Man kann ein Flag
EEPROM Schreiben fertig Ja/Nein einfügen um solche Fehler zu vermeiden.

NC

Autor: hro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nullchecker schrieb:
> Was möchtest du denn dedektieren ?
> 230 V / AC vorhanden Ja/Nein, oder Spannungsschwankungen (200-240V)?
230V vorhanden oder nicht
>
> Wie sieht die Firmware aus, stelle mal deinen Quelltext und dein
> Schaltbild der Schaltung hier ein.
Mit der Firmware hat das nix zu tun.
>
> RS485 hat der 16F84A nicht, also per Hardware un Software gemacht.
> Welchen Port hast du dafür verwendet (USART hat der F84 keinen).
Laeuft ueber Port B und LTC485  und ist schon viele Jahre erprobt.
>
> EEPROM (internes des 16F84A) benötigt Zeit zum Schreiben und sollte
> währenddessen auch nicht Unterbrochen werden. Man kann ein Flag
> EEPROM Schreiben fertig Ja/Nein einfügen um solche Fehler zu vermeiden.
Es wird zu der Zeit gar nicht geschrieben. Die Adresse wird beim 
Programmieren des uC mit geschrieben.

Ich behaupte mal, dass es sich um ein Hardwareproblem handelt.

Gruss hro

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hro schrieb:
> Kennt jemand ein solches Problem?
> Abhilfe?

Schau mal ins Errata-Sheet. Bei irgendwelchen Uralt-Prozessoren habe ich 
mal gelesen daß bei Schreibzugriffen aufs EEPROM das Adressregister 
gelöscht wird wenn während des Schreibzugriffs auf eine beliebige Zelle 
ein Reset ausgelöst wird. Der angefangene Schreibzugriff landete dann in 
Adresse 0 des EEPROMS.

-> bei diesen Prozessoren Adresse 0 nicht belegen

Beim Kopieren ins RAM wird es sowieso einfacher wenn EEPROM und RAM 
gleiche Adressen haben.

Gruß Anja

Autor: jule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schreibfehler beim Programmieren?

Autor: hro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anja schrieb:
> daß bei Schreibzugriffen aufs EEPROM das Adressregister
> gelöscht wird wenn während des Schreibzugriffs auf eine beliebige Zelle
> ein Reset ausgelöst wird.

wie gesagt: Es wird nicht in den EEPROM geschrieben. Zumindest nicht von 
der Firmware.

Mein Verdacht ist eher, dass durch den negativen Strom an Ports A0 (-3V 
/ 1KOhm) die erste Speicherzelle veraendert wird. Es scheint auch nur 
ein Bit zu sein.

Gruss hro

Autor: hro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jule schrieb:
> Schreibfehler beim Programmieren?

Nein, solange ich o.a. Schaltung nicht an den PIC anschliesse, 
funktioniert ja alles.

Gruss hro

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hro schrieb:
> Mein Verdacht ist eher, dass durch den negativen Strom an Ports A0 (-3V
> / 1KOhm) die erste Speicherzelle veraendert wird. Es scheint auch nur
> ein Bit zu sein.

Ich hatte schonmal deutliche ADC-Messfehler durch negativen Strom an der 
seriellen Schnitttstelle bei einem PIC12F675 (-12V / 100 kOhm). Abhilfe 
brachte eine Schottky-Diode an der seriellen Schnittstelle um die 
negativen Spannungen zu kappen.

Gruß Anja

Autor: hro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anja schrieb:
> Abhilfe
> brachte eine Schottky-Diode an der seriellen Schnittstelle um die
> negativen Spannungen zu kappen.

Ja, ich habe auch schon daran gedacht, die neg. Spannung mit einer Diode 
kurzzuschliessen. Aber interessant waere es in jedem Fall, ob und falls 
ja, warum der EEPROM von einer neg. Eingangspannung veraendert wird.

Das macht einem ja Angst und Bange, wenn sich da mal ein Impuls auf die 
Platine verirren sollte.

Gruss hro

Autor: nullchecker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun ich würde auch nicht gerade das Antiqariat der Mikrocontroller
dafür verwenden.

Teste doch mal mit einer Diode im Detektorkreislauf:

               |
O---->|------==| PortB X
               |

So gelangt der negative Anteil nicht auf den Port(Tri-State).

Oder falls die Spannung dann nicht Ausreichen sollte eine Graetzbrücke
(Gleichrichter) nach dem CNY17.

NC

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.