Archives de catégorie : Micro-contrôleurs

Les micro-contrôleurs de type AVR, Arduino, MSP430, LaunchPad, PIC, PICAXE…

LaunchPad C2000 : expérimenter avec un DDS

Aujourd’hui c’est dimanche, et l’électricité a été coupée de 10h à 18h. Je n’ai donc pas eu trop le temps de rechercher des informations craquantes avant la fin d’année.

LaunchPad MSP430 et C2000 - Image Francesco Agosti (http://xv4y NULL.radioclub NULL.asia/2012/12/30/launchpad-c2000-experimenter-avec-un-dps/img_3175/)
LaunchPad MSP430 et C2000 côte à côte

Je vais en profiter pour réparer un oubli en vous parlant du LaunchPad C2000 Piccolo de Texas Instruments (http://www NULL.ti NULL.com/ww/en/launchpad/c2000_head NULL.html), dont vous connaissez déjà les autres membre de la famille avec le MSP430 et le Stellaris.

Le principe est le même, une carte de développement intégrant toute la connectivité USB et l’aide au déboguage avec un micro-contrôleur et plein de connecteurs pour les entrées-sorties. Le prix est toujours très attractif avec cette fois-ci 17$ port compris, et l’environnement de développement Code Composer Studio (CCS) est gratuit pour utliser avec cette carte. Le micro-contrôleur est un peu particulier puisqu’il s’agit d’un TMS320F28027 à 60 MHz avec 64Ko de Flash, 12Ko de RAM, un convertisseur analogique numérique 12 bits échantillonnant à 4,6 Mbps (ça dépote!) sur 12 canaux et tout un tas d’entrées-sorties et de périphériques usuels dans les micro-contrôleurs (I2C, SPI…).

Certains auront reconnu le suffixe TMS320 dans le nom du micro-contrôleur. Eh oui, il s’agit bien de la célèbre famille de DSP de Texas Instruments dont le premier modèle TMS32010 était une innovation à l’époque. La sous-branche actuelle C2000 a été utilisée dans la téléphonie mobile 2G et continue à l’être adossée à des processeurs ARM v7 par exemple dans les processeurs OMAP de la marque. Une des particularités de l’architecture C2000 c’est que bien que dédiée au traitement en temps-réel et en particulier au traitement de signaux, elle reste proche d’une architecture Harvard traditionnelle et peut-être utilisée pour des applications plus courantes.

Le LaunchPad C2000 est donc la plateforme idéale pour ceux qui veulent se frotter à la programmation temps-réel ou au traitement du signal (l’ADC embarqué est très performant). Personnellement je suis déjà bien occupé sur d’autres projets et je n’ai pas envie d’acheter une boîte même à 17$ juste pour qu’elle prenne la poussière. Par contre je pense que certains parmi vous pourraient tenter l’expérience.

Support USB 1.1 sur MSP430G2452

Ceux qui utilisent un contrôleur de synthétiseur Si570 piloté par port USB ou y compris celui intégré dans de nombreux SDR SoftRock ou similaires ont déjà vu que le contrôleur USB était bien particulier. En effet, au lieu d’utiliser un contrôleur USB matériel, c’est un micro-contrôleur AVR ATTiny45 qui fait tout le travail. Le premier à en avoir eu l’idée c’est DG8SAQ (il me semble) et son code a été repris ensuite par PE0FKO. La partie contrôleur hôte USB du code est en faite une librairie commerciale mais gratuite pour nos usage, la librairie V-USB (http://www NULL.obdev NULL.at/products/vusb/index NULL.html).

Prototype Mecrimus-B (http://xv4y NULL.radioclub NULL.asia/2012/12/29/support-usb-1-1-sur-msp430g2452/hardware/)Le pendant de cette librairie pour l’architecture MSP430 est en passe d’être disponible sous le nom de Mecrimus-b. C’est aujourd’hui un programme toujours en développement et qui n’est pas utilisable en tant que tel, mais son auteur Matias le rend visible par tous (http://mecrisp NULL.sourceforge NULL.net/mecrimus-b NULL.htm) (aller dans la partie Download en haut à gauche). La discussion sur le forum 43oh.com est active et toute le monde est invité à participer au développement (http://forum NULL.43oh NULL.com/topic/2962-bit-bang-usb-on-msp430g2452/). Le micro-contrôleur a juste besoin d’un quartz 18 MHz sur ses broches d’horloge externe, et de deux diodes 1N4148 pour limiter la tension sur les ports du MSP430. Le code lui-même est écrit en assembleur et occupe environ 2ko de mémoire flash ce qui laisse de la place pour d’autres fonctions dans le micro-contrôleur. C’est donc une avancée intéressante pour tout ceux qui souhaitent des fonctionnalités de communication USB à bas coût dans leurs projets de micro-contrôleurs.

Système de notification sur le blog

Après avoir résolu tout mes problèmes de programmes pour les micro-contrôleurs des kits balise WSPR, je souffle un peu. Si j’ai le temps je ferai un petit billet en français sur les conclusions que j’ai tiré de ce grattage de crâne intense… Pour l’instant un résumé en anglais sera publié sur le forum Energia de 43oh (http://forum NULL.43oh NULL.com/forum/28-energia/).

Du coup je me suis enfin penché sur quelque chose qui m’avait déjà été suggéré plusieurs fois dont une dernière il y a quelques jours : envoyer un bulletin de résumé des billets publié et/ou une notification à chaque nouvelle.

En soit rien de compliqué car c’est un plugin de WordPress qui fait tout (ou presque), mais il fallait que je mette les choses au carré et que je réactive l’inscription des utilisateurs. En principe vous devriez donc trouver sur la droite de la page d’accueil un petit formulaire qui vous permet de vous inscrire pour recevoir un extrait de chaque billet. N’hésitez pas à me tenir au courant si ça ne marche pas comme prévu…

Maintenant je retourne au fer à souder car j’ai une belle liste de commandes de kits qui s’est accumulée. Certains composants sont encore sur le chemin mais je vais essayer de prendre de l’avance. Ce ne sera pas évident car les coupures d’électricité vont être très fréquentes avant le nouvel an vietnamien en vue de la maintenance de la centrale électrique. Ils nous promettent une coupure entre 7h et 16h sur toute la ville pour chaque samedi durant le prochain mois…

Prototype balise WSPR à DDS

Prototype kit Balise WSPR DDS XV4Y (http://xv4y NULL.radioclub NULL.asia/2012/12/21/prototype-balise-wspr-a-dds/100_3339/)Je suis plutôt satisfait de ma semaine! En grappillant quelques heures entre mes occupations professionnelles j’ai réussi à finaliser la mise au point de ma balise WSPR avec un DDS AD9850 (http://xv4y NULL.radioclub NULL.asia/boutique/?slug=product_info NULL.php&products_id=33). Le prototype fonctionne parfaitement et les séquences sont reçues à 100% sur mon ordinateur de contrôle. Les tests sur l’air se sont révélés décevant mais avec moins de 10mW sur 20 mètres, les conditions hivernales et aucune station proche il ne fallait pas non plus rêver. Je vais essayer de bricoler un petit PA d’appoint pour valider les tests.

Un des points sur lequel je bloquais était la quantité de mémoire très restreinte du MSP430G2553. Avec 512 octets on est vite à cours de place pour les variables, d’autant plus que la génération de la séquence de symboles WSPR en consomme plus de 350 à elle seule! Devoir contrôler calculer la séquence WSPR, contrôler le DDS, et l’écran graphique posait pas mal de stress sur le micro-contrôleur. J’ai du réécrire une partie du code et économiser les variables. Les méthodes de programmation moderne nous apprennent à favoriser la lisibilité et la réutilisabilité du code en découpant en fonction ou en créant des classes d’objets. C’est bien beau mais même si les compilateurs modernes optimisent tout cela très bien, cela consomme quand même beaucoup de mémoire. Pas grave sur un micro-ordinateur, mais vite contraignant sur un micro-contrôleur. Les purs et durs programment toujours en assembleur, pour ma part même après 20 ans en ayant débuté à 11 ans sur le microprocesseur 6803 de mon Alice 90 (http://alice NULL.system-cfg NULL.com/) monté à partir de pièces en vrac par F1GUM, la mayonnaise n’a jamais pris…

100_3341

Si maintenant le code fonctionne parfaitement et que le hardware rempli son rôle, il me reste maintenant à voir comment tout agencer pour en faire un kit facile à reproduire et à monter, et à écrire la documentation! Dernier point technique à valider, l’ajout de 4 boutons pour pouvoir le transformer facilement en VFO ou générateur de signal.

Bibliothèque RTC pour Energia version 1.04

Suite à une suggestion sur le forum dédié à Energia et au MSP430 en général (http://forum NULL.43oh NULL.com/forum/28-energia/), j’ai procédé à une petite réécriture de ma librairie horloge temps-réel (http://xv4y NULL.radioclub NULL.asia/2012/05/22/bibliotheque-rtc-pour-le-msp430/) (Real Time Clock ou RTC) pour le MSP430. Le changement sont principalement cosmétiques mais quelques petits bogues ont été corrigés.

Les fichiers peuvent être téléchargés sur la page téléchargements (http://xv4y NULL.radioclub NULL.asia/boutique/docs/).

Ici le fichier de déclarations sRTC.h :

/*
 sRTC.h - Library for adding simple RTC capabilities using MSP430 hardware
 By Yannick DEVOS (XV4Y) - 2012-2013
 Any commercial use or inclusion in a kit is subject to author approval

 ====
 Revision history :
 v1.00    2012-05-22
 First release
 v1.01    2012-12-17
 Minor cosmetic changes
 v1.02    2012-12-18
 Strucutral changes to improve code cleaness
 Currently does not work with Energia009
 v1.03    2012-12-21
 Settings in constructor to override default Energia settings, work with Energia 009
 v1.04    2013-01-08
 Moved settings to begin(), corrected bug related to Energia 009 => Thanks Grahamf72 from 43oh forums

 ====
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You can download a copy of the GNU General Public License at <http://www.gnu.org/licenses/>

///////////////////////////////// How to use the lib

 * Create an instance of the object

 RealTimeClock myClock;

 * Do low-level Timer and Clock setup yourself or call begin();

 myClock.begin();

 * In order to have this RTC library working you should add this code to the end of your main program :

 interrupt(TIMER1_A0_VECTOR) Tic_Tac(void) {
	myClock++;		      // Update chunks
 };

 * Enjoy the clock reading the RTC_sec, RTC_min, RTC_hr variables

 */

// ensure this library description is only included once
#ifndef RTC_h
#define RTC_h

// library interface description
class RealTimeClock
{
	// user-accessible "public" interface
public:
	RealTimeClock(void);
	void begin(void);
	void Set_Time(char hr, char mins, char secs);
    int RTC_chunk; // This how you read the time, by reading the vars
    char RTC_sec; // This how you read the time, by reading the vars
    char RTC_min;
    char RTC_hr;
	void Inc_chunk(void); // This methode should be invoked by an Interrupt call (see top of the file comment)
	RealTimeClock& operator++();	// Overload ++ operator for writing convenience (Prefix Variant)
	RealTimeClock& operator++(int);	// PostFix variant

	// A few private methods
private:
	void Inc_sec(void);
	void Inc_min(void);
	void Inc_hr(void);	
};

#endif

Et le code par lui même sRTC.cpp :

/*
 sRTC.h - Library for adding simple RTC capabilities using MSP430 hardware
 By Yannick DEVOS (XV4Y) - 2012
 Any commercial use or inclusion in a kit is subject to author approval

 ====
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You can download a copy of the GNU General Public License at <http://www.gnu.org/licenses/>

 */

// include this library's description file
#include 
#include 

// Constructor /////////////////////////////////////////////////////////////////

RealTimeClock::RealTimeClock(void)
{

};

// Methods /////////////////////////////////////////////////////////////////

void RealTimeClock::begin(void) {

	BCSCTL1 &= ~DIVA_3;		// ACLK without divider, set it to DIVA_0
	BCSCTL3 |= XCAP_3;		// Internal 12.5pF cap for 32KHz crystal

	TA1CCTL0 = CCIE;             //  CCR0 interupt activated
	TA1CCR0 = 128-1;             // 4096 ticks of 32KHz XTal = 1 second, so 4 slices are 1 second => CCR0 counts N+1
	TA1CTL = TASSEL_1 | ID_0 | MC_1;  // Clock for TIMER 1 = ACLK, No division, up mode

	P2SEL |= (BIT6 | BIT7); // This is to override default Energia settings that set P2_6 and P2_7 to GPIO instead of ACLK
	BCSCTL3 = LFXT1S_0;		// Override default Energia setting sourcing ACLK from VLO, now source from XTal

	RTC_chunk = 0;
	RTC_sec = 0;
	RTC_min = 0;
	RTC_hr = 0;	

};

RealTimeClock& RealTimeClock::operator++() {	// Overload ++ operator for writing convenience (Prefix Variant)
	Inc_chunk();	// This just call Inc_chunk
	return *this;
};

RealTimeClock& RealTimeClock::operator++(int) {	// PostFix variant
	RealTimeClock tmp(*this);
	++(*this);
	return tmp;
};

void RealTimeClock::Inc_chunk(void) {
	RTC_chunk = RTC_chunk + 1;		      // Update chuncks
	if (RTC_chunk == 256) {
		RTC_chunk=0;
		Inc_sec();
	};
};

void RealTimeClock::Inc_sec(void) {
	RTC_sec = RTC_sec + 1;		      // Update seconds
	if (RTC_sec == 60) {
		RTC_sec=0;
		Inc_min();
	};
};

void RealTimeClock::Inc_min(void) {
	RTC_min = RTC_min + 1;		      // Update minutes
	if (RTC_min == 60) {
		RTC_min=0;
		Inc_hr();
	};
};

void RealTimeClock::Inc_hr(void) {
	RTC_hr = RTC_hr + 1;		      // Update hours
	if (RTC_hr == 24) {
		RTC_hr=0;
	};
};

void RealTimeClock::Set_Time(char hrs=0, char mins=0, char secs=0) {
	if ((hrs>=0 && hrs <24) && (mins>=0 && mins<60) && (secs>=0 && secs<60)) {
		RTC_hr = hrs;	// Set time to values given in parameters
		RTC_min = mins;
		RTC_sec = secs;
		RTC_chunk = 0;
	};
};

Librairie pour piloter un DDS AD9850 avec un LaunchPad/MSP430 ou un Arduino

[GTranslate]

Je partage avec vous un de mes premiers résultats dans la mise au point d’une balise WSPR autonome agile avec générateur de signal à DDS (http://xv4y NULL.radioclub NULL.asia/boutique/?slug=product_info NULL.php&products_id=33). Voici en effet une petite librairie qui simplifiera vos projets pour piloter un DDS de chez Analog Devices comme le AD9850. Vous pouvez aussi facilement concevoir un VFO pour vos montages personnel Bitx (http://xv4y NULL.radioclub NULL.asia/category/ham-radio/materiel/bitx/) ou Bingo.

Cette librairie est assez simple puisqu’elle comporte quelques fonctions pour initialiser le circuit et lui programmer une fréquence. Un paramètre permet de passer le circuit en mode Power Down et de le réveiller au cas où. Cela permet d’économiser de l’énergie et même de faire une forme de CW si votre DDS génère le signal directement.

La communication se fait en mode série via 4 broches d’un micro-contrôleur MSP430G2553 par exemple. Bien entendu il faut aussi fournir l’alimentation et la masse. Fait intéressant, l’AD9850 est très flexible et supporte 3,3V ou 5V pour son alimentation. Comme la librairie est aussi très simple et n’utilise qu’un mode de communication logicielle elle est virtuellement portable sur toutes les familles de micro-contrôleurs. Le code est écrit pour les environnement de développements basés sur Wiring comme par exemple Arduino ou Energia.

Vous pouvez télécharger la librairie complète sur la page de téléchargements (http://xv4y NULL.radioclub NULL.asia/boutique/docs/).

Le code pour le fichier de header AD9850.h

/*
 AD9850.h - Library for adding simple AD9850 control capabilities on MSP430

 Copyright 2012 Yannick DEVOS under GPL 3.0 license
 Any commercial use or inclusion in a kit is subject to author approval

 ====
 Revision history :
 v1.00    2012-12-16
 First release

 ====
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You can download a copy of the GNU General Public License at <http://www.gnu.org/licenses/>

 ///////////////////////////////// How to use the lib

 * Create an instance of the object with the pin for CLOCK, LOAD, DATA and RESET

 AD9850 myDDS (P1_5, P2_0, P2_1, P2_2);	 Example for LaunchPad

 * Initialize the AD9850 and do a reset

 myDDS.begin();
 myDDS.reset();

 */

// Core library
#if defined (__AVR_ATmega328P__) || defined(__AVR_ATmega2560__) // Arduino specific
#include "WProgram.h" // #include "Arduino.h" for Arduino 1.0
#elif defined(__32MX320F128H__) || defined(__32MX795F512L__) // chipKIT specific 
#include "WProgram.h"
#elif defined(__AVR_ATmega644P__) // Wiring specific
#include "Wiring.h"
#elif defined(__MSP430G2452__) || defined(__MSP430G2553__) || defined(__MSP430G2231__) // LaunchPad specific
#include "Energia.h"
#elif defined(MCU_STM32F103RB) || defined(MCU_STM32F103ZE) || defined(MCU_STM32F103CB) || defined(MCU_STM32F103RE) // Maple specific
#include "WProgram.h"	
#endif

// ensure this library description is only included once
#ifndef AD9850_h
#define AD9850_h

// library interface description
class AD9850
{
	// user-accessible "public" interface
public:
	AD9850(uint8_t pinClock, uint8_t pinLoad, uint8_t pinData, uint8_t pinReset);
	void begin();
	void reset();
	void SetFrequency(unsigned long frequency, boolean powerdown);	// Set the frequency and send PowerDown command if needed
	// A few private methods
private:
};

#endif

Le code pour le fichier de déclaration des routines AD9850.cpp

/*
 AD9850.h - Library for adding simple AD9850 control capabilities on MSP430

 Copyright 2012 Yannick DEVOS under GPL 3.0 license
 Any commercial use or inclusion in a kit is subject to author approval

 Based on work by G7UVW

 ====
 Revision history :
 v1.00    2012-12-16
 First release

 ====
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You can download a copy of the GNU General Public License at <http://www.gnu.org/licenses/>

 */

// include this library's description file
#include <AD9850.h>
//#include <legacymsp430.h>

#define DDS_CLOCK 125000000

// Constructor /////////////////////////////////////////////////////////////////
uint8_t _DDSpinClock;
uint8_t _DDSpinLoad;
uint8_t _DDSpinData;
uint8_t _DDSpinReset;

AD9850::AD9850(uint8_t pinClock, uint8_t pinLoad, uint8_t pinData, uint8_t pinReset)
{
	_DDSpinClock = pinClock;
	_DDSpinLoad = pinLoad;
	_DDSpinData = pinData;
	_DDSpinReset = pinReset;

};

// Methods /////////////////////////////////////////////////////////////////

void AD9850::begin()
{
    pinMode (_DDSpinClock, OUTPUT); 
    pinMode (_DDSpinLoad,  OUTPUT); 
    pinMode (_DDSpinData,  OUTPUT); 
    pinMode (_DDSpinReset, OUTPUT);

	digitalWrite(_DDSpinReset, LOW);
	digitalWrite(_DDSpinClock, LOW);
	digitalWrite(_DDSpinLoad, LOW);
	digitalWrite(_DDSpinData, LOW);		
}

void AD9850::reset()
{
	//reset sequence is:
	// CLOCK & LOAD = LOW
	//  Pulse RESET high for a few uS (use 5 uS here)
	//  Pulse CLOCK high for a few uS (use 5 uS here)
	//  Set DATA to ZERO and pulse LOAD for a few uS (use 5 uS here)

	// data sheet diagrams show only RESET and CLOCK being used to reset the device, but I see no output unless I also
	// toggle the LOAD line here.

    digitalWrite(_DDSpinClock, LOW);
    digitalWrite(_DDSpinLoad, LOW);

	digitalWrite(_DDSpinReset, LOW);
	delay(5);
	digitalWrite(_DDSpinReset, HIGH);  //pulse RESET
	delay(5);
	digitalWrite(_DDSpinReset, LOW);
	delay(5);

	digitalWrite(_DDSpinClock, LOW);
	delay(5);
	digitalWrite(_DDSpinClock, HIGH);  //pulse CLOCK
	delay(5);
	digitalWrite(_DDSpinClock, LOW);
	delay(5);
	digitalWrite(_DDSpinData, LOW);    //make sure DATA pin is LOW

	digitalWrite(_DDSpinLoad, LOW);
	delay(5);
	digitalWrite(_DDSpinLoad, HIGH);  //pulse LOAD
	delay(5);
	digitalWrite(_DDSpinLoad, LOW);
	// Chip is RESET now
}

void AD9850::SetFrequency(unsigned long frequency, boolean powerdown)
{
	unsigned long tuning_word = (frequency * 4294967296 ) / (DDS_CLOCK*10);  // As frequency is in tens of Hertz, we need to multiply by 10
	digitalWrite (_DDSpinLoad, LOW); 

	shiftOut(_DDSpinData, _DDSpinClock, LSBFIRST, tuning_word);
	shiftOut(_DDSpinData, _DDSpinClock, LSBFIRST, tuning_word >> 8);
	shiftOut(_DDSpinData, _DDSpinClock, LSBFIRST, tuning_word >> 16);
	shiftOut(_DDSpinData, _DDSpinClock, LSBFIRST, tuning_word >> 24);
	if (powerdown)
		shiftOut(_DDSpinData, _DDSpinClock, LSBFIRST, B00000100);	// If powerdown is true then send PowerDown command
	else
		shiftOut(_DDSpinData, _DDSpinClock, LSBFIRST, 0x0);

	digitalWrite (_DDSpinLoad, HIGH); 
}

Nouvelles des kits, balise WSPR à DDS et page téléchargements

Je viens de mettre en ligne une page avec quelques fichiers à télécharger (http://xv4y NULL.radioclub NULL.asia/boutique/docs/) pour le kit SpectroScope audio. Vous y trouverez pour l’instant le manuel utilisateur, les librairies nécessaires à la compilation des sources avec l’environnement Arduino et le code source la mini station météo. J’y ajouterai bientôt les librairies que j’ai écrites pour le MSP430 avec Energia.

Balise WSPR AD9850 et MSP430 (http://xv4y NULL.radioclub NULL.asia/2012/12/17/nouvelles-des-kits-balise-wspr-a-dds-et-page-telechargements/100_3338/)A part ça j’ai bien avancé ces derniers jours sur la balise QRSS / WSPR avec DDS 9850. Il reste encore pas mal de travail mais comme vous pouvez le voir j’ai un prototype pleinement fonctionnel sur le banc d’essai. Ce soir il devrait être relié à une antenne mais sans PA les reports risquent d’être limité par les 40mW du DDS. Le kit final comportera un écran graphique, un DDS et des boutons permettant de le reprogrammer comme générateur de signal ou comme VFO au besoin. L’ensemble des composants et logiciels fonctionnent bien mais j’ai du mal à faire cohabiter la génération de la séquence WSPR et le pilotage de l’écran LCD dans les faibles 512 octets de SRAM du MSP430G2553. J’y travaille…

J’ai aussi reçu mon StellarPad mais je ne l’ai pas encore sorti de sa boîte. Chaque chose en son temps. J’avoue ne pas avoir de projet précis qui nécessite toute la puissance d’un tel processeur. Je vais faire quelques en portant des programmes existants mais pour l’instant ce n’est pas une priorité.

Sortie de Energia 009 avec le support du StellarPad

Stellaris LaunchPad Texas Instruments (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/10/med_ek-lm4f120xl_stellarislaunchpad_tool NULL.jpg)L’équipe de développement de l’IDE Energia (fork d’Arduino pour les micro-contrôleurs de Texas Instruments) vient d’annoncer la sortie de la nouvelle release 009 (http://forum NULL.43oh NULL.com/topic/2993-new-energia-release-0101e0009-12062012/). Celle-ci ajoute en particulier le très attendu support du Stellaris LaunchPad (http://xv4y NULL.radioclub NULL.asia/2012/10/02/a-letroit-avec-un-arduino-ou-un-launchpad/). Coïncidence, TI vient de se compter de m’annoncer que mon StellarPad qui était en liste d’attente depuis plusieurs semaines vient d’être expédié par FedEx. Je devrais donc l’avoir dans les mains d’ici quelques jours!

J’ai téléchargé cette nouvelle version mais j’avoue que je n’ai pas encore eu le temps de la tester. Je suis en train de finaliser mon prototype de balise WSPR agile avec DDS afin de pouvoir commander les composants débuts janvier pour une première série.

Arduino Due 32bits

Arduino Due (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/11/arduino_due_in_hand NULL.jpg)J’ai regardé ailleurs un instant et je suis passé à côté de la nouvelle… L’équipe Arduino (http://arduino NULL.cc) a enfin annoncé officiellement le nouvel Arduino Due 32 bits. Tout comme le Stellaris LaunchPad (http://xv4y NULL.radioclub NULL.asia/2012/10/02/a-letroit-avec-un-arduino-ou-un-launchpad/) ou d’autres plateformes de développement tel que le Maple (http://leaflabs NULL.com/devices/maple/), il utilise un micro-contrôleur construit sur une architecture ARM Cortex 32 bits au lieu des plus simples plateformes 8 bits d’Atmel.

Le processeur choisi est un SAM3X8E à 84 MHz de chez Atmel qui suit l’architecture Cortex M3 (le Stellaris LaunchPad est un Cortex M4F, plus puissant) avec 512Ko de Flash et 96Ko de SRAM. Comme points forts du nouveau circuit on peut citer :

  • Des performances accrues et 54 entrées/sorties numériques
  • La disponibilité d’un port USB hôte en plus du port USB programmateur pour y connecter des périphériques
  • 12 CAN (ADC) sur 12 bits permettant un taux théorique maximum de 1000ks/s (contre 15ks/s pour l’Arduino 8 bits)
  • 2 CNA (DAC) sur 12 bits intégrés permettant une sortie audio
  • Une compatibilité avec les shield existant s’ils sont conçus à partir de la révision R3 car l’Arduino Due utilise une logique 3,3V (contre 5V pour l’Arduino)
  • Une portabilité assez facile du code prévu pour les ATMega vers les nouveaux Cortex M3
  • Un connecteur JTAG/SWD pour le déboguage

La version béta 1.5 de l’IDE Arduino est disponible mais demande encore un peu de travail pour être considérée comme stable. La platine Arduino Due est annoncée à 49$ US. C’est un peu plus cher que le Maple et 10 fois le prix du Stellaris Launchpad au passage. La disponibilité réelle n’est pas encore connue.

Une dernière remarque, comme beaucoup de circuits du même acabit, l’Arduino Due est en 3,3V et peut souffrir si vous lui envoyez des signaux 5V. L’intensité totale transmise sur le broches du circuit est aussi beaucoup plus faible que sur d’autres micro-contrôleurs plus robustes (AVR, MSP430, PIC). Tout dépend de vos usages, mais pour de la commande de moteurs ou des circuits simples, se lancer tout de suite vers l’Arduino Due peut ne pas être un bon choix…

embedXcode pour le Stellaris LaunchPad

EmbedXcode (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/10/9015344 NULL.png)Rei Villo nous annonce avoir porté son template embedXcode pour le StellarPad (http://forum NULL.43oh NULL.com/topic/2042-embedxcode-—-xcode-template-with-msp430-support/#entry23221) ou plus officiellement Stellaris LaunchPad (http://xv4y NULL.radioclub NULL.asia/2012/10/02/a-letroit-avec-un-arduino-ou-un-launchpad/). Le but de ce logiciel est de pouvoir compiler du code pour de nombreuses plateformes matérielles construite autour des micro-contrôleurs de Texas Instruments, à partir de différents IDE populaires comme XCode bien entendu mais Processing, Wiring, Arduino… La nouvelle version de embedXcode (http://embedxcode NULL.weebly NULL.com/) devrait donc sortir bientôt.

Attention, pour que cela fonctionne avec XCode il faut une version récente, et moi je reste toujours avec celui de Snow Leopard… Mon Stellaris LaunchPad devrait arriver fin décembre (dans la hôte du Père-Noël ?) et je suis impatient de jouer avec.