Jump to content

MPLAB project


jerash
 Share

Recommended Posts

salut,

je me lance dans la fabrication d'un midifilter (projet qui semble tomber dans les oublittes de midibox...) pour interfacer un pédalier midi sur un sampler, et en suivant la procédure décrite par thorsten, je tombe sur un os :

"open the .pjt file" > mon mplab v7.10 ne peut pas ouvrir ce type de fichier environnement ... il ne peut que ouvrir un .mcp

Avez-vous une idée du pourquoi ? et du comment y  remédier ? en installant une version antérieure ?

J'ai essayé en ouvrant tout les .asm et .inc et lancer la compil à la main, et le Build fail avec ce message :

Clean: Deleting intermediary and output files.

Clean: Done.

Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F877 "main.asm" /l"main.lst" /e"main.err" /o"main.o"

Skipping link step.  The project contains no linker script.

BUILD FAILED: Thu Sep 15 04:37:07 2005

Etant donné que je ne suis pas très familier avec la programmation (juste assez pour modifier les quelques lignes nécessaires à mon projet), je ne sais pas comment utiliser le "linker script"

Quelqu'un peut-il m'aiguiller vers la sortie ?

merci, Raf.

Link to comment
Share on other sites

Quelle nuit !

finalement j'installe la version 6.10 et :

Deleting intermediary files... done.

Executing: "C:\Program Files\MPLAB IDE\MCHIP_Tools\mpasmwin.exe" /q /p16F877 "main.asm" /l"main.lst" /e"main.err"

Loaded Z:\_Projects\Project DIY\Midi Filter box\filter_v1.4\filter_v1.4\main.COD

BUILD SUCCEEDED

Extraordinaire !

reste à modifier les quelques lignes... je reviendrai surement vous demander un coup de main

vive le diy !

RAF

Link to comment
Share on other sites

On y vient !

Il me manque juste de quoi faire correctement une soustraction (ou un opération donna tle même résultat)

Le but étant de tranformer un message Program Change en message Note On

Voilà comment j'ai modifié le fichier proc.inc dans la partie concernée :

PROC_ReceivedCn

	;; branch when PC number is 0x01
	movf	MIDI_LASTEVENT2, W
	xorlw	0x01
	bz	PROC_ReceivedCn01


PROC_ReceivedCn01
  ;génération du message note on et midi channel identique
	movf	MIDI_LASTEVENT0, W	;récupère le message PC
	?????????????		;Soustraire 0x30 pour transformer PC en Noteon
	call	MIDI_SendByte	;en gardant le canal midi
  ;génération du note number
	movf	MIDI_LASTEVENT2, W	;récupère le program number
	addlw	0x23		;Ajouter 0x23 au program number (voir table)
	call	MIDI_SendByte
  ;génération de la vélocité
	movlw	0xFF		;vélocité max 0XFF par défaut
	call	MIDI_SendByte
  ;transformation terminée
	return

Le seul point noire c'est la ligne avec les ????????? : Soustraire 0x30 du registre W pour transformer PC en Noteon

Cn <> 1100 nnnn (message program change sur canal midi 'n')

9n <> 1001 nnnn (message note on sur canal midi 'n')

Cette "soustraction" est surement possible par le truchement de quelques AND, XOR, OR .... pour éviter l'utilisation de SUBWF ou autre

(...après qq minutes de bataillage...)

Il semblerait que ca fonctionne en utilisant : XORLW 0x50

ca  inverse les 2 bits qui font la différence entre le Cn et le 9n sans changer les nnnn .... ca a l'air bon

on va dire que c'est bon, je suis content de vous avoir tenu au courant de mes tribulations

Reste à voir s'il ne sera pas nécessaire d'envoyer un message note off ensuite, ce qui est une autre histoire !

RAF

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...