Forum: Mikrocontroller und Digitale Elektronik scd30 sensor mit PIC16f628? Clock streching?


von Arnd H. (agh63)


Lesenswert?

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.

von Stephan S. (uxdx)


Lesenswert?

Schaltbild?
Welche Pull-UP-Widerstände?
Welche Versorgungsspannung?
Datenblatt und Interface Description gelesen?

von Frank K. (fchk)


Lesenswert?

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
von Stephan S. (uxdx)


Lesenswert?

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
von Andreas B. (bitverdreher)


Lesenswert?

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
von Arnd H. (agh63)


Lesenswert?

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!

von Stephan S. (uxdx)


Lesenswert?

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."

von Arnd H. (agh63)


Lesenswert?

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 ;-)

von Andras H. (andras_h)


Lesenswert?

> 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.

von Christian M. (christian_m280)


Lesenswert?

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

von Frank K. (fchk)


Lesenswert?

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

von Andras H. (andras_h)


Lesenswert?

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
Noch kein Account? Hier anmelden.