Hallo, ich verwende seit langem den PIC16F628A mit dem JDM Programmer und ICProg. Am Sensor Sensirion SCD30 für CO2, Temperatur und Feuchte scheitere ich. Liegt es daran, dass der Sensor clock streching benötigt? Kann Pic16F628A clock streching? Wenn nein: welchen PIC brauche ich? Und welchen Programmer brauche ich für diesen PIC? Ich möchte möglichst viel selbst machen und open source software nutzen.
Schaltbild? Welche Pull-UP-Widerstände? Welche Versorgungsspannung? Datenblatt und Interface Description gelesen?
Arnd H. schrieb: > Hallo, > ich verwende seit langem den PIC16F628A mit dem JDM Programmer und > ICProg. > Am Sensor Sensirion SCD30 für CO2, Temperatur und Feuchte scheitere ich. > Liegt es daran, dass der Sensor clock streching benötigt? > Kann Pic16F628A clock streching? Dieser PIC hat kein I2C in Hardware. Ist auch uralt. > Wenn nein: welchen PIC brauche ich? Microchip sagt: "Newer Device Available PIC16F18444". Der hat eine MSSP Einheit, also I2C in Hardware. Und die kann auch Clock Stretching. > Und welchen Programmer brauche ich für diesen PIC? > Ich möchte möglichst viel selbst machen und open source software nutzen. Du hast praktisch keine Wahl. Deine Wahl für alle aktuellen PICs lautet MPLABX, den zugehörigen XC Compiler (hier XC8) und ein PICKIT. Für diesen PIC reicht ein PICKIT3-Nachbau vom Chinamann (Amazon, ebay oder sonstwoher). MPLABX und die XC-Compiler bekommst Du kostenlos bei Microchip.com zum Download. fchk
:
Bearbeitet durch User
Frank K. schrieb: > Dieser PIC hat kein I2C in Hardware. Ist auch uralt. Stimmt. > Du hast praktisch keine Wahl. Stimmt nicht. sprut hat Routinen für I2C ohne MSSP-Interface z.B. PIC16F628 :-) https://www.sprut.de/electronic/pic/grund/i2c_soft.htm
:
Bearbeitet durch User
Warum soll der SCD30 Clock-stretching benötigen? Der läuft mit standardmäßigen 100kHz. Das hier: https://sensirion.com/media/documents/D7CEEF4A/6165372F/Sensirion_CO2_Sensors_SCD30_Interface_Description.pdf gelesen?
:
Bearbeitet durch User
Hallo, erst mal vielen Dank für Eure Beiträge und Informationen. Dass ich mit meinem PIC16F628 ein bisschen "retro" bin, ist sicher richtig. Aber bislang konnte ich mit dem µC und meinem selbst gebauten JDM-Programmer alles machen, was ich wollte. Der SCD30 braucht clock streching - so steht es in der Interface Description Version 1.0-D1-May2020. https://sensirion.com/media/documents/D7CEEF4A/6165372F/Sensirion_CO2_Sensors_SCD30_Interface_Description.pdf Ich werde mal den Hinweis von uxdx auf sprut ausprobieren. Vielen Dank dafür!
Die Routinen von sprut scheinen clock-stretching zu berücksichtigen: https://www.sprut.de/electronic/pic/grund/i2c_soft.htm "Meine Routinen berücksichtigen die Möglichkeit, dass ein Slave den I2C-Takt aktiv verlängert."
Ja, tatsächlich geht clock streching auch mit dem PIC16F628A. Die Informationen von sprut waren sehr interessant. Ich war verwundert, dass er das I2C Protokoll über jeweils separate Aus- und Eingängen für SCL und SDA realisiert hat. Ich verwende nur jeweils eine, bidirektionale Leitung. Ich habe meine Projekte mit dem PicBasic Pro Compiler realisiert - da gibt es eine sehr einfach zu handhabende Implementation des I2C-Protokolls. Und man kann, wie ich jetzt gesehen habe, das clock streching per DEFINE im Programm festlegen: DEFINE I2C_HOLD 1 Damit hat es dann funktioniert. Ich danke der Community für die Hilfe - ohne Eure Anregungen wäre ich nicht da hin gekommen. Jetzt kann ich mit meinem "Retro-Chip" weiter arbeiten ;-)
> ich verwende seit langem den PIC16F628A mit dem JDM Programmer und > ICProg. Wow. Das habe ich damals auch genommen. Wäre es nicht langsam Zeit zu wechseln? Ich meine ein PICkit2 kostet jetzt auch nicht mehr so viel. Dann hast du kein Problem wenn deine PC keine serielle Schnittstelle mehr hat. Bin unsicher, ob der JDM mit ein USB to RS232 Wandler auch tut? Vermutlich ja, wenn das ein echter RS232 ist. Sonst bei einer USB to TTL wird der JDM nicht mehr tun. Und die Virtuellle Ground bei JDM ist auch ärgerlich. Mit ein PICkit2/PICkit3 könntest du auch In Circuit Programming machen. JDM kann das auch, aber wegen dem Virtuellen GND ist dass immer so ein Ding. Manchmal muss man dann Verbindungen trennen, sonst tut das nicht.
Andras H. schrieb: > Wäre es nicht langsam Zeit zu > wechseln? Ich meine ein PICkit2 kostet jetzt auch nicht mehr so viel. Oder einen Sprut-Brenner mit USB. Die Software läuft auch unter W10. Der hat wenigstens eine geregelte Programmierspannung und die Software lässt einfaches Laden des HEX zu, bei MPLAB ist das immer ne riesen Sache. Wobei Sprut alle seine Brenner Offline genommen hat... Gruss Chregu
Christian M. schrieb: > Andras H. schrieb: >> Wäre es nicht langsam Zeit zu >> wechseln? Ich meine ein PICkit2 kostet jetzt auch nicht mehr so viel. > > Oder einen Sprut-Brenner mit USB. Die Software läuft auch unter W10. Der > hat wenigstens eine geregelte Programmierspannung und die Software lässt > einfaches Laden des HEX zu, bei MPLAB ist das immer ne riesen Sache. > Wobei Sprut alle seine Brenner Offline genommen hat... Na ja, die Brenner stammen noch aus einer Zeit, in der PICs noch kein Flash, sondern EPROM enthalten hat, das entweder per UV-Lampe gelöscht oder nur einmal programmierbar war. Heutzutage sind immer mehr Bausteine ausschließlich als SMD erhältlich und werden in der Schaltung programmiert. Da passen "Brenner" einfach nicht mehr in die Landschaft. Außerdem kannst Du mit einem Brenner Deinen Code nicht in Debugger debuggen. fchk
Christian M. schrieb: > einfaches Laden des HEX zu, bei MPLAB ist das immer ne riesen Sache. Mplab X oder Mplab 8? Mit 8 hatte ich wenig Probleme. Es gibt den Import. Dann kann man auch einfach flashen. Hatte ich wenig Probleme. X nutzte ich selten, damals war das eine katastrophe. Man hat es versucht zu verbessern. Ich habe ehrlich gesagt, aufgegeben Mplab X zu nehmen. Übrigens mit bisschen reverse engineering lässt sich der Mplab 8 mit neue PICs erweitern. Debuggen habe ich nicht versucht, aber um einfache ein Projekt aufzusetzen, das ging. Vermutlich würde auch debuggen bei eigen PICs noch tun, falls der Protokoll sich nicht von bestehenden PICs abweicht.
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.