Welche Programmiersprache ?

Begonnen von picass, 17.12.2022, 12:23:17 CET

Vorheriges Thema - Nächstes Thema

picass

#20
Zitat von: pic18 in 13.12.2024, 20:29:56 CETDie Verbindung zum Board - oder kannst Du den Fühler nicht auslesen?

Danke, pic18, für dein Engagement. Du bist ja echt ein treuer Forenfreund!

Bei allen drei Boards lässt sich wiederholt und immer ein superkleines Testprogramm ausführen, welches die auf dem µC-Board serienmäßig installierte LED zum Blinken bringt. Also funktioniert die IDE von "Thonny", die Verbindung vom PC zum Controller und auch der RP2040 selbst prima. Das ist beliebig oft ausführbar und da gibt es auch keinerlei Ausnahmen. Sobald aber eines der Progs zum Auslesen des Bosch-Sensors aufgerufen wird, geht seit gestern nur noch die bekannte große rote Lampe an.

Aufgrund deiner Einstellung des PDFs für den BME280 habe ich mir gerade eben die Winzig-Platine angeschaut, welche sowohl den Sensor, als auch diverse R's und C's als auch die Anschlüsse enthält. In allen Einzelheiten entspricht die vorgefundene Bestückung exakt der Bosch-Vorgabe aus dem Datenblatt. Die R's haben je 10 kO, das liegt zwar am Rande, aber insgesamt noch genau im vorgegebenen Wertebereich. Bosch hat solche mit 4,7 kO eingezeichnet, aber fundamentales Versagen nach erstem längeren und wiederholtem Funktionieren muss andere Ursachen haben. Es braucht halt Treiber, Bibliotheken und das eigentliche Prog. Und das muss alles exkat zueinander passen und das dann auch noch zu den "sonstigen" Umständen wie Prog-Sprache, µC-Typ und natürlich der individuellen Verkabelung der Anschlüsse. Und der V-Spannung und was weiß ich noch was. Wahrscheinlich liegt der Hund bei Letzterem begraben. :-\
Diese Beschaltung entspricht auch der Vorgabe aus dem Datenblatt für die  I²C-Beschaltung. Diejenige für SPI ist anders. Danke nochmal für deine Teilhabe.
Grüße, picass
sensor1.jpgsensor2.jpg


pic18

sehe ich das richtig, dass am Pin 2,3,4,5 jeweils ein Pull-Up Widerstand ist. Dann mess doch mal die Spannungen, ob die Pegel stimmen. STI und CLK kannst Du nur mit Oszilloskop messen. An Pin CSB müsste Hi anliegen, da du STO nicht beschaltest hast müsste da auch HI anliegen. Das musst Du natürlich bei der Adressierung der Slave - Adresse beachten, sonnst reagiert dein Sensor nicht. Alternativ kannst Du mal STO gegen Masse schalten. Scheint ja auch ein IO Port zu sein.

picass

Wir geraten hier mit Sicherheit auf eine falsche Fährte! Wenn die Beschaltung falsch wäre - was sie sicher nicht ist, denn sie entspricht exakt der Grundschaltung im Datenblatt des Herstellers - , dann hätte das Auslesen nie geklappt. Hat es aber. Es hat anfangs sogar sehr gut geklappt: das MicroPython-File wurde nach Vorlage direkt in den Flash-Speicher des RP2040 kopiert, und die (einzige) von der IDE "Thonny" gefundene Bibliothek für den BME280 wurde downgeladen und installiert, dann das micro-Progrämmchen geschrieben und schon gings mit dem Auslesen und Anzeigen los. Das ließ sich auch beliebig wiederholen und erfreute so richtig.
Der Trouble ging los, als ich auf die Idee verfiel, nun die LCD-Anzeige in Betrieb zu nehmen. Da sollte das BME280 ausgelesen und auf dem LCD angezeigt werden. Aus Platzgründen verlegte ich zunächst die Anschlüsse des BME280 an andere Port-Anschlüsse am µC und änderte das Prog entsprechend um. Aber das LCD wollte nichts anzeigen außer der Schwarzfärbung einer Reihe. Dann ging die große Suche nach Probs los.

