Jump to content

baptistou

Programmer
  • Posts

    54
  • Joined

  • Last visited

Everything posted by baptistou

  1. Thanks guys, as a newbie I do agree to say that warnings are definitely useful: they teach you how to code properly! Best regards, Baptistou
  2. I agree I could easily add a function converting strings to hexadecimals. I didn't take care before today that u8 was unsigned while char is, but I don't understand why I didn't have any warning before updating my SVN folder. Anyways, how do I pass an unsigned variable to a function requiring a signed one?
  3. Hi nILS, I'm using strtol as it handles hexadecimal values, and my checksum are hexadecimal. I can't see why strtol has changed its behaviour from between the two version of the SVN folder. Also, now that I modified the other files of my project (and the compiler had to rebuild the .o files), I have this error with the function strncpy also everywhere. Has something changed in the declaration of the "u8" "u16" etc. ? It looks like "u8" are not equal to "char" anymore... Baptistou
  4. Hi all there, I've been using strtol function for a while in my program without any error. I updated the SVN repository folder on my computer this morning, and now without having changed anything from my program, everytime I compile I get: Creating object file for sentinel.c sentinel.c: In function 'Sentinel_ValidateChecksum': sentinel.c:222: warning: pointer targets in passing argument 1 of 'strtol' differ in signedness Any clue of what's happening in there? Here is the part of my sentinel.c causing these warnings: ///////////////////////////////////////////////////////////////////////////// // this takes a string, and validates it againts the checksum // at the end if the string. // returns 1 checksum OK -1 bad checksum -2 checksum not found in string ///////////////////////////////////////////////////////////////////////////// s8 Sentinel_ValidateChecksum(u8 *strPtr,u32 len) { u8 calculatedChecksum; u8 writtenChecksum[3]; char *next; u8 readChecksum; u8 c; u32 p; calculatedChecksum = Sentinel_GenerateChecksum(strPtr, len); p = 0; c = 0x00; while ((c != '*') && (p < len)) { c = strPtr[p]; p++; } if (p > len - 2) { //DEBUG_MSG("nmea_validateChecksum p > len -2"); return -2; } writtenChecksum[0] = strPtr[p]; writtenChecksum[1] = strPtr[p+1]; writtenChecksum[2] = 0x00; readChecksum = strtol(writtenChecksum, &next, 16); if (readChecksum == calculatedChecksum) { //DEBUG_MSG("nmea_validateChecksum checksum OK"); return 1; } //DEBUG_MSG("S-- wrong checksum (read %x calculated %x)\n", readChecksum, calculatedChecksum); //DEBUG_MSG("%s \n", strPtr); return -1; }
  5. Hi again, I've been having little troubles with the com interface and windows XP. I just downloaded the com_console example to my core32, and when I plug it to a winXP computer through USB windows just doesn't recognise the hardware (which can be seen in the device manager as unknown device). I've installed ftdi and prolific usb to com drivers but nothing has changed. What kind of driver should I give to windows XP and where could I find them? Best regards Baptistou
  6. Thorsten, once again I'm quite impressed by your responsiveness! Thanks for your support. Best regards Baptistou
  7. Hi Thorsten, Do you mean that you can use up to 8 USB midi ports but that won't work with USB com ports? I'm programming with mac os X and my core will sometimes be plugged to a winXP computer. I already know that I need to disable midi if I plan to use com instead when on winXP. Being able to change the baudrate on the fly would be a plus for me but I'm not in a hurry for that function. For now I compile my program with different parameters and upload the proper one when I need it. Kind regards Baptistou
  8. Hi There, First of all, is there a place where I can find all the variables that can be defined in mios32_config.h? Second question: how do we set up the number of USB ports we want to use? I would like to use 2 or 3 com ports through usb, I guess I first need to put #define MIOS32_USE_USB_COM in the config.h as in the com_console example, but then how do you set up the number of coms? Third one: can we change the baudrate of UART0 and UART1 on the fly while the app is running? Thanks all Baptistou
  9. Thanks guys, I've spend the whole day programming yesterday and couldn't write more smart stuff by the end of the day. This saves me a lot of time! Baptistou
  10. Hi all there, A quite small question: is there a simple way to convert a string into a number? On google I've seen plenty of stuff with the atoi function but it doesn't seem to work with me. I have a string that looks like this: "0xA3" and want to put that A3 hexadecimal value into a u8 number. Anyone can help? Best regards Baptistou
  11. Hi, Most of the time in a swich matrix you apply a voltage on a row and check wich swich is closed in the column (or the opposite). The buttons in a column are all connected to the same input on the electronic system. That way you apply the voltage on one single row at a time, thus selecting wich buttons will be active, you get their state and you go on with the nex row and so on. I doubt that it is as you say one button closes two swiches. I haven't done that with a midibox but I know that many other people do so that must not be that complicated to handle. I don't know if you can go faster than 1ms per row but that should be enough anyways. The functionnality you are looking for is probably "blm" (button led matrix), have a look at the examples for mios8 or mios32. I guess that you'll need to do something to separate your keyboard electronics from the midibox's ones Baptistou
  12. nILS you are quicker than me for pressing post! :thumbsup:
  13. I think it's 12 bits but I haven't tried it yet, I should do that by the end of the week. I think also that as the Core32 is powered by 3.3V the AIN range is from 0 to 3.3v can anybody confirm? Then I heard somewhere that its easy to get jitter (12 bits resolution on a 3.3V range means 0,8 millivolts steps) and to avoid this it's better to uses shielded cables between the pots and the AINs, and between the AIN and the core, or to reduce at maximum the wire distances. Baptistou
  14. Hi, Thanks for the explanation, that's what I expected. I still have a question: if I understand properly the example given by TK, the tasks TASK_LCD1 and TASK_LCD2 will be stopped at line "MUTEX_LCD_TAKE" until the mutex is free. Is there a way to skip some instructions if the mutex is not free rather than wait for it? Baptistou
  15. Hi all! Could anyone here give me a quick explanation on what's a semaphore (I guess it's like a flag?) and how to use it, with a tiny code example? Cheers Baptistou
  16. Le debouncing ça peut se reprogrammer pour s'adapter à un circuit multiplexé. Effectivement cette solution complique le programme mais simplifie l'électronique, si ça peut éviter d'utiliser plusieurs cores. Pour ce qui est de la charge processeur ne t'en fais pas de toutes façon ton application, qui est basique, sera loin de les surcharger quoi qu'il arrive. Si tu optes pour plusieurs Cores, solution effectivement plus simple niveau programmation, tu as plusieurs solutions pour les connecter entre eux: via le port IIC, je n'ai jamais fait alors je ne sais pas ce que ça donne mais d'autres s'en servent pas mal, c'est probablement une bonne solution, ou en connectant les sorties midi des uns sur les entrées midi des autres. Là encore plusieurs solutions: si tu es avec des PICs, tu n'as qu'une entrée et une sortie midi par core. Globalement sur ton système tu vas avoir besoin d'une sortie midi (envoyer les notes à ton ordi) et peut être d'une entrée midi (retour d'info pour le contrôle des leds, optionnel). Dans ce cas tu mets la sortie midi d'un core sur l'entrée midi de l'autre, l'entrée globale de ton système se trouvant d'un côté de la chaîne et la sortie de l'autre côté de la chaîne. Quand je parle de retour d'info, ce n'est pas obligatoire. Pour te donner une idée j'ai une pédale midibox avec des boutons et des leds. Quand j'appuie sur un bouton ça allume par exemple une disto dans le logiciel Ableton Live, et j'allume une led pour montrer qu'elle est en route. Si j'éteinds la disto non pas avec la pédale mais dans Live, sans retour d'info ma led resterait allumée, mais avec le retour d'info je l'éteinds. C'est un petit confort qui rajoute un peu de programmation et qui n'est pas forcément utile à tout le monde. Niveau programme, il faudra que chaque PIC fasse suivre l'info qu'il a en entrée midi sur sa sortie midi (facile à faire). Sauf le premier, celui qui sera l'entrée globale de ton système pour éviter les boucles de message midi (ton ordi envoie un message à sa sortie et le message est transmi à travers toute la chaîne et renvoyé à l'ordi). A ce moment si tu veux avoir un retour d'info sur les leds il faudra qu'elles soient branchées sur ce premier core de la chaîne, pas de problème. Avec des STM32, tu as un port usb + 2 entrées et 2 sorties midi. Tu peux avoir le premier core qui sert d'interface avec soit le port USB soit un couple entrée / sortie midi, l'autre couple servant à le connecter au core suivant et ainsi de suite. Ici pas de risque de boucle midi et tu dois sans doute pouvoir faire exactement le même programme pour les 3 ou 4 cores en réfléchissant un peu, ce qui serait un bon avantage pour l'interchangeabilité, à étudier.
  17. Je n'ai jamais commandé à Mike, mais si les circuits imprimés correspondent aux photos ce sont des plaques jaunes, je ne sais pas quelle est la différence entre les deux (jaunes et vertes) mais d'après mon expérience les jaunes c'est celles que j'obtiens chez moi avec une insolatrice et sont de moins bonne qualité que les vertes que tu as dans les circuits imprimés industriels. Tu trouveras sans doute plus d'infos là dessus sur le web. Les circuits imprimés que j'ai fait moi même sur des plaques jaunes sont clairement de moins bonne qualité et ont une durée de vie plus limités mais sans doute parce que je ne les ai jamais vernies et les pistes s'oxydent. Celles de Smash TV sont d'excellente qualité, par contre bien sûr la douane t'attend au coin de la rue, et peut faire doubler le prix de reviens des kits! Je lui ai acheté un core32, qui m'est revenu à près de 100 euros dont 50 de douane! A mon avis si tu commandes plein de kits d'un coup (core + dins + ains) le prix de la douane devient moins gênant mais honnêtement je ne sais pas exactement comment il est calculé. Sans doute un pourcentage de la valeur + un montant fixe (non négligeable) de sois disant frais de dossier. Pour ce qui est du choix du Core, tu seras sans doute fixé quand tu sauras combien de DINs tu peux mettre sur le STM32. Niveau programmation, je préfère le Core32 parce que la toolchain pour compiler les programmes est plus facile à installer mais je suis sous mac os X, donc gcc est déjà installé avec XCode. Il y a quand même les histoires de serveurs SVN et tout le tralala que j'ai mis du temps à piger. A toi de voir, je ne sais pas ce que ça donne sous windows ou Linux. De toutes façons, si le seul programme que tu veux c'est une touche préssée -> une note midi envoyée sur un canal spécifique, avec aussi certains boutons CC et deux pédales d'expression, ce n'est pas très compliqué comme programme, je peux même t'en faire un. C'est mieux si tu te débrouilles pour le faire toi même parce que je ne pourrai pas le tester avec ta config, mais je peux filer un coup de main. Point de vue électronique, tu peux aussi multiplexer les contacts, en utilisant par exemple quelques DOUT comme broches d'adressage. Comme tu as dû voir, le principe d'un DIN, c'est que pour chaque contact tu mets un côté du contact à la masse et l'autre à l'entrée du 74HC165, qui est reliée au +5v par une résistance. Contact ouvert, on a +5V en entrée du 74HC165, contact fermé on a 0V. Maintenant si au lieu de mettre ton contact à la masse tu le mets sur une sortie DOUT, tu peux choisir de le mettre à la masse, le contact est activé, ou au +5V, le contact sera alors désactivé. Tu peux donc mettre deux ou plusieurs contacts sur une seule entrée DIN et choisir lequel activer en mettant la sortie DOUT correspondante à 0v. Avec ce principe si tu fais par exemple 4 groupes de contacts, avec 128 entrées DIN tu peux brancher 128*4 = 512 contacts. Avantages de cette solution: moins de DINS et un peu moins de cablage. Inconvénients: shéma un peu plus compliqué, un peu plus de programmation, un peu plus de latence sur chaque touche puisque qu'elles ne seront scannées qu'une fois sur 4 mais je ne pense pas que ça se ressente (les DINS sont scannées toutes les millisecondes, avec cette solution ça ferait 4ms au lieu de 1). Bonne chance! Baptistou
  18. Pour ce qui est de la soudure, si tu fais un minimum gaffe à ce que tu fais il n'y a rien de compliqué donc pas de raison que tu n'y arrives pas. Le mieux c'est d'acheter tes kits à Smash TV, les cartes sont d'excellente qualité, tout est complet et en plus tu as les guides de soudage en anglais sur les pages uCapps. Tu vas te retrouver avec un max de cablage pour les boutons, faudra juste que tu sois bien organisé avec tes faisceaux de fils (passages plus ou moins définis, longueurs de fils taillées comme il faut, colliers colson un peu partout). Si j'ai bien compris comme c'est pour un orgue il n'y a pas de sensibilité de toucher, donc des DIN suffisent (une touche c'est un interrupteur ouvert ou fermé) Je ne sais pas quelle est la longueur max à mettre entre les modules (DIN ou CORE) mais je pense que ça ne devrait pas poser de problème quoi que tu fasses. Fais des essais si tu veux être sûr. Entre les contacts et les DINS, pas de soucis à se faire sur la longeur, tu peux mettre 100m si tu veux. Est-ce que tu sais programmer et est prêt à programmer ta propre application MIOS? As-tu un mac ou un PC? Je serais toi, je viserais plutôt un module basé sur le STM32, beaucoup plus performant que le PIC. Ce que tu veux faire n'est pas compliqué donc ne nécessite pas grand chose et tu peux faire ça avec des PIC mais le STM a pas mal d'avantages. Entre autres, il me semble qu'on peut connecter pas mal de modules DIN sur un STM, je ne sais pas trop combien mais si ça se trouve tu peux faire ce que tu veux avec un seul core ce qui te simplifierait la vie. D'autre part, tu disposerais de la fiche USB, si tu veux utiliser ton clavier sur un ordi c'est un sacré avantage (pas besoin d'adapteur usb midi, pas besoin d'alim externe). Par contre le STM32 est récent dans le monde MIDIBOX donc moins d'infos dessus. Je suis néophite mais j'en ai acheté un et j'arrive à faire pas mal de trucs à avec donc je reste définitivement sur celui-là . Bonne chance! Baptistou
  19. I have a 2Gb micro SD card with a SD to micro SD adaptor, the one you always get when buying a micro SD card. I just soldered the wires to the adaptor and now I can plug or unplug the micro SD, it works fine.
  20. I was wondering if that line would copy the raw data of the unsigned into the signed one or if it would take care of the sign bit. Thanks! Baptistou
  21. Is it possible to put a u32 variable into a s32 without anything special? example: u32 successcount; s32 returnValue; DFS_ReadFile(&fi, sector, buffer, &successcount, len); returnValue = successcount; if (somethingBadHappens){ returnValue = -1; } return returnValue; Is that right? Baptistou
  22. I forgot about the DOSFS doc files, I'll have a look in there and give news soon. Thanks for your quick replies! Baptistou
  23. Hi there, I would like to read and write files onto an SDCard connected to my CORE32, for being able to read configuration files and to write log files. What's the simplest way to do this? What libraries do I need? Could somebody give an example? Thanks all! Baptistou
  24. Hi, To be sure that the problem comes from the suspected 74HC4051, you took it off, put a new one and then everything worked, is that right? For me two things could burn an IC: over voltage or overcurrent. I doubt that you had an overvoltage if you only have +5v running around your board. Over current is what you had then. It could be possible for example if you have the output of the IC put to ground and you put +5V on the input, then you have a high current flowing through the device when the adresses pins connect this input to the output. Baptistou
×
×
  • Create New...