Bei meinem Midi Controller Bastel Projekt empfängt ein ATMega32A Midi Daten. Ein ESP8266 (in Form eines ESP12 Moduls) soll den Midi Eingang abkoppeln können, um selbst ungestört Daten an den ATMega32A schicken zu können. Im Schaltplanausschnitt übernimmt diese Aufgabe der Transistor Q6, von GPIO5 angesteuert. Setzt GPIO5 den Emmiter von Q6 auf high, dann kann Q6 nicht durchschalten und das Midi Eingangssignal ist blockiert. Ist GPIO5 jedoch low, dann kann Q6 MIDI_IN auf low ziehen und Mididaten kommen durch. Das war die Idee. In der Praxis schaffe ich es irgendwie nicht den ESP dazu zu überreden GPIO5 ordentlich auf low zu ziehen. Bei high liegen erwartungsgemäß 3.3V an, aber bei low dümpelt GPIO5 irgendwo bei halbherzigen 1.7V rum. Ziehe ich den ESP aus seinem Sockel und schließe GPIO5 mit einer Drahtbrücke gegen Masse, funktioniert die Schaltung wie gewünscht. Durch die Drahtbrücke messe ich dann ein Strömchen von 0.58mA. Im Datenblatt http://espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf ist Imax für GPIOs mit 12mA angegeben. Kann nicht sein, dass der ESP mit der Last überfordert ist. Fühlt sich irgendwie eher so an, als hätte ich GPIO5 mit internem Pulldown als Eingang konfiguriert oder sowas. Anbei ein minimales Progrämmchen (für nonos sdk), das zeigt, wie ich GPIO5 zu initialisieren versuche. Siehst Du in der Soft- (oder Hardware), wo ich Fehler mache?
Für mich liest sich das so, als ob du den Pin als Ausgang konfigurieren musst. Allerdings sieht dein Code meiner Meinung nach Ok aus. Es önnte der Low-Side Transistor des GPIO Pins defekt sein. Du könntest zur Probe mal auf GPIO4 wechseln.
Stefan U. schrieb: > Für mich liest sich das so, als ob der Low-Side Transistor des > GPIO Pins > defekt sei. Du könntest zur Probe mal auf GPIO4 wechseln. Guter Tip! Das habe ich sogar tatsächlich schon versucht. Sogar das komplette ESP12 Modul hatte ich getauscht. Leider ohne Erfolg. Hoffentlich habe ich jetzt nicht gleich zwei ESP12 mit je 2 kaputten GPIOs erzeugt...
Also für mich sieht es so aus, als ob GPIO5 mit TXD(ESP) über Q6 kurzgeschlossen wird.
Tadaaa, genau das war's! Danke! Ich muss natürlich erst TX deaktivieren, also als Eingang schalten, wenn ich externen Midi Empfang erlauben möchte!
1 | void midi_in_enable(const uint8_t enable) { |
2 | if (enable) { |
3 | // If we don't disable our transmission we might short circuit GPIO01 and GPIO5
|
4 | PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_GPIO1); |
5 | GPIO_DIS_OUTPUT(FUNC_GPIO1); |
6 | |
7 | // connect emittor with gnd -> midi in jack is enabled.
|
8 | GPIO_OUTPUT_SET((MIDI_IN_DISABLE_PIN), 0); |
9 | } else { |
10 | GPIO_OUTPUT_SET((MIDI_IN_DISABLE_PIN), 1); |
11 | |
12 | // reenable tx
|
13 | PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_U0TXD); |
14 | }
|
15 | }
|
Solved!
> Also für mich sieht es so aus, als ob GPIO5 mit TXD(ESP) über Q6 > kurzgeschlossen wird. Ich nehme mal an daß TxD deaktiviert ist, sonst würden da mehr als 0.58mA fließen.
Stefan U. schrieb: > Ich nehme mal an daß TxD deaktiviert ist, sonst würden da mehr als > 0.58mA fließen. Bei meiner Messung war der gesamte ESP aus dem Sockel gezogen, somit konnte TX sich auch nicht mit GPIO5 kloppen.
Aha, dann nimm mal den TxD Pin unter die Lupe. Vielleicht musst du ihn vorher deaktivieren oder auf Low schalten.
Ja, genau das muss ich machen. Wir haben vermutlich gleichzeitig gepostet und Du hast noch nicht gesehen, dass ich unmittelbar vorher schon korrigierten Code gesendet hatte. Damit funktioniert es schon mal grundsätzlich. Vielen Dank für die Mühe und Hilfe!
> Du hast noch nicht gesehen, dass ich unmittelbar vorher > schon korrigierten Code gesendet hatte Stimmt, hat sich zeitlich überlappt.
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.