Synthé-modulaire

Quelques lamas, sur la cordillère des ondes
 
AccueilAccueil  PortailPortail  S'enregistrerS'enregistrer  Connexion  
Partagez | 
 

 32bit et le modulaire

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
old gregg
Petit lama


Messages : 46
Date d'inscription : 26/08/2013

MessageSujet: 32bit et le modulaire   Ven 28 Aoû - 8:52

Je fais un petit topic suite a la demande de Monsieur B, pour ceux qui voudrais se lancer dans la joie de la programmation microcontroller ARM 32bit (comme dirait mon pere, ca fait beaucoup de bit quand meme...)

Pour débuter l'idéale c'est d'acheter une devboard. Sachant que les package DIP n'existe pas ca reste l'unique solution de tout facon. De plus vous bénéficiez d'un programmer inclus sur la carte. J'ai personnellement acheté la STM32F4. Elle est équipé avec une quantité astronomique de périphériques en tout genre (de la carte SD jusqu'au périphérique pour caméra digitale)

[Vous devez être inscrit et connecté pour voir cette image]
[Vous devez être inscrit et connecté pour voir ce lien]

Pour la mise en place il vous faut plusieurs logiciels :

Coocox , IDE gratuite et assez complete :
[Vous devez être inscrit et connecté pour voir ce lien]
il faut vous inscrire pour télécharger le software. C'est agacant mais c'est comme ca. La plupart de IDE commerciales proposent une version gratuite mais limité en taille de programme. Alors autan profitez d'une version gratuite et open source (si je dis pas de conneries) ce qui plaira a Mr Richard Stallman Laughing

GNU ARM-GCC, compilateur (qui transforme le code source en code machine) :
[Vous devez être inscrit et connecté pour voir ce lien]
Il faut ensuite mettre le "path" dans coocox pour que celui-ci trouve le compilateur. C'est a dire l'endroit ou se trouve le .exe du compilateur sur votre disque.

le STM32 link utility qui permet d'envoyer le fichier .hex (le programme compilé) dans la bestiole:
[Vous devez être inscrit et connecté pour voir ce lien]
il faut également installer les drivers USB qui vont avec (compris dans le programme).

C'est ensuite que ca devient cochon  pig  pig  pig

L'idéal c'est de travailler avec le ref_manual contenant tout les descriptif des registres et le schéma de la carte de dev'. Il y a quantité de registre a parametrés pour différent fonctions, ces microprocesseurs sont MONSTRUEUX de possibilités!! A partir de là c'est du C de base. Coocox vient avec des librairies de "base".

si vous avez déja coder en C sur du PIC/AVR, ou meme du software c'est la meme chose.

Pour ceux qui viennent d'arduino ca risque d'un un peu plus violent. De base, il n'y pas de layer d'abstraction comme c'est le cas avec Arduino.

j'ai compilé les documents pour la carte dans cette archive :
[Vous devez être inscrit et connecté pour voir ce lien] (il faut transformer le .jpg et .rar, les servers de wordpress sont un peu chiant)

quelque vidéos :





en francais :


(Newbiehack a également fait des bonnes vidéos sur la programmation AVR)

A noter également que BRUCE LAND (a pas confondre avec Bruce Lee) va faire un open-course sur les microcontroller 32bit PIC en Septembre :

[Vous devez être inscrit et connecté pour voir ce lien]

Il a également fait de trés bon cours sur les AVR 8bits :
[Vous devez être inscrit et connecté pour voir ce lien]

Voila, en espérant que ca serve a quelques un.
Revenir en haut Aller en bas
MonsieurB
Petit lama
avatar

Messages : 60
Date d'inscription : 16/09/2013
Age : 39

MessageSujet: Re: 32bit et le modulaire   Sam 29 Aoû - 0:03

Bonjour old gregg

Premièrement je te présente mes remerciements pour le temps que tu as pris pour moi (entre autres personnes).

Et je fais face à de touts simples difficultés. Comme tu le sais je "viens" de l'arduino. Et maintenant je passe le pas et je m'essaie à une autre plateforme.

Je suis tes directives à la lettre et il y a juste un truc simple que je ne comprends pas:

Citation :
GNU ARM-GCC, compilateur (qui transforme le code source en code machine) :
[Vous devez être inscrit et connecté pour voir ce lien]
Il faut ensuite mettre le "path" dans coocox pour que celui-ci trouve le compilateur. C'est a dire l'endroit ou se trouve le .exe du compilateur sur votre disque.

