Ich habe zwei ad-wandler(slaves) der mit einem master kommuniziert. Allerdings werden bei einem die Bits nicht richtig übertragen obwohl gleich programmiert und angeschlossen. Am chip select liegt 3,3v an
Wenn die SPI-Lib eine Black-Box ist, kann man das SPI auch zu Fuß programmieren mit Bit setzen, Bit löschen Befehlen. Dann kann man es exakt so ablaufen lassen, wie es im Timingdiagramm im Datenblatt abgebildet ist. Eventuell muß man die Delayfunktion benutzen, damit die Signale nicht zu schnell sind. Geht es immer noch um den MCP3008?
M. K. schrieb: > Schaltplan und Code wären sicher hilfreich ;) Bekannt aus Funk und Fernsehen und dem Beitrag "AD Wandler misst falsch" sowie dem Beitrag "Raspberry - AD-Wandler"
:
Bearbeitet durch Moderator
Chip select ist üblicherweise Low Aktiv, d.h. damit der Chip ausgewählt ist, sollte 0V (bzw. ein Low level Pegel entsprechend dem Datenblatt) an dem Pin anliegen.
:
Bearbeitet durch User
richard schrieb: > Ich habe zwei ad-wandler(slaves) der mit einem master kommuniziert. > Allerdings werden bei einem die Bits nicht richtig übertragen obwohl > gleich programmiert und angeschlossen. Am chip select liegt 3,3v an Mit Logic Analyzer prüfen was auf dem SPI wirklich passiert.
1 | class MCP3008: |
2 | def __init__(self, bus = 0, device = 0): |
3 | self.bus, self.device = bus, device |
4 | self.spi = SpiDev() |
5 | self.open() |
6 | self.spi.max_speed_hz = 1000000 # 1MHz |
7 | |
8 | def open(self): |
9 | self.spi.open(self.bus, self.device) |
10 | self.spi.max_speed_hz = 1000000 # 1MHz |
11 | |
12 | def read(self, channel = 0): |
13 | cmd1 = 4 | 2 | (( channel & 4) >> 2) |
14 | cmd2 = (channel & 3) << 6 |
15 | |
16 | adc = self.spi.xfer2([cmd1, cmd2, 0]) |
17 | data = ((adc[1] & 15) << 8) + adc[2] |
18 | return data |
19 | |
20 | def close(self): |
21 | self.spi.close() |
an beiden CS ist 3,3v
Chipselect macht man immer selber, weil die SPI-Bibliothek nicht weiss, welchen GPIO man nimmt. Wo wird in dem Code der Chip-Select geschaltet? Das finde ich nicht.
richard schrieb: > an beiden CS ist 3,3v Wie Johannes M. schon gesagt hat: bei dem IC mit dem du kommunizieren willst muss CS auf 0V gezogen werden, bei allen anderen auf 3.3V damit sie diese Kommunikation nicht stören.
richard schrieb: > Ich habe zwei ad-wandler(slaves) Vielleicht hängst du dich an den bereits laufenden Thread mit dran. Da geht es um genau das gleiche Problem. Beitrag "Raspberry - AD-Wandler" richard schrieb: > an beiden CS ist 3,3v Damit wirst du den Wandler nicht ansprechen können. Der erwartet 0V, weil der Eingang invertierend arbeitet. Mit welcher Spannung betreibst du den MCP3008? Verwendest du den für den MCP3008 passenden SPI-Mode?
richard schrieb: > das finde ich selber nicht habe es nicht geschrieben Dann nimm einen Logikanalysator und gucke, was auf dem Bus los ist - erst mit jeweils nur einem der beiden ADCs angeschlossen und dann mit beiden.
https://tutorials-raspberrypi.de/raspberry-pi-mcp3008-analoge-signale-auslesen/ würde gerne einen anderen GPIO verwenden momentan ist es der GPIO8 und möchte mal den darüber probiern (GPIO25) aber wo sage ich dem Programm das den ? finde nichts dazu auch in dieser spidev nicht
Lothar M. schrieb: > M. K. schrieb: >> Schaltplan und Code wären sicher hilfreich ;) > Bekannt aus Funk und Fernsehen und dem > Beitrag "AD Wandler misst falsch" sowie dem > Beitrag "Raspberry - AD-Wandler" Ja, jedes mal das gleiche Problem, aber immer unzureichend beschrieben, jedes mal heißt er anders, jedes mal ignoriert er die Antworten. Also ganz offensichtlich ein Troll.
richard schrieb: > würde gerne einen anderen GPIO verwenden Ja, die Doku ist extrem mager. Schau mal in die Kommentare: "wenn du CS1 statt CS0 verwendest, musst du device auf 1 ändern."
> Ja, die Doku ist extrem mager. > Schau mal in die Kommentare: > "wenn du CS1 statt CS0 verwendest, musst du device auf 1 ändern." meine nicht den Slave sondern mein Cs0 hängt an Gpio8 und womöglich ist der ja kaputt. Der drübere Gpio25 würd ich verwenden. aber iwo im Programm muss ich ja dann das hinterlegen, also iwo eine 8 zu 25 machen
Sebastian M. schrieb: > und womöglich ist der ja kaputt. Das kann man Messen. Gibt einfach mal eine Dauer-'0' an diesem Pin aus. Und dann eine Dauer-'1'. Und miss, ob das Ding reagiert. Und nicht vergessen: nur 1 Benutzername pro Thread! Siehe die simplen Nutzungsbedingungen
Schon wieder ein neuer Thread zum selben Thema. Wozu soll das gut sein? Also ich habe die Nase voll, ich finde das Verhalten des TO Respektlos (nicht nur wegen dem 3. Thread).
Ich habe das Gefühl, da macht jemand nur copy & paste und wundert sich dann, dass nichts geht. Eigentlich sollte davor ein paar Basics kommen: Was ist ein GPIO, wie programmiere ich den. Was ist ein SPI-Bus, und wie funktioniert der. Und davor noch: was ist eine Programmiersprache, und wie erstelle ich selber Code. Programmieren ist mehr als copy & paste.
Erstmal verlinke ich hier noch mal auf die nun geschlossenen Threads. Dort sind einige Bilder zu sehen. Hier wäre kurz nach dem Beginn die Schemaschaltung aufgeführt: Beitrag "AD Wandler misst falsch" Hier sind einige Bilder vom Aufbau, die nicht ausgelassen werden sollten: Beitrag "Raspberry - AD-Wandler" Hauptsächliche Fehler wären zum Beispiel fehlende Kondensatoren zur Glättung, bzw. Störungsminimierung. Zu erwähnen wäre noch der Kabelwulst auf den Bildern. Es ist sehr wahrscheinlich, dass Du noch EMV-Problem in dem Aufbau hast. Auf den GPIO-Leitungen befinden sich viele kleine Klicks, die stören können. Es gibt zum Beispiel sogar für die kleinen µC Anleitungen, dass bestimmte Befehle und Routinen deshalb parallel unterlassen werden sollen, weil dessen eigenen internen Klicks beim Messen stören. In so eine Problematik scheinst Du voll hineingerasselt zu sein.
Stefan ⛄ F. schrieb: > Schon wieder ein neuer Thread zum selben Thema. Wozu soll das gut sein? Ja, finde ich auch! Hat offensichtlich keinen Zweck... Rainer
Sebastian M. schrieb: > meine nicht den Slave sondern mein Cs0 hängt an Gpio8 und womöglich ist > der ja kaputt. Der drübere Gpio25 würd ich verwenden. aber iwo im > Programm muss ich ja dann das hinterlegen, also iwo eine 8 zu 25 machen Das ist keine Konfiguration, die im Programm gemacht wird! Zumindest nicht beim RasPi, da ist der Kernel-Treiber für sowas zuständig. Wie man das konfiguriert darfst Du selber nachlesen: https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#spi-software
Sebastian M. schrieb:
[......[
Jetzt ist ENDLICH klar wer sich hinter den drei Gastnamen und
unnötigen Threads versteckt.
Lothar M. schrieb: > M. K. schrieb: >> Schaltplan und Code wären sicher hilfreich ;) > Bekannt aus Funk und Fernsehen und dem > Beitrag "AD Wandler misst falsch" sowie dem > Beitrag "Raspberry - AD-Wandler" Man nennt das auch Multithreading...
DrDr schrieb: > Nee, eher multiple Persönlichkeit Nee, eher Alzheimer. Nicht mehr wissen in welchem Forum man mit welchem Namen war und ist.
Magnus M. schrieb: > Jetzt ist ENDLICH klar wer sich hinter den drei Gastnamen und unnötigen > Threads versteckt. Es würde mich nicht wundern, wenn er auch noch der "Forenfreund" wäre.
> https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#spi-software danke aber finde es nicht genau in welchem Programm das abzuändern ist
http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_SPI.html am Ende der Seite https://erik-bartmann.de/userfiles/downloads/processing/PiMeUp_MCP3008.pdf
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.