Antworten

Einschränkungen: 8 pro Beitrag (8 verbleibend), maximale Gesamtgröße 8,79 MB, maximale Individualgröße 1 MB
Entfernen Sie den Haken der Dateianhänge, die gelöscht werden sollen
Klicken Sie hier oder ziehen Sie Dateien hierher, um sie anzuhängen.
Anhänge und andere Optionen
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau

Zusammenfassung

Autor picass
 - Heute um 10:25:16 CEST
Verstanden habe ich diese Methode beim ersten, kurzen Blick drauf noch nicht, werde mich aber im Laufe des Wochenendes damit beschäftigen. Danke erst mal für die Anregung. Im Moment brauche ich meine Prog-Energie, um mein inzwischen altes OelTemp-Programm umzuschreiben. Da hat sich vieles in der Hardware geändert und auch im Prog muss so Einiges angepasst werden.
Grüße, picass
Autor ^Cobra
 - Gestern um 11:52:12 CEST
240 einzelne Speicherstellen die du ja auch erstmal im Program rein schreiben musstest.
Da könnte man mit:
EEPROM Code 0x2100
DA .1,.2,.3,.4,.5,.6,.7,.8,.9,.10,.100,.120 ;usw. 
ebenfalls die 240 nach einander ablegen.
Die 1 wäre nun bei speicherplatz 2100 und somit (bei mein gewählten pic zumindest) EEPROM Adresse 0. Die Huntert somit bei Adresse 10. 
Was auch schick ist: selbst im simulator kannst du kontrollieren ob die Werte in der richtigen Adresse stehen. Ich habe mir jetzt bei meiner PV Steuerung mit 
DE "PV_Steuerung V1.4"

Den String abgelegt. Dieser wird beim auslesen des Pic angezeigt. Da ich immer ein "alten" pic derzeit zur Seite liegen habe komme ich manchmal durcheinander welcher eig. grade getestet wird  :-\ so schaue ich jetzt einfach welche Version gerade nicht eingebaut ist und weiß dann was Sache ist. 
Autor picass
 - Gestern um 09:47:52 CEST
Ich kenne keinen anderen Weg als diesen, dem Programm die Werte einzuverleiben und anschließend das Prog zu beauftragen, das interne EEPROM zu befüllen. Nicht übersehen: es geht um das Füllen von 240 einzelnen Speicher-Stellen!
Grüße, picass
Autor ^Cobra
 - Gestern um 06:37:18 CEST
Okay. Aber meine Frage bleibt:
Wieso schreibst du die Werte nicht gleich in dem eeprom? 
Gibt es einen Vorteil,wenn das Programm die Werte rein schreibt?
Oder ist das nicht der interne eeprom sondern ein externer?

Autor picass
 - 10.07.2025, 18:01:26 CEST
Nach dem Programmiervorgang und beim allersten Start des Progamms werden die Tabellenwerte vom Programm automatisch ins EEPROM geschrieben. Das passiert nur einmal und nur beim ersten Start. Ab dem zweiten und jedem weiteren Start wird lediglich eine Abfrage ausgeführt, ob die Werte im EEPROM vorhanden sind. Fällt die Prüfung positiv aus, wird schlicht das normale Programm (ohne weiteres EEPROM-Befüllen) abgearbeitet.
Grüße, picass
Autor ^Cobra
 - 10.07.2025, 12:21:45 CEST
Verstehe ich das richtig: DIe Werte stehen im Programm und werden, wenn nicht vorhanden in den EEPROM geschrieben?
Wieso schreibst du die Werte nicht direkt in den EEPROM? 
Autor picass
 - 10.07.2025, 10:35:57 CEST
