Jump to content

lowfreq

Members
  • Posts

    18
  • Joined

  • Last visited

    Never

Everything posted by lowfreq

  1. Hi Thorsten Sorry für die späte Antwort, ich war die ganze Zeit dabei, den Controller an meine Applikationen anzupassen;) Wenn du bei meinem Foto der Platine ganz unten links bei der RCLK-Leitung genau hinschaust, siehst du sogar die haarfeine Verbindung zwischen RCLK und Ground! Ziehe einfache vom Mittelpunkt des linken unteren Bohrloches eine 45° Gerade in Richtung RCLK und genau da ist der Ätzfehler. Grüße Joscha
  2. So das Problem hat sich erledigt! Ich hatte nochmal einen Durchgangstest gemacht und festgestellt, dass die RCLK und die Ground Leitung einen Kurzen hatten. Daraufhin bin ich mal mit einer Lupe über die Platine und da war eine Haarfeine Verbindung zwischen den Leitungen. Sah aus wie ein Fehler beim Ätzen der Platine, war auf jeden Fall kein Lötzinn!! Aber mit blosem Auge so gut wie gar nicht zu sehen. Jetzt funktioniert alles einwandfrei, JUHUUU! Vielen vielen Dank nochmals für deine geduldige Hilfe und dein tolles Projekt, das mir den Bau eines individuellen Midi-Controller ermöglicht hat ;D ;D ;D ;D Grüße Joscha PS: Ich werde den dokumentierten Bau meines Controllers demnächst unter http://lowfrequ.lo.funpic.de/wissen.php ins Netz stellen...
  3. Hi Thorsten Ich habe jetzt das zweite Dout Modul angeschlossen bis auf RCLK und es funktioniert! Daraufhin habe ich nochmal die Platine untersucht und alles, was irgendwie nach Kurzschluss aussah (das war aber alles nur Flußmittel, soweit ich das erkennen konnte) mit einer Pinzette vorsichtig weggekratzt, mit besonderem Augenmerk auf die RCLK Leitung. Ich hab auch mal ein stärkeres Netzteil angeschlossen, allerdings bleibt alles beim alten, sobald ich die RCLK Leitung wieder anlöte...
  4. Hi Ich habe zuerst nur den ersten Dout angeschlossen und es lief alles einwandfrei. Die Buttons 1-64 funktionieren einwandfrei und auch die LEDs verhalten sich wie gewünscht. Sobald ich den zweiten Dout anschliesse gehen weder die Buttons, noch die LEDs (bis auf button nr. 7, altes problem). Ich habe nacheinander die vier 74HC595 entfernt und das Problem besteht weiterhin... Hier ist ein Foto der Platine: http://lowfrequ.lo.funpic.de/midi/dout1.jpg An meinem Netzteil kann das nicht liegen, oder? Ich verwende eines mit 300mA... sollte doch eigentlich reichen Grüße Joscha
  5. So, ich habe die Dout Platinen nochmals überprüft, aber ich finde da keinen Kurzen:(
  6. Ich hab jetzt erst mal die Dout module komplett vom Core entfernt. Bei einer Durchgangsprüfung an SC und RC an den Din-Modulen habe ich Verbindung wie vermutet... Allerdings funktionieren die Taster jetzt einwandfrei! Der Fehler muss also bei den Dout-Modulen zu finden sein... Aber da kann ich keine Kurzschlüsse entdecken.
  7. Hi nochmal Danke erstmal für deine schnelle Antwort! Ich habe jetzt den interconnection test durchgeführt: -> d0 funktioniert bei rc und sc erhalte ich genau 0 volt. Da scheint also der Haken zu sein. Ich werde nochmals nach Kurzschlüssen Ausschau halten. Grüße Joscha
  8. Hi Thorsten Ich hab die beiden Leitungen getestet, da ist kein Kurzschluss... Ich hab auch sonst verzweifelt nach Fehlern gesucht aber nichts gefunden. Welche main.asm meinst du? Mit dem MIOS Studio (Debug Interface) hab ich nochmal testweise versucht ein paar LEDs zu aktivieren, aber auch da tut sich gar nichts... Was mir bei dem ominösen Button Nr. 7 aufgefallen ist: wenn ich in der main.c die Anzahl der Register z.b. von 8 auf 16 erhöhe, werden nicht nur 64 Befehle sondern 128 Befehle parallel gesendet, obwohl ja nur 8 Register angeschlossen sind.
  9. Ich hab die Sache mit den massenhaften MIDI-Sends mal überprüft: Nur bei Aktivierung von Button 7 werden für ALLE Buttons, welche getrennt sind (5 Volt am SR), die entsprechenden MIDI-Befehle auf einmal gesendet. Ich habe mal alle Buttons manuell getrennt und dann werden alle 64 Befehle gleichzeitig gesandt! Was ist hier los ???
  10. Noch eine Frage: kann man die Weiterleitung eines Signalpegels an den Core mit Hilfe eines Multimeters messen? Falls ja an welchem PIN? Dann könnte ich die Fehlerquelle weiter einschränken, da die DIN/DOUT Module zu funktionieren scheinen...
  11. So, mein Controller ist jetzt fertig! Er besteht aus 32 Potis und 64 Tastern mit zugehörigen LEDs. Ich habe nun das MIOS und mein Programm erfolgreich installiert. Die Potis funktionieren einwandfrei, allerdings habe ich ein Problem mit den Tastern und den LEDs: Bei Druck auf die Taster passiert erst einmal gar nichts... Ich empfange weder ein Midi-Signal, noch wird irgendeine LED aktiviert. Wenn ich viele Taster hintereinander betätige, werden plötzlich alle Aktivierungen per Midi auf einmal übertragen (Aufstauung der Befehle??). Die LEDs werden immer noch nicht gesetzt. Was mir leider erst im Nachhinein aufgefallen ist: Ich habe Taster in Schalterform verbaut (Aktivierung -> Wechsel der Spannung, beim Loslassen allerdings nicht zurück). Das sollte technisch gesehen allerdings kein Problem sein, oder? Die Funktion "DIN_NotifyToggle" sollte ja trotzdem aufgerufen werden. Ich habe nochmal alles mit einem Multimeter ausgemessen. Die Buttons reagieren einwandfrei... mittlerweile komme ich nicht mehr weiter mit diesem Problem:( Über Hilfe würde ich mich sehr freuen!! Ich sende nochmal meinen gesamten C-Quellcode mit, vielleicht steckt da ja der Wurm drin /* * MIOS SDCC Wrapper * * ========================================================================== * * Copyright (C) <year> <name> (<email>) * Licensed for personal non-commercial use only. * All other rights reserved. * * ========================================================================== */ #include "cmios.h" #include "pic18f452.h" // Belegung der Potis (127 Werte, Course) const unsigned char pot_event_map[32][2] = { // Pot 1..16 send CC#0x11 (General Purpose Slider1) over MIDI Channel #1..16 {0xb0, 0x5b}, {0xb1, 0x5b}, {0xb2, 0x5b}, {0xb3, 0x5b}, {0xb0, 0x11}, {0xb1, 0x11}, {0xb2, 0x11}, {0xb3, 0x11}, {0xb4, 0x11}, {0xb5, 0x11}, {0xb6, 0x11}, {0xb7, 0x11}, {0xb8, 0x11}, {0xb9, 0x11}, {0xba, 0x11}, {0xbb, 0x11}, {0xbc, 0x11}, {0xbd, 0x11}, {0xbe, 0x11}, {0xbf, 0x11}, // Pot 17..32 send CC#0x12 (General Purpose Slider2) over MIDI Channel #1..16 {0xb0, 0x12}, {0xb1, 0x12}, {0xb2, 0x12}, {0xb3, 0x12}, {0xb4, 0x12}, {0xb5, 0x12}, {0xb6, 0x12}, {0xb7, 0x12}, {0xb8, 0x12}, {0xb9, 0x12}, {0xba, 0x12}, {0xbb, 0x12}, {0xbc, 0x12}, {0xbd, 0x12}, {0xbe, 0x12}, {0xbf, 0x12}, }; ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS after startup to initialize the // application ///////////////////////////////////////////////////////////////////////////// void Init(void) __wparam { MIOS_SRIO_UpdateFrqSet(1); // set shift register update frequency (ms) MIOS_AIN_NumberSet(32); // 32 pots are connected MIOS_AIN_Muxed(); // the AINX4 modules are used MIOS_AIN_DeadbandSet(7); // should be 7 when 7bit resolution is used MIOS_SRIO_NumberSet(8); // set IO shift registers for 64 pins MIOS_SRIO_DebounceSet(10); // debouncing value for DINs } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS in the mainloop when nothing else is to do ///////////////////////////////////////////////////////////////////////////// void Tick(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is periodically called by MIOS. The frequency has to be // initialized with MIOS_Timer_Set ///////////////////////////////////////////////////////////////////////////// void Timer(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when the display content should be // initialized. Thats the case during startup and after a temporary message // has been printed on the screen ///////////////////////////////////////////////////////////////////////////// void DISPLAY_Init(void) __wparam { MIOS_LCD_Clear(); MIOS_LCD_CursorSet(0x00); MIOS_LCD_PrintCString("Hello World!"); } ///////////////////////////////////////////////////////////////////////////// // This function is called in the mainloop when no temporary message is shown // on screen. Print the realtime messages here ///////////////////////////////////////////////////////////////////////////// void DISPLAY_Tick(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a complete MIDI event has been received ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyReceivedEvnt(unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI event has been received // which has been specified in the MIOS_MPROC_EVENT_TABLE ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyFoundEvent(unsigned entry, unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI event has not been completly // received within 2 seconds ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyTimeout(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI byte has been received ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyReceivedByte(unsigned char byte) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS before the shift register are loaded ///////////////////////////////////////////////////////////////////////////// void SR_Service_Prepare(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS after the shift register have been loaded ///////////////////////////////////////////////////////////////////////////// void SR_Service_Finish(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when an button has been toggled // pin_value is 1 when button released, and 0 when button pressed ///////////////////////////////////////////////////////////////////////////// void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam { // Midi Events senden MIOS_MIDI_TxBufferPut(0x90); // Note Event at channel #1 MIOS_MIDI_TxBufferPut(pin); // just forward the pin number (0..127) MIOS_MIDI_TxBufferPut(0x7f); // Velocity = 0x7f when button pressed // verknüpfte Buttons 1-32 (von 0 ab gezählt) if(pin < 32) { MIOS_DOUT_SRSet(0, 0x00); //löschen der ersten 32 LEDs (von 0 ab gezählt) MIOS_DOUT_SRSet(1, 0x00); MIOS_DOUT_SRSet(2, 0x00); MIOS_DOUT_SRSet(3, 0x00); MIOS_DOUT_PinSet1(pin); //Setzen der zugehörigen LED } // die übrigen Buttons toggeln die LEDs else { if(MIOS_DOUT_PinGet(pin)==0) // LED aus -> LED an MIOS_DOUT_PinSet1(pin); else // LED an -> LED aus MIOS_DOUT_PinSet0(pin); } } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when an encoder has been moved // incrementer is positive when encoder has been turned clockwise, else // it is negative ///////////////////////////////////////////////////////////////////////////// void ENC_NotifyChange(unsigned char encoder, char incrementer) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a pot has been moved ///////////////////////////////////////////////////////////////////////////// void AIN_NotifyChange(unsigned char pin, unsigned int pin_value) __wparam { MIOS_MIDI_TxBufferPut(pot_event_map[pin][0]); // first value from table MIOS_MIDI_TxBufferPut(pot_event_map[pin][1]); // second value from table MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin)); // 7bit pot value } Grüße Joscha
  12. Danke Leute hat sich erledigt: Ich hab die falsche Hex-File verwendet :P Mit der mios_v1_9_pic18f452.hex gings dann!
  13. Ich hab den PIC bei Mike gekauft und der ist vorgebrannt (macht er ja immer)... sonst würden ja auch keine requests kommen, oder?
  14. Hallo Mein Controller ist soweit am laufen, Upload-Requests erscheinen. Beim Upload des MIOS erhalte ich folgende Fehlermeldung: Sending block 00000000-000000FF Received error code 05: Write access failed (invalid address range) - used by 1st level bsl Aborting after 3 errors Meine Vermutung: der Bankstick wird für die Istallation des MIOS benötigt? (ich hab keinen installiert;) Grüße Joscha
  15. Danke Raphael! Ich hab das Ganze jetzt in C gemacht. Meine Lösung sieht folgendermaßen aus: void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam { if(pin_value==0x00) //nur beim Herunterdrücken der Taster reagieren { // Midi Events senden MIOS_MIDI_TxBufferPut(0x90); // Note Event at channel #1 MIOS_MIDI_TxBufferPut(pin); // just forward the pin number (0..127) MIOS_MIDI_TxBufferPut(0x7f); // Velocity = 0x7f when button pressed // verknüpfte Buttons 1-32 if(pin < 33) { MIOS_DOUT_SRSet(1, 0x00); //löschen der ersten 32 LEDs MIOS_DOUT_SRSet(2, 0x00); MIOS_DOUT_SRSet(3, 0x00); MIOS_DOUT_SRSet(4, 0x00); MIOS_DOUT_PinSet1(pin); //Setzen der zugehörigen LED } // die übrigen Buttons toggeln die LEDs else { if(MIOS_DOUT_PinGet(pin)==0) // LED aus -> LED an MIOS_DOUT_PinSet1(pin); else // LED an -> LED aus MIOS_DOUT_PinSet0(pin); } } } Compilieren tuts schon mal, aber ich habs noch nicht getestet, da mein Controller noch nicht ganz fertig ist... Frage: Stimmt meine Zählweise bei den Buttons + LEDs und den Registern ??? (pin von 1 ab und die Shift-Register bei MIOS_DOUT_SRSet auch ab 1) Grüße Joscha
  16. Hallo nochmal Den optimierten Assembler-Code will ich mir eher nicht reinziehen:) Aber da gibts doch eine Variante nur mit 64 Reglern und bis zu 128 Buttons und LEDs... Mehr will ich ja eigentlich nicht. Da könnte man doch am Ende der Funktion USER_DIN_NotifyToggle die entsprechenden Abfragen viel leichter einbauen, oder? Gibts eigentlich eine Funktionsreferenz für die Assembler-Befehle?? Ich hab mir mal die Datenblätter des PIC18F452 gesaugt, aber da fehlen viele Befehle...
  17. Ok, gut das das Ganze zu programmieren ist... Aber ein kleiner Wink in die richtige Richtung wäre nicht schlecht :-\ Ich vermute mal das ich die Funktion der entsprechenden Buttons und der zugehörigen LEDs in der main.asm oder in der mb64_leds.inc ändern muss ???
  18. Hallo zusammen erstmal vorweg: Ich bin ziemlicher Newbie auf dem Gebiet Midibox... Ich will mir einen Midi Controller mit 32 Reglern und 64 Tastern mit LEDs bauen. Komponenten etc. ist soweit alles klar. Meine Frage: Ist es möglich die LEDs mehrerer Taster (z.B.: Taster1 - Taster10) in folgender Art zu verknüpfen? ??? - wenn Taster_x gedrückt wird leuchtet die zugehörige LED ganz normal auf - wenn nun irgendeine andere Taste aktiv wird, soll die LED von Taster_x deaktiviert werden und die LED der gerade aktivierten Taste leuchten. -> Es soll also immer nur eine LED für die Tasten 1-10 aktiv sein -> die gerade aktivierte Taste schaltet und aktiviert die LED und deaktiviert alle anderen LEDs OHNE die anderen Buttons zu deaktivieren/betätigen
×
×
  • Create New...