La je ne comprends pas bien...le GNU-ARM-GCC que j'ai téléchargé contient trois dossiers. Le premier s'appelle "$_OUTDIR", le second "$COMMONFILES" et le dernier "$PLUGINSDIR" . Et il y a tout un tas de truc à l'interieur.....

Ma question ...je mets quoi à l'endroit ou se trouve le .exe de coocox ?





Note: désolé....mais je suis grand débutant avec les plateforme de développement non-arduino.

Revenir en haut Aller en bas
old gregg
Petit lama


Messages : 46
Date d'inscription : 26/08/2013

MessageSujet: Re: 32bit et le modulaire   Sam 29 Aoû - 1:34

Il faut bien dissocier l'ide (qui permet de composer le texte, dans le plus simple appareil ca pourrait etre notepad) et le compiler (qui transform tout ca en code machine).

le .exe du compiler se trouve dans le dossier d'installation. J'ai fais des screenshots pour la mise en place dans coocoxf :

[Vous devez être inscrit et connecté pour voir cette image]
[Vous devez être inscrit et connecté pour voir cette image]

une fois que tu as fait ca, tu lance un nouveau projet. Tu n'écris rien dedans et tu cliques sur Build (F7). Pour l'instant te soucis pas des librairies a gauche. Si c'est tout est correct tu devrais avoir le programme qui se lance et "BUILD SUCCESSFUL" dans la console. Ca voudra dire que l'IDE et le compiler communiquent entre eux.

Citation :
La je ne comprends pas bien...le GNU-ARM-GCC que j'ai téléchargé contient trois dossiers. Le premier s'appelle "$_OUTDIR", le second "$COMMONFILES" et le dernier "$PLUGINSDIR" . Et il y a tout un tas de truc à l'interieur.....

tu as pris celui du lien ? parce que sur celui du lien, je n'ai qu'un dossier : GNU Tools ARM Embedded\4.9 2015q2
Revenir en haut Aller en bas
MonsieurB
Petit lama
avatar

Messages : 60
Date d'inscription : 16/09/2013
Age : 39

MessageSujet: Re: 32bit et le modulaire   Sam 29 Aoû - 3:17

Ok OK Ok..........alors voilà le topo:

je lance coocox, j'associe le compilateur comme tu me le dis (et tu avais mis le bon raccourci à c epropos). Je crée un nouveau projet. Il est vide, je fais compiler...et il me dit "bla bla bla SUCCESSFULL3  ...... bon ca sonne bien jusqu'à présent.

J’installe le STM32 ST_LINK utility pour rentrer le programme dans la platine . Mine de rien c'est nouveau pour moi, les platines arduino c'est du tout en un.  L’installation est au poil.

Je vais cherche un programme de débutant sur un forum:
[Vous devez être inscrit et connecté pour voir ce lien]

Code:
/**

******************************************************************************

* @file    LED Hello World

* @author  Lee Dyche - Tecsploit.com

* @version V1.0.0

* @date    11/11/2012

* @brief   LED Blinks on and off

******************************************************************************

* @attention

* This is program is provided as is with no warranty!!

******************************************************************************

*/

 

#include "stm32f4_discovery.h"

 

//define our delay function – used to make the program wait for a certain amount

//of clock cycles

void Delay(__IO uint32_t nCount);

//This is the main entry point to the program

int main(void)

{

//this line is very important! It is responsible for setting up the LED’s

//this method is included within the provided in the STM32f4_Discovery.c

//file. It abstracts the configuration of the GPIO pins(we will get to //that)

STM_EVAL_LEDInit(<em>LED5</em>);

while (1)

{

//Turn on led

STM_EVAL_LEDOn(<em>LED5</em>);

//wait some time (this is not an accurate way to ‘wait’ but will

//do for this demo!

Delay(2194303);

 

//switch it off again!

STM_EVAL_LEDOff(<em>LED5</em>);

 

Delay(2194303);

}

}

 

 

void Delay(__IO uint32_t nCount)

{

while(nCount--)

{

}

}

 

&nbsp;

Je fais "nouveau projet".......j'ai un grand choix de platine.....carrément beaucoup:

[Vous devez être inscrit et connecté pour voir ce lien]

Je choisis STM32F401CB au hasard. Je fais "new projet" , je choisis un dossier de destination. Je double clique sur "main.h" .Je colle le code de tout à l'heure.


[Vous devez être inscrit et connecté pour voir ce lien]