Wie man sich doch prima selbst austricksen kann?!
Gestern zum Kaffeetrinken am Nachmittag bemerkte meine Frau zu recht, dass ich verärgert aussehen würde. Was voll zutraf, denn nach dem ersten Befüllen des PICs wollte das Programm nicht funktionieren, obwohl es dasselbe Prog war, welches in der Vorläufer-Platine mit nahezu identischem Layout prima arbeitete. Zwei, dreimal kurz angeschaltet und die Eingangsspannung korrekt im passenden Bereich variiert, aber immer zeigte die Schaltung nur die Maximal-Temperatur an. Also: sich ärgern!
Nach dem K-Trinken standen noch die nachträglichen Einfügungen der Jumper-Brücken an, um die Port A-Eingänge A0 und A1 fürs Programmieren von den sonst im Betrieb notwendigen Widerständen zu befreien. Danach natürlich weitere Einschaltversuche. Erst 'ne Zeitlang wieder nichts und dann auf einmal gänzlich ohne irgendeine weitere Veränderung entschloss sich die Schaltung, doch wie erwartet zu arbeiten! Im Nachhinein leicht zu verstehen:

Die Schaltung liest einen Analog-Wert ein, arbeitet sich durch eine Tabelle hoch und vergleicht. Passt es, dann wird ein vorbereiteter Wert dort ausgelesen und kann ohne aufwendige Rechenschritte angezeigt werden. Die Tabelle liegt im EEPROM. Sie kommt dort rein, weil das Prog nach dem Starten den Inhalt einer festgelegten Speicherstelle ausliest und mit dem erwarteten Wert vergleicht. Passt das, dann wird ins Hauptprogramm gesprungen und die Standard-Arbeit wird ausgeführt. Wenn nix passen und das ist beim allerersten Start des Progs der Fall, werden erst die im Programm hinterlegten Werte ins EEPROM geschrieben. Und da lag der Hase im Pfeffer, denn die Tabelle besteht aus 16-bit-Werten, das Schreiben ins EEPROM ist nicht so der allerschnellste Vorgang und dann laufen meine PICs ja grundsätzlich mit angezogener Handbremse und 31,5 kHz. Also startete die Schaltung und funktionierte prächtig, aber weil nach kurzer Betrachtung nicht gleich Erhofftes zu sehen war, wurde gleich wieder abgeschaltet und rum gegrübelt und die Hardware überprüft. Bei den ersten Einschalt-Tests wurde also immer erst zu kurz gesprungen. Bis endlich mal die Tabelle doch übertragen war und der PIC - befreit von dieser Last - sich im Messen und Anzeigen austoben konnte.
Tja, wenn man nicht mehr so drin steckt und dann in falscher Richtung - Hardware - sucht, dann passiert Ärger, der "eigentlich" gar nicht nötig ist.
Grüße, picass
Autor picass
 - 09.07.2025, 17:58:23 CEST
Natürlich wurde es nicht einfach. Aber nun funktioniert endlich wenigstens die Hälfte. Will sagen: der "linke" Teil des Doppelpacks an Schaltungen hat soeben seine Funktion aufgenommen. Der Linke, das ist die Anzeigeschaltung für die Regeneration eines Dieselpartikelfilters. Die letzte Hürde lag wieder bei den Basics: der Eingangsbereich an Port A war reichlich bestückt mit Widerständen. A0 und A1 verfügen je über eine Widerstandsdekade und damit werden die untere und die obere Bereichsgrenzen für den analogen Eingang festgelegt. Nach der Bestückung ist leider gegen das Prinzip verstoßen, dass die Programmiereingänge eben gerade nicht bestückt sein dürfen. Der PIC ist aber eingelötet, is klar, da mussten wieder Eingriffe her: Leiterbahnunterbrechungen, Jumper-Einbau, etc., Aber nu funkt es. Also so halbmäßig. >:D
Grüße, picass
Autor picass
 - 07.07.2025, 14:48:53 CEST
Fast fertig! Die zweite Teilschaltung - Diesel-Partikelfilter-Regeneration - ist auch mit seinem PIC bestückt. Und TUSCH: Auch hier sind alle 74HCT11-er "heile" geblieben und auch sonst nichts zerstört. Ein kleines Wunder: durch den o.g. Leiterbahnfehler waren ca. 14 Volt auf alle Input A -Eingänge gelangt. Dieser IC Typ hat 4 Eingänge für Daten und einer davon... Von dort muss der Strom/die Spannung sich ihren internen Weg gebahnt haben und am positiven Versorgungs-Anschluss (Vss) ausgetreten sein. Von dort gings auf den Ausgang (!) des Festspannungsreglers MCP1730-50 - ein 5 V-Regler - und dann intern in den rein. Alles lebt noch, bis auf den einen 74-er, den ich zwischenzeitlich als defekt im Verdacht und ihn abgeflext hatte. 7 Volt ist die Maximun (Tod) -Spannung für den 74-er laut Datenblatt, das Doppelte hat er abbekommen. Der gesamte Fehlerstrom lag bei ca. 30 mA, verteilt auf die sechs 74-er.

