Anekdote aus der µC-Welt

Begonnen von picass, 08.04.2021, 12:44:41 CEST

⏪ vorheriges - nächstes ⏩

picass

Stichworte: Assembler, Interrupt
Nett, wie leicht man sich selbst erst eine Grube graben und dann kurz vor deren Erreichen auch noch ein Bein stellen kann: In meinem Testprog sollte der PIC quasi als Erstes in den Sleep-Modus abdackeln. Was aber nicht klappte, der wollte sofort an die Arbeit gehen.
Die Grube: in dem Gewusel diverser Testprogramm-Schnipsel und dem Wechseln dieser Schnipsel und dem Ausprobieren ging eine Info verloren: die Ports mussten für den angestrebten Zweck von analog auf digital umgestellt werden.
Das Bein: Nachdem das memoriert war, wurde der entsprechende Befehl nachträglich an den Initialisierung-Code angehängt, also an dessen Ende gestellt. Dort war bislang der Code für das Freischalten des IRQs angesiedelt.

Alles gut, aber so ganz doch nicht: wenn der Simulator und der spätere PIC an genau diesem Punkt des digitalen Einstielens angekommen waren, dann interpretierten sie den Anlog-to-Digital-Wechsel als Port-Änderung und -schwups- : schon war der erste IRQ generiert, obwohl am realen Pin noch gar nichts passiert war!
Reihenfolge ändern und das Erhoffte wurde wahr. Gehört zu den vielen Stolpersteinen, die man in der Wiedereingewöhnungsphase durchstolpern muss.
Grüße, picass

picass

#1
Hatte eine fundamentale Schaffenskrise! :'(
Das Anti-Maulwurf-Projekt erforderte die Verwendung einer sehr kleinen Steuerplatine. Na, die hatte ich ja im Vorrat, also ran an den PIC12. Das erwies sich als totaler Schlag ins Wasser. Das Steuerprogramm war ,,fertig", nur der Zwölfer wollte nicht. Im Simulator lief das hervorragend: mittels dreier Stopppunkte ließ sich das korrekte Arbeiten nachweisen, alle Variablen erschienen wie erwartet. Aber das Umschalten vom Soft-Simulator auf den Hard-Simulator, also das Debuggen, erzeugte nur Grauen. Der ließ sich nicht mal resetten. Vielmehr fand der sich gleich in Zeile 10 ein und ein Einzelstepp war auch nicht möglich. Das Bemühen um den Zwölfer erkläre ich erst mal für beendet.
Mit meinem Haus- u. Hof-µC schien es dann besser zu werden. Allerdings wollte das Prog auch nicht arbeiten und im Simulator hing es dann auch am Timer fest. Der Timer0 – ein 16-bit-Timer - timerte auch prima, aber seinen Überlauf wollte er nicht vermelden... siehe Bilder. Nach etlichem Kampf bemerkte ich endlich, dass nur der Simulator nicht wollte, der PIC18 aber schon. Das wiederum fiel mir erst nicht auf, weil die erzeugen Zeitintervalle so lang waren, dass eine Dynamik bei  der eingetretenen Ungeduld nicht wahr genommen worden war.
 Als endlich entdeckt wurde, das der µC entgegen der Simulator-Behauptung doch den Überlauf erkannte, wurde die Freude anderweitig ausgebremst: die niedliche Steuerplatine zog 60 mA, :o  obwohl als ,,Last" nur zwei LEDs darauf werkelten. Aha: wieder ein µC durch irgendeine Unachtsamkeit geschrottet....! Nix! Auf der dem ursprünglichen Zweck entfremdeten Schaltung saß ein vorgeschalteter ,,OPA" und der wiederum nutzte den unbelegten Messeingang als Antenne und generierte am Ausgang eine prima 50 Hz-Wechselspannung, die auch noch exakt auf halber Amplitude der Betriebsspannung lag. Die PIC-Ports waren zwar alle als Ausgang geschaltet, aber dennoch...... Nach Auftrennen der OPA-PIC-Leitung waren die 60 mA im Nirwana.
Also gettz nach erheblichen Anlaufschwierigkeiten alles gut: ich weiß schon, warum ich am PIC18F14K22 hänge. Der bringt es! :)
Zumindest dann, wenn sein PlatinenBetreuer und Programmierer in Personalunion es endlich auch mal gebracht haben sollte.... >:D
Grüße, picass

picass

#2
Wie man sich auch bestens beschäftigen kann...... >:D

Die in Arbeit befindliche Maulwurf-Verscheuchungsanlage besteht u.a. aus diesen vier Hauptkomponenten: einem Netzteil, der PIC-Platine, einem Soundmodul und einem NF-Endverstärker. Da die alle mit unterschiedlichen Betriebsspannungen liefen, rsp. sinnvollerweise laufen sollten, mussten entsprechende Netzgeräte her. Da schien eines aus den hintersten Regal-Ebenen genau richtig zu sein, enthielt das doch einen Trafo mit drei separaten Sekundär-Wicklungen. So weit, so gut.

Weniger gut war, dass ,,dahinter", also in der zu dem Trafo gehörenden Netzteilschaltung es alles andere als übersichtlich zuging. So waren schon alle drei Sekundärwicklungen leider doch nicht separat, sondern auf der Platine galvanisch miteinander verbunden. Und dann wurde mit nur 10 Gleichrichter-Dioden ein Mix an Signalen aufbereitet, was dann – tusch – zu 5 (!) verschiedenen Ausgangsspannungen führte. Na prima. Is klar: ein orig Schaltplan war damals nicht mitgeliefert worden, und erhebliche Teile der Schaltung waren eh' nicht nachvollziehbar, führten doch viele NT-Leitungen auf einen 15 pol-Steckverbinder - is klar, ohne externe Verbindung.

Nach dem Auftrennen zahlloser Verbindungen, dem Stilllegen diverser Bauteilegruppen, dem  Einbau eines neuen Gleichrichters, diversen Kabel-Kreuz-und auch-Querverbindungen schien das Ziel erreicht: vier verschiedene genau angepasste Spannungsquellen. Nur wollten zwei davon nicht zusammenarbeiten und überhaupt flog plötzlich die Primärsicherung raus, obwohl 125 mA träge für ein unbelastetes NT ja noch überreichlich waren.

Nach langem Suchen und dem Spendieren einer weiteren P-Sicherung entdeckte ich einen (von mir :-[ ) falsch montierten Tantal-Elko! Der hatte sich schleichend zu einem Kurzschluss entwickelt und das 5-V-IC für den noch nicht montierten PIC zur Zimmerheizung veranlasst – wohlgemerkt: schleichend!
Das 5V-IC hatte es seltsamerweise überlebt, ein neu und nun ,,richtig" verlöteter Tantal brachte Hoffnung. Aber wieder nix, die Extra-Spannung für die Relais war zwar im NT vorhanden, nicht aber auf der PIC-Platine. Nach dem Durchkneten des selbst erstellten NT-Schaltplanes wurde zur Gewissheit, dass im Kreuz-u. Quer wohl doch noch eine Masseverbindung fehlen würde, obwohl verwirrender Weise auf der Platine, welche den PIC wie auch die Relais beherbergte, zwischen diesen Komponenten  eine prima Masseverbindung bestand! Zwei Zentimeter schwarzes Litzenkabel und die Probs sollten Geschichte sein.
Soweit, so viel besser als vorher. Jetzt muss ich nur noch klären, warum eines der beiden Relais gut schaltet, das andere – parallel versorgte – aber nur zögerlich.

Wenn man sonst nichts zu tun hat......  ???
Grüße, picass