Hallo zusammen,
ich habe ein komisches Verhalten des MCP23S17 festgestellt.
Entweder übersehe ich etwas oder meine beiden MCP23S17 sind defekt!
(wäre etwas komisch, da sie beide NEU sind)
Ich habe einen Testaufbau mit einem Raspberry aufgebaut (um mir das
Testen etwas leichter zu ermöglichen).
Das Test-Programm ist recht simpel gestaltet (python).
-> Der Eingangs-Zustand von PortA soll auf PortB dargestellt werden.
-> Wenn ich mein Programm teste, bekomme ich aber folgendes Verhalten...
Port A = Eingänge
Port B = Ausgänge
Eingang Ausgang
00000000 11111111
00000001 11111101
00000010 11111011
00000100 11110111
00001000 11101111
00010000 11011111
00100000 10111110
01000000 01111101
10000000 01111110
Wenn ich die Ports untereinander tausche (Software und Hardware),
funktioniert alles problemlos! -> (B = Eingänge & A = Ausgänge)
Habe das ganze mit zwei Stück MCP23S17 getestet -> das Verhalten ist
identisch!
Hinweis:
Ich habe es auch nicht hin bekommen die Pullups auf "255" zu setzen.
Wenn ich die Pullups auf 255 setze (überprüft mit Oszilloskop) und dann
den Wert der Pullups wieder auslese, bekomme ich 254 zurück!
1 | #!/usr/bin/python
|
2 |
|
3 | import spidev
|
4 | import time
|
5 |
|
6 | spi = spidev.SpiDev()
|
7 | spi.open(0, 0)
|
8 | spi.max_speed_hz = 7629
|
9 |
|
10 | r = 0x41
|
11 | w = 0x40
|
12 |
|
13 | spi.xfer([w, 0x01, 0x00]) #PORTB auf Ausgang schalten
|
14 | time.sleep(0.2)
|
15 | spi.xfer([w, 0x0C, 0xFF]) #PORTA Pullups aktivieren
|
16 | time.sleep(0.2)
|
17 |
|
18 |
|
19 | while 1:
|
20 | data = spi.xfer([r, 0x12, 0x00]) #PORTA Eingang abfragen
|
21 | time.sleep(0.01)
|
22 | spi.xfer([w, 0x13, data[2]]) #PORTB setzen
|
23 | time.sleep(0.01)
|
Hat jemand eine Idee an was es liegen könnte? (was ich übersehen habe)
Gruß
René