Auch mit dem Fädelwerk bin ich durch. Die oberste Leiste trägt ja die auf der Unterseite verborgenen Anzeigen. Nach Absäbeln der 3 kleinen Stege wird die Leiste um 90° hoch gedreht und mit Kleber so befestigt. Bei früherer Schaltung hatte ich die vielen Verbindungen mit dünnem Draht ausgeführt. War aber danach nur noch mit Gewalt zu verbiegen, was die Lötungen gefährdete. Nun also Fädeldraht. Der steckt locker 1 A und mehr weg, die ca. 12 mA für ein Digit machen den nicht an.
Gettz noch ein paar R's und dann die Progs in die PICs - die beiden "Programmiersockel" warten schon. Ist ja von nun an ganz einfach. Obs wirklich so wird...... ::)
Grüße, picass
defekt7seg5.jpg
Autor picass
 - 06.07.2025, 19:11:46 CEST
Die Antwort auf das Beharren der Verwendung so vieler Bauteile ist schlicht "historischer" Art: natürlich hatte ich schon viel früher nach solchen 7-seg-Anzeigen geschielt und sie auch verwendet. Aber das Programmieren halt in Assembler. Und das war mir früher einfach zu aufwendig und auch heute ist mir Aufwand in Hardware lieber. In diesem Punkt war ich schon immer so und bin es bis heute geblieben: ich greife gerne zum Lötkolben, das Programmieren - na ja - kommt zum Schluss.

Heute wieder fleißig gelötet! Aber den größten Teil der Zeit damit verbracht, zu überprüfen, ob die durch den Leiterbahnfehler letztendlich verursachte Einleitung viel zu hoher Betriebsspannung auf die Reihe der sechs HCT4511-er nun alles demoliert hatte oder aber nicht. Durch die zuviel gezogene Drahtverbindung strömten Elektronen mit bis zu 12 Volt auf die Dekoder und deren Tod-Spannung wird mit wenig über 6 Volt angegeben. Gerechnet hatte ich natürlich mit dem Ableben aller. Bei einer Schaltung (Öltemp-Anzeige) stellte ich erst mal die Bestückung fertig, lötete zum Schluss den PIC ein und verpasste dem ein Mini-Prog, welches langsam die Zahlen von 0 bis 9 hochblättert und halt ausgibt.
Überraschung: bei zweien der drei Anzeigen gabs das erhoffte Wunder, alle Digits leuchteten. Bei einer aber war die Leuchtdichte zu gering und es fehlten zwei Digits. Das führte ich natürlich auf einen überstressten 4511-er zurück. Den also raus flexen, neuen rein und schwitz: ne, das wars nicht, wieder selbe Fehlanzeige. Oszi raus gekramt, aber die Signale kamen alle am Segment an. Also war das defekt!

Hat schon mal jemand eine 7-ziff-Segment-Anzeige aus einer Platine mit Layern oben und unten ausgelötet, bei der sämtliche Pinne durchgängig gut verlötet sind und nur unten kommt man ran? Also an einen Pin? Da fiel mir nur das Zerspanen ein. Was 'ne Sauerei und immer die Gefahr, gleich die Leiterbahnen auf der Platine mit zu versäbeln. Die neue Anzeige wurde nun aber doch vorher einzeln geprüft, was ich vorher nicht getan hatte. Nun sitzt sie drin und endlich darf ich mich nach zahlreichen Stunden wieder über das schlichte Leuchten von LEDs freuen.
Grüße, picass
defekt7seg1.jpgdefekt7seg2.jpgdefekt7seg3.jpgdefekt7seg4.jpg


🡱 🡳