je fais "build" F7 et J'ai build report assez désagréable

[Vous devez être inscrit et connecté pour voir ce lien]

visiblement il me manque une bibliothèque........ je verrais plus tard.




Je branche la platine de développement en usb sur l'ordinateur.....l'ordi ne me dis rien et plein de led multicolore s'allument.
C'est bon signe .........


La suite au prochain épisode!






Note: merci pour le temps que tu passes pour moi! Very Happy




Revenir en haut Aller en bas
old gregg
Petit lama


Messages : 46
Date d'inscription : 26/08/2013

MessageSujet: Re: 32bit et le modulaire   Sam 29 Aoû - 3:54

Citation :
STM32F401CB au hasard.

ba justement faut pas Very Happy

Choisis bien le microcontroller présent sur ta carte. C'est important parce que chaque microcontroller est (plus ou moins) différent.

Si tu as la meme carte que moi, tu choisis "STM32F407VG" et tu cliques "new projects" tu ne t'occupes de rien d'autre, laisse ouvert "repository" tu vas sur le  "main.c". Tu compliles (F7 ou "build").

Cependant,  tu as bien "linker" le compiler sinon tu n'auras pas eu "BUILD FAILED". Et Effectivement tu n'as pas ajouter la librairie a ton projet (qui doit etre afficher a gauche avec "main.c").

Une fois ca compile proprement, tu vas pouvoir ajouter une librairie pour faire clignoter une ou deux led. (J'ai ouvert un projet vierge en temps que le tiens comme si ca peux t'aider a mieux y voir, on avance en meme temps). Dans ton projet tu dois uniquement avoir "main.c"
Revenir en haut Aller en bas
old gregg
Petit lama


Messages : 46
Date d'inscription : 26/08/2013

MessageSujet: Re: 32bit et le modulaire   Dim 30 Aoû - 6:03

tu remarquera qu'il faut inclure le header "stm32f407xx.h". Pour ce faire:
->Repository
->STM32F407 (a gauche)
->STM32F407VG
->components
-> deuxieme page
->coocox-master/STM32F407xx_cmsisboot (click sur add)
-> normalement tu devrais avoir de nouveau dossier a gauche dans l'onglet preset
-> tu peux inclure en haut de page "stm32f407xx.h"
-> compile a nouveau
-> si ca "build" t'es bon pour y aller.

voici deux exemple qui fonctionnent

toogle de la pin13 et de la led

Code:
#include "stm32f407xx.h"
//#include "stm32f4xx.h"



int main(void)
{

uint32_t timer = 0;


RCC->AHB1ENR |=  1<<3;
GPIOD->MODER |= 1<<26;
GPIOD->ODR |= 1<<13;


while(1)
    {
    timer++;
    if(timer>=30000)
    {
    timer = 0;
    GPIOD->ODR ^= 1<<13;

    }



    }
}

Une sawwave de 1.250Khz en sortie sur la pin A5

Code:
#include "stm32f407xx.h"


void TIM2_IRQHandler(void) {
 static uint8_t ramp;
  // flash on update event
  if (TIM2->SR & TIM_SR_UIF) GPIOD->ODR ^= (1 << 13);
  TIM2->SR = 0x0; // reset the status register
  DAC->DHR8R2 = ramp++;


}

int main(void)
{

uint32_t timer = 0;

//DAC SET - Output on PORTA5
  RCC->APB1ENR |= 1<<29;
  DAC->CR |= 1<<16;
  RCC->AHB1ENR |= 1<<0;

//PIND13 output
RCC->AHB1ENR |=  1<<3;
GPIOD->MODER |= 1<<26;
GPIOD->ODR |= 1<<13;

//timer set
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // enable TIM2 clock
NVIC->ISER[0] |= 1<< (TIM2_IRQn); // enable the TIM2 IRQ
TIM2->PSC = 0x0; // no prescaler, timer counts up in sync with the peripheral clock
TIM2->DIER |= TIM_DIER_UIE; // enable update interrupt
TIM2->ARR = 0x1; // count to 1 (autoreload value 1)
TIM2->CR1 |= TIM_CR1_ARPE | TIM_CR1_CEN; // autoreload on, counter enabled
TIM2->EGR = 1; // trigger update event to reload timer registers

while(1)
    {}
}

Revenir en haut Aller en bas
 
32bit et le modulaire
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Synthé-modulaire :: Théories et Ressources :: Réalisations DIY-
Sauter vers: