Hi Thorsten und alle anderen!
Mühsam ernährt sich das Eichhörnchen…
Stand:
Endlich Maincore mit zwei PICs fertig.
D.h. erstmal der letzte PIC in der Kette montiert.
An ihm hängen u.U. die zwei Displays.
Hat sich einfach als günstig erwiesen. Ohne Display zu debuggen ist horror…
Gestern tadellos hochgefahren bis zum “READY”. ![]()
Natürlich wieder von Freundin eingeweiht da temporär auf Fussboden abgelegt…diesmal musste aber nur der Versorgungsstecker dran glauben, letztens wars ein 25Euro Motorfader. ![]()
Allerdings gibts ein klitzekleines Problem mit der Anzeige Software. Ich denke es ist nichts kritisches, aber ich frage halt mal parallel.
Codeschnipsel:
TMB_UI_DISPLAY
;clear screen
call MIOS_LCD_Clear
;group in first line
TABLE_ADDR TEXT_GROUP
call MIOS_LCD_PrintString
movf TMB_CURRENT_GROUP, W, BANKED
call MIOS_LCD_PrintBCD1
;@todo: group name
;bank in second line
movlw 0x40
call MIOS_LCD_CursorSet
TABLE_ADDR TEXT_BANK
call MIOS_LCD_PrintString
movf TMB_CURRENT_BANK, W, BANKED
call MIOS_LCD_PrintBCD1
;@todo: bank name
;last moved fader/poti/button
;a fader is a motorized poti…
movlw 0x80
call MIOS_LCD_CursorSet
TABLE_ADDR TEXT_FADER
call MIOS_LCD_PrintString
movf TMB_CURRENT_BANK, W, BANKED
call MIOS_LCD_PrintBCD1
;@todo: switch between faders/poti/button
; getting their names or printing its number
;last sent or recieved midi-event
movlw 0xC0
call MIOS_LCD_CursorSet
TABLE_ADDR TEXT_BUTTON
call MIOS_LCD_PrintString
movf TMB_CURRENT_BANK, W, BANKED
call MIOS_LCD_PrintBCD1
;@todo: use the last midi event
; not this dummy here
return
Aufgerufen wird die Funktion in main.asm in den User_Display Funktionen:
;; --------------------------------------------------------------------------
;; 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
;; --------------------------------------------------------------------------
USER_DISPLAY_Init
goto TMB_UI_DISPLAY
;; --------------------------------------------------------------------------
;; This function is called in the mainloop when no temporary message is shown
;; on screen. Print the realtime messages here
;; --------------------------------------------------------------------------
USER_DISPLAY_Tick
goto TMB_UI_DISPLAY
Also eigl. simpel. Nur der Effekt ist nicht, dass alle vier Displayzeilen belegt werden, sondern immer nur in der ersten geschrieben wird. Es blinkt halt fröhlich wenn “BANK”, “GROUP”, “FADER” etc. nacheinander in der ersten Zeile des ersten Displays erscheinen. Nach der Doku und den Beispielanwendungen und den MIOS Sourcen sollte es doch so funktionieren.
Wo habe ich was übersehen?