Und "sicherheitshalber" wollte ich nun erst doch die beiden den anderen, noch ungenutzten RP2040-Boards in Betrieb nehmen, zunächst nur in der Grundschaltung mit dem BME280. Aber das klemmte von vornherein und der Ärger begann, als bei Anschluss dieser Boards das "Thonny" den notwendigen Treiber, den es im ersten Anlauf gefunden hatte, beharrlich nicht mehr finden wollte. Ab da wurde es übel: einfaches Kopieren war nicht vorgesehen, und beim Suchen nach Treibern und passenden Bibliotheken geriet ich immer mehr in den Strudel. Und da bin ich nun, tief unten am Grund des Strudels und derart durchgedreht, dass ich nichts Sinnvolles mehr zu Wege bringe.
Grüße, picass

pic18

Wie schon gesagt, ich würde zuerst einmal die Spannungspegel überprüfen. Das ist ja bei den 4 Pins überschaubar. Nicht dass eine Leitung keinen Kontakt hat. Danach würde ich die Software überprüfen. Besonders würde ich mal die Slave - Adresse überprüfen ob diese stimmt (STO Beschaltung). Du kannst auch mal die Chip - ID abfragen, die müsste 0x60 sein, im Register 0xd0.

Bei der LCD - Anzeige hatte ich oben diesen Link gestellt. https://github.com/rdagger/micropython-charlcd/blob/master/LCD.py
Hast Du dir das mal angeschaut? Wie sprichst Du denn die LCD - Anzeige an? Mit 4 Datenbit - oder über I2C

picass

Ja, natürlich hatte ich mir das Beispiel angeschaut. Aber es half nicht weiter. Bevor es aber an den Einsatz einer LCD-Anzeige geht, muss davor aber geklärt werden, warum das Gerät, welches die anzuzeigenden Daten liefern soll, anfangs ja, aber nun nicht mehr funktioniert. Dazu auch gestern wieder kein Erfolg.
Grüße, picass

pic18

Von der Ferne aus ist es schwer ein Urteil sich zu bilden, wenn die Pegel passen, der I2C Bus läuft, dann kann es nur noch an der Adressierung liegen. Die LCD-Anzeige hat aber nichts mit dem i2C - Bus zu tun. Hast Du denn USB Verbindung zum Board?

picass

#26
@pic18
Du verharrst immer im Bereich der Hardware. Dabei war recht schnell deutlich, dass der Hund im Bereich der Software zu suchen sein müsste, denn an der Hardware wurde nach dem ersten Erfolg außer gelegentlichen Wechseln der Pin-Anschlüsse nichts geändert und es waren zuviele µC-Boards im Test. Die konnten nicht alle defekt sein. Und so kam es denn auch, dass.....

.....dass ab heute 18:40 Uhr zurück geschossen..... Ne, das nicht, aber Feuerwerk würde schon fast passen, weil das Auslesen und Anzeigen des Bosch Sensors BME280 eeeeeeeeeeeeeeeendlich wieeeeeeeeeeeeeeeeder klappt. Zwei-einhalb-Wochen hat der Kampf, besser Krampf gedauert. Den Erfolg führe ich darauf zurück, dass heute eine Anleitung gefunden wurde, welche für einen einfachen Mann des deutschen Volkes verständlich war. Es ließe sich allerdings auch so formulieren: endlich hatte ein Autor wohl mal jemand anderen zum Nachstellen und Ausführen der Anleitung verpflichtet, der nicht im Stande des Wissens, sonder ein echter Anfänger war. Will auch sagen: in der Anleitung waren wirklich alle notwendigen Schritte genannt und alle Teile funktionierten auch. Ist ja auch furchtbar kompliziert, sich in der Muttersprache so auszudrücken, dass man sich nicht nur selbst versteht, sondern dass ein anderer das auch verstehen kann.

