Hallo zusammen,
hab hier ein kleines Problem mit meinem MCP23017.
Die Verkabelung entspricht der des angehängten Bildchens, die 3 Adresspins sind zusätzlich noch alle auf GND gezogen.
Gefunden wird er auch!
pi@TestbBerryPi ~ $ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Testsoftware entstammt folgender Seit und wurde für meine Zwecke leicht modifiziert:
http://www.netzmafia.de/skripten/hardw…nder/index.html
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <wiringPi.h>
#include "expander_lib.h"
#define STUFE0 0xFF
#define STUFE1 0xFB
#define STUFE2 0xEF
#define STUFE3 0xFD
#define STUFE4 0xFE
#define STUFE5 0xF7
#define STUFE6 0x7F
#define STUFE7 0xBF
#define STUFE8 0xDF
#define STUFE9 0x00
int main(int argc, char *argv[])
{
mcp23017 expander; /* Verwaltungs-Structure */
int data = STUFE0; /* Ausgabewert */
int eingabe;
expander = init_mcp23017(0x20,0,0,"/dev/i2c-1");
write_mcp23017(expander, GPIOA, data);
while(1){
printf("Ihre Eingabe bitte: ");
scanf("%d",&eingabe);
//printf("%d", eingabe);
data = eingabe;
if(data==0) data = STUFE0;
else if(data==1) data = STUFE1;
else if(data==2) data = STUFE2;
else if(data==3) data = STUFE3;
else if(data==4) data = STUFE4;
else if(data==5) data = STUFE5;
else if(data==6) data = STUFE6;
else if(data==7) data = STUFE7;
else if(data==8) data = STUFE8;
else if(data==9) data = STUFE9;
else if(data==11) return 0;
else {
printf("Falsche Eingabe!\n");
data = STUFE0;}
write_mcp23017(expander, GPIOA, data);
delay(1000);
}
/*while(1)
{
write_mcp23017(expander,GPIOA,data);
//write_mcp23017(expander,GPIOB,data);
}*/
return 0;
}
Alles anzeigen
Die GPIOs sind an folgender 8 Chan Rel. Karte angeschlossen, diese wird über VCC mit den 3,3V des Raspberrys und über JD-VCC extern mit einem Netzteil wahlweise mit 3,3/5V gespeist:
Saintsmar 8 Channel Relay
Soweit, so gut. Ich kann die einzelnen GPIOs auch schalten!
Allerdings verabschiedet sich der MCP nach einigen Sekunden und verschwindet von der Bildfläche!
pi@TestbBerryPi ~ $ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Er taucht erst wieder auf wenn ich die 3,3V für einige Sekunden vom Breadboard nehme.
Gemessen am 3,3V Ausgang des Pis wurden ~3,3mA.
Ansonsten ist nur ein Edimax WLAN Stick am Raspberry Pi angeschlossen.
Jemand eine Idee woran es liegen könnte?
Wackelkontakte schließe ich aus, es findet keinerlei Bewegung der Kabel statt!
Hatte schon überlegt ob sich der MCP automatisch in einen sleep mode setzt o.ä., hab allerdings nichts dergleichen im Datenblatt entdecken können.
Vielen Dank im Voraus
Fleusi