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
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
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
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
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
jule schrieb: > Schreibfehler beim Programmieren? Nein, solange ich o.a. Schaltung nicht an den PIC anschliesse, funktioniert ja alles. Gruss hro
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
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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.