Also nun eine passende Bibliothek gefunden, die nach Anleitung auch richtig installiert, dann die Beispiel-Datei für die Ausführung kopiert und ausgeführt und: NIX! Zwei Anpassungen ausgeführt, einen Fehler beseitigt und dann lief es wirklich. Das hat gleich mehrere Sätze runder Augen gekostet und so richtig mag ich das noch nicht glauben. Eigentlich müsste ich heute Abend mehrfach mit mir anstoßen auf diesen Durchbruch. Aber leider passt meine Frau genau auf und ich hatte heute Mittag schon etwas Portwein zum Kartoffelschälen. Wie fast immer im Leben: es gibt eine gute und leider auch eine schlechte Nachricht. Aber immerhinque.....

Obacht: wenn mir mal jemand über den Weg läuft, der behauptet, MicroPython wäre eine leicht zu erlernende Sprache, den ramme ich ohne ein Wort in den nächsten Sumpf! Wo fand sich die Anleitung? Auf einer Homepage, welche als einen Teil des Gesamt-Namens das Wort "Nerd" enthält! Noch Fragen?
Grüße vom picass, der nun endlich was über Temperaturen und Luftfeuchte sagen kann.

pic18

Freud mich, dass es läuft, ich überprüfe halt immer erst die Hardware wenn plötzlich etwas nicht mehr funktioniert. Läuft denn die LCD-Anzeige auch schon? Ich habe mit fertigen Bibliotheken meine Probleme, da ich nicht genau nachvollziehen kann was im Hintergrund abläuft. MicroPython scheint auch einigen Eigenarten zu haben. Ich hatte hier #16 auch schon einige Dinge erwähnt, die man wissen sollte um nicht plötzlich Überraschungen zu erleben. 

picass

Dass nun wenigstens das Auslesen des Temp-Sensors wieder funktioniert, gereicht mir zu einer Atempause und der Erkenntnis: es muss sich ein Wunder ereignet haben. Je weiter ich als Anfänger der Sprache "MicroPython" in die Grundlagen rein schaue, um so mehr frage ich mich, was das für ein zusammen gestoppeltes Zeug ist, und umso mehr verstehe ich, warum es so schwer ist, sich in diese Sprache einzuarbeiten....., sofern man nicht alle benötigten Komponenten wie Anschluss-Schemata der individuellen Schaltung, Bibliotheken, Treiber und Programme individuell vorgebetet bekommt, wie z.B. in einem VHS-Kurs.
Eine Hochsprache...., da klingt mir vor allem das Wort "eins" sehr schräg im Ohr. Dasjenige Micro-Programm, welches den letzten Durchbruch ermöglichte, war ja in MicroPython geschrieben. Aber nun scheint es so zu sein, dass es für jeden oder doch zumindest einige µC-Boards noch "Dialekte" gibt oder zumindest so was wie Anpassungen unausweichlich sind. Dieses letzte Erfogls-Prog war für einen anderen µC - irgendwas mit ESP32 oder so - geschrieben und funktionierte auf meinem Pi Pico überhaupt nicht. Erst zwei "Anpassungen" und ein zu überwindender Prog-Punkt, den ich als Fehler bezeichnete, weil die IDE von "Thonny" in einer Zeile einen Fehler vermeldete, waren nötig, um eine Funktion zu erreichen. Wenn aber solche die Funktion verhindernden "Anpassungen" einzelner Befehle notwendig sind, nur, weil ein anderer Prozessor  verwendet wurde, was genau soll denn das sein? Für jeden µC eine eigene Version dieser Hochsprache?!

Nach dem Zwischenerfolg gönne ich mir eine kurze Schaffenspause und räume in dieser Zeit erst mal den µC-Arbeits-Tisch auf, will sagen: da hatte ich erst mal alle Prog-Leichen aus den misslungenen Versuchen gekillt. Es drohte, den Überblick zu verlieren. Also erst mal Ordnung schaffen. Dann kam die Kontrolle und Vorbereitung der Hardware für den anstehenden LCD-Test ran und das Neu-Ranschaffen evtl. brauchbarer Software. Heute gehts weiter....
Grüße, picass

Schnellantwort

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