Jump to content

Black Knight

Profi
  • Content Count

    837
  • Joined

  • Last visited

About Black Knight

  • Rank
    Gold Mitglied

Previous Fields

  • Ligalogo
    Liga-Rhein-Wupper

Contact Methods

  • Website URL
    http://

Profile Information

  • Gender
    Not Telling
  • Location
    Solingen

Recent Profile Visitors

729 profile views
  1. Ja genau, das meinte ich. Ich wollte zwar, dass der APC die Anzahl der Bytes schickt die er im Sendepuffer hat, aber du hast Recht; es macht mehr Sinn den APC die Anzahl der empfangenen Bytes bestätigen zu lassen. Ja, lass uns mal mit 1ms starten. Ich rechne sowieso damit, dass dieser Mechanismus nur nach Soundkommandos zum Einsatz kommen wird. Ansonsten ist der APC vermutlich schnell genug. Dann sähe unsere initiale Kommunikation also wie folgt aus: Lisy: 0x00 APC: 0x00 falls der Befehl noch nicht komplett verarbeitet wurde, ansonsten APC: 0x01 (Bestätigung des emp
  2. Ja, genau. Der Kommentar dazu ist Revert to 'Sel14 added for HW_ext'.
  3. Ja, das ist auch meine Befürchtung. Das könnte bei Sound Kommandos Probleme geben, denn das Öffnen eines Files kann da wohl leicht 10ms und mehr dauern. Aber lass es uns probieren, vielleicht haben wir ja Glück. Übrigens ... mit deiner geänderten getDIPfromAPC und meiner ursprünglichen Version 'Sel14 added for HW_ext' funktioniert es jetzt einwandfrei 🤪 Aber ich bin auch der Meinung, dass wir es durch eine Synchronisierung stabiler machen können. Ja, langsam nervt's. Ich hatte ja auch gehofft, dass wir uns bald mal in Volleys Halle treffen könnten aber das wird ja wo
  4. Ja, die Arduino IDE ist leider ziemlich rudimentär. Ich persönlich nutze ein Arduino Plug-In für Eclipse und bin damit sehr zufrieden. Wenn du Eclipse noch nicht kennst wird das etwas Eingewöhnungszeit brauchen, aber das ist eine professionelle IDE, die jede Menge nützliche Funktionen bietet. Allein der eingebaute Debugger ist den Einstiegsärger wert und hat mich schon so manch hartnäckigen Fehler finden lassen. Anhalten ist nicht möglich, da du dann dein ganzes Programm anhalten würdest und du willst ja, dass z.B. Lichteffekte u.ä. weiter laufen. Aber mit deinem Timer bist du auf dem
  5. Da das Problem etwas umfangreicher und die Antwort daher auch etwas länglich geworden ist, habe ich sie jetzt in den APC 3.0 thread geschrieben, wo sie ja auch eigentlich hin gehört.
  6. Habe mich mal ein bisschen mit unseren I2C Problemen beschäftigt und sehe die Sache wie folgt: Wenn der Master eine Antwort des Slave anfordert, dann muss dieser normalerweise sofort antworten. Daher ruft die Arduino I2C Library in diesem Fall eine Interruptroutine auf, innerhalb derer die Antwort geschrieben werden muss. Das ist ziemlich blöd für mich, da meine APC SW ja noch einigen anderen Kram zu tun hat und die Antwort daher möglicherweise ein paar µs länger braucht. Eigentlich hatte ich gehofft, dass die Library das sogenannte 'Clock Stretching' nutzen würde - dann blockiert d
  7. Ich habe Lisy jetzt übrigens über SSH im Flipper am laufen und lasse gerade dein getDIPfromAPC laufen. Ich melde mich, wenn es was Neues gibt.
  8. Ja, der Default steht wieder auf USB. Ich habe ihn jetzt mal auf I2C gestellt und auch den Seriell Monitor eingeschaltet. Du kannst es ja nochmal probieren, aber wenn das auch nicht klappt, dann muss ich das irgendwie selbst testen. Mein Problem ist, dass sich die Wire Library wohl nicht so verhält, wie ich das erwarten würde. Leider ist die Doku dazu lausig und der Code undokumentiert, so dass ich nur herumprobieren kann.
  9. Muss mich korrigieren: Die Under-Voltage Meldung ist mit dem stärkeren Netzgerät tatsächlich weg, stattdessen erscheint ein Lisy Login. In beiden Fällen blinkt allerdings die gelbe LED und das war's.
  10. Ich habe meinen Pi3B+ übrigens mal an einen Monitor gehängt. Er bootet scheinbar normal, bis irgendwann der Lisy Fehler 'Under-Voltage detected' erscheint - dann bleibt das Ding stehen. Auch ein stärkeres Netzgerät ändert daran übrigens nichts.
  11. Das heisst, der Puffer läuft ab und zu leer. Ich glaube zu wissen, was da schief läuft und habe mal eine neue Version nach Github geschrieben. Versuch die doch bitte mal.
  12. Da wird die Bitrate nicht stimmen. In dem Fenster des seriellen Monitors kann man die unten einstellen, das müssen 115200Bd sein.
  13. In I2C_transmit in USBcontrol.ino werden die Bytes gesendet, wenn der Master sie anfordert (onRequest). Wenn der Master mehr Bytes anfordert, als im Transmit-Puffer stehen, dann gibt es eine Fehlermeldung auf den Displays, die du jetzt natürlich nicht siehst. Die gleiche Fehlermeldung wird allerdings auch über den seriellen Anschluss ausgegeben, d.h. wenn du bei deiner Arduino IDE den seriellen Monitor einschaltest (der Button oben rechts in der Ecke), dann solltest du diese Meldungen sehen können. Wenn dann ein 'Error 40' auftaucht, dann wissen wir, dass der Transmit-Puffer leer läuft.
  14. Versuch doch mal in USB_defaults einen anderen Wert als Null für die DIP-Switches zu nehmen, z.B. mit const byte USB_defaults[64] = {0,0,45,46,47,0,0,0, // game default settings Dann wüssten wir, ob der 0x40 Lesebefehl überhaupt funktioniert oder ob einfach nur Nullen zurück kommen.
  15. OK. Ansonsten könntest du mal versuchen, den ersten IF in I2C_transmit() raus zu nehmen void I2C_transmit() { // send a byte on master request (I2C) if (APC_settings[ConnType] == 1 && APC_settings[ActiveGame] == 3) { // I2C selected and USBcontrol active? if (USB_I2C_TxReadPointer == USB_I2C_TxWritePointer) { // no data in buffer ErrorHandler(40,0,USB_I2C_TxReadPointer);} Wire1.write(USB_I2C_TxBuffer[USB_I2C_TxReadPointer]); // send byte USB_I2C_TxReadPointer++; // increase buffer pointer if (USB_I2C_TxReadPoi
×
×
  • Create New...

Important Information

Privacy Policy and Community Guidelines