Mois : mai 2012

Plus d’informations sur le Ten-Tec Argonaut VI (Modèle 539)

Le site QRPer.com relaie quelques informations donnée par John Henry de Ten-Tec (http://qrper NULL.com/2012/05/john-answers-a-few-questions-about-the-ten-tec-model-539-argonaut-vi/) à propos du futur modèle 539 de la marque.

(http://qrper NULL.com/2012/05/john-answers-a-few-questions-about-the-ten-tec-model-539-argonaut-vi/)Je ne détaillerai pas toutes celles-ci car elles sont redondantes par rapport à ce qu’on a déjà pu lire il y a quelques temps. A noter toutefois que bien que très proche (même processeur par exemple) le récepteur de l’Argonaut VI sera différent de celui de l’Eagle. En particulier les filtres seront différents car la hauteur disponible n’est pas la même. Les performances seront du même ordre et 3 emplacement seront disponibles avec en principe un emplacement pour la BLU, un pour la CW et un pour la CW étroite ou l’AM.

L’ergonomie aussi sera différente et certains boutons pourront voir leur fonction définie par l’utilisateur. Chaque bouton aura 3 fonctions qui seront choisies par le Tumbler, un commutateur trois positions. Comme toujours dans un petit boîtier QRP ou mobile des compromis doivent être faits sur l’ergonomie, le Tumbler pourrait être une alternative intéressante aux commandes “par menu” des autres marques.

Nouveau kit QRSS par G0UPL et G0XAR

Schéma G0UPL G0XAR Balise Multimode (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/05/G0UPL-G0XAR-Balise-Multimode NULL.jpg)Hans et Stephen viennent d’annoncer un nouveau kit balise multimode QRSS / QRPp (http://www NULL.hanssummers NULL.com/qrsskitmm). La grande nouveauté de ce kit c’est que le micro-contrôleur est maintenant un ATMega168 ce qui permet de faire beaucoup plus beaucoup plus de choses que le très limité ATTiny13 utilisé précédemment.

Les modes supportés seront :

  • QRSS (télégraphie lente par porteuse ON/OFF)
  • FSK/CW (télégraphie lente par modulation de la fréquence
  • DFCW (télégraphie lente par modulation de fréquence mais traits et points chacun sur une fréquence)
  • WSPR (Weak Signal Propagation Reporter par K1JT)
  • Hellschreiber lent (Hellschreiber lent par modulation de fréquence)
  • Hellschreiber (Hellschreiber vitesse normale et demi-vitesse)
  • CW (télégraphie normale)
  • Motifs FSK personnalisables

Autres fonctionnalités

  • Afficheur LCD 24 caractères LCD et interface utilisateur deux boutons
  • Programmable par l’utilisateur (indicatif, message, vitesse, FSK, mode, etc)
  • Paramètres stockés en EEPROM
  • Interface GPS pour verrouiller la fréquence
  • Génération du message WSPR (pas de PC requis)
  • Le locator de la séquence WSPR peut être généré à partir des informations du GPS
  • Taille de la trame QRSS paramètrable pour une réception QRSS de trames superposées (moyenne étalée dans le temps)
  • Balise CW standard à intervales réglables
  • Produit 150mW en sortie HF, sortie audio possible pour piloter un transceiver
  • Puissance supérieure possible par l’ajout d’un transistor supplémentaire au PA ou par l’utilisation d’une tension d’alimentation supérieure

Les commandes seront ouvertes d’ici une à deux semaines et l’expédition des kits devrait débuter dans trois semaines. Le prix prévu est de l’ordre de 15 à 20£, soit environ 23-31$US ou 18-25€.

Un brouillon du manuel de 26 pages peut-être téléchargé pour avoir plus de détails (http://www NULL.hanssummers NULL.com/images/stories/qrsskitmm/instructions1 NULL.pdf).

Nouvelle version (build 140) d’Argo par I2PHD

Alberto vient de mettre à disposition une nouvelle release de son logiciel de capture QRSS (QRSS Grabber) Argo. Cette fois il répond à la demande de plusieurs OM qui souhaitaient pouvoir redimensionner la fenêtre d’Argo pour pouvoir étudier une bande passante plus large que les 170 Hz habituels. C’est donc aujourd’hui possible pour une échelle allant de 600 à 1000 pixels par pas de 100 pixels via les touches + et – du pavé numérique.

Cliquez ici pour télécharger la nouvelle build 140 d’Argo par I2PHD (http://dl NULL.dropbox NULL.com/u/15089947/Argo140 NULL.zip).

Un nouveau PC miniature à 49$

VIA Android PC board (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/05/apc-banana-640x358 NULL.jpg)Vu sur l’excellent site Ars Technica (http://arstechnica NULL.com/gadgets/2012/05/another-tiny-computer-vias-49-apc-offers-android-hdmi-video-out/). La société VIA, très connue pour ses chipsets et microprocesseurs pour micro-ordinateurs et compatibles PC, a annoncé la disponibilité d’un nouveau concurrent du Raspberry Pi et consorts (http://xv4y NULL.radioclub NULL.asia/2012/03/15/beagleboard-raspberry-pi-et-autres-pc-embarques-pour-les-radioamateurs/). C’est le APC ou Android PC qui embarque un processeur ARM (ARM11, donc compatible Android contrairement au Raspberry Pi), 512Mo de RAM, 2 Go de mémoire Flash, des sorties VGA, HDMI et audio, une entrée audio, un port MicroSD, un port Ethernet et 4 ports USB. La carte vendue nue et annoncée comme au format Neo-ITX consomme entre 4 et 13,5 Watts et est livré avec une version adaptée d’Android 2.3.

AllWiner Android PC USB clé (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/05/ea687cbe6b22cba6b63b77472f9c876d NULL.jpeg)L’article parle aussi d’un autre micro PC à 74$ mais mieux équipé avec Wifi et un processeur Cortex A8 à 1,5GHz qui fait tourner Android 4.0 (http://arstechnica NULL.com/gadgets/2012/05/new-74-android-mini-computer-is-slightly-larger-than-a-thumb-drive/). Avec tout cela, il y a du choix et avec un peu de chance ces produits seront réellement disponibles (qui a un Rasbperry Pi entre les mains ?)…

Bibliothèque RTC pour le MSP430

[GTranslate]

Le micro-contrôleur MSP430G2553 de Texas Instruments livrés avec le LaunchPad dispose de tout le nécessaire pour en faire une horloge temps-réel (RTC). Il suffit de lui connecter un quartz 32KHz et de le programmer convenablement.

TI donne les librairies en assembleur utilisable avec leur environnement de développement. Pour Energia, une nouvelle librairie était nécessaire, je me suis donc attelé à sa conception.

Rien de révolutionnaire, mais ça peut servir à d’autres. C’est sur cette librairie qu’est basée ma balise autonome WSPR que je compte proposer en semi-kit d’ici peu (certainement à mon retour de vacances début juillet). D’origine la dérive en fréquence est de l’ordre du Hertz pour 24 heures (20ppm) ce qui suffit pour une nuit de transmission WSPR, mais peut-être ajustée avec un condensateur variable pour corriger la fréquence du quartz.

Le fichier d’en-têtes (sRTCsec.h) :

/*
 sRTC.h - Library for adding simple RTC capabilities using MSP430 hardware
 By Yannick DEVOS (XV4Y) - 2012

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

 * Create an instance of the object

 RealTimeClock myClock;

 * 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.Inc_sec();		      // Update secondes
 };

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

 */

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

// library interface description
class RealTimeClockSec
{
	// user-accessible "public" interface
public:
	RealTimeClockSec(void);
	void Set_Time(char hr, char mins, char secs);
    char RTC_sec; // This how you read the time, by reading the vars
    char RTC_min;
    char RTC_hr;
	void Inc_sec(void); // This methode should be invoked by an Interrupt call (see top of the file comment)
	// A few private methods
private:
	void Inc_min(void);
	void Inc_hr(void);
};

#endif

Le code par lui-même (sRTCsec.cpp) :

/*
 sRTC.h - Library for adding simple RTC capabilities using MSP430 hardware
 By Yannick DEVOS (XV4Y) - 2012
 */

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

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

RealTimeClockSec::RealTimeClockSec(void)
{
	RTC_sec = 0;
	RTC_min = 0;
	RTC_hr = 0;

	WDTCTL = WDTPW | WDTHOLD; // Kill watch-dog

	BCSCTL1 = DIVA_3;        // Clock = ACLK / 8
	BCSCTL3 |= (LFXT1S_0 | XCAP_3);        // Internal 12.5pF cap for 32KHz crystal

	TA1CCTL0 = CCIE;             //  CCR0 interupt activated
	TA1CCR0 = 4096-1;               // 4096 ticks of 32KHz XTal = 1 second => CCR0 counts N+1
	TA1CTL = TASSEL_1 | ID_3 | MC_1;  // Clock for TIMER 1 = ACLK, By 8 division, up front

};

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

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

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

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

void RealTimeClockSec::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;
	};
};

Avec un exemple (testé sous Energia 005a) c’est plus facile à comprendre :

#include &lt;sRTCsec.h&gt;
#include &lt;legacymsp430.h&gt;
#include &lt;TimerSerial.h&gt;

TimerSerial mySerial;
RealTimeClockSec myRTC;

  int ledState = LOW;

void setup() {
  pinMode(2, OUTPUT);

  // This is to close the serial output so you are able to upload a new sketch to the LaunchPad
  pinMode(5, INPUT_PULLUP),
  attachInterrupt(5,fin,LOW);

  mySerial.begin();

};

// The LED1 will blink each exact second and the time will be printed to the serial port
void loop() {
  if ((myRTC.RTC_sec % 2)==0 && ledState== HIGH) {
  ledState = LOW;
  mySerial.print(myRTC.RTC_min, DEC);
  mySerial.print(":");
  mySerial.println(myRTC.RTC_sec, DEC);
  digitalWrite(2, ledState);
  };

  if ((myRTC.RTC_sec % 2)==1 && ledState== LOW) {
  ledState = HIGH;
  mySerial.print(myRTC.RTC_min, DEC);
  mySerial.print(":");
  mySerial.println(myRTC.RTC_sec, DEC);
  digitalWrite(2, ledState);
  };
};

void fin() {
  mySerial.end();
};

interrupt(TIMER1_A0_VECTOR) Tic_Tac(void) {
	myRTC.Inc_sec();		      // Update secondes
};

Ten-Tec Argonaut VI (Model 539) à Dayton

La nouvelle a été peu reprise mais Ten-Tec a sur son stand de Dayton son dernier modèle qui est disponible pour des essais. Tom de K4SWL qui aime particulièrement la marque lui consacre un bel article sur son site QRPer (http://qrper NULL.com/2012/05/sneak-peek-ten-tec-model-539-argonaut-vi-and-model-418-amplifier-at-fdim-and-hamvention/) ainsi qu’un autre avec plus de détails ici (http://qrper NULL.com/2012/05/the-ten-tec-argonaut-vi-the-model-539-qrp-transceiver-follows-the-legend-while-we-follow-the-spec-sheet/comment-page-1/#comment-664).

(http://qrper NULL.com/2012/05/sneak-peek-ten-tec-model-539-argonaut-vi-and-model-418-amplifier-at-fdim-and-hamvention/)Je ne vais pas vous faire une traduction complète de l’article mais le poste semble bien né. Il embarque les performances de l’Eagle (très bonnes au demeurant) dans un boîtier plus petit adapté au portable QRP. L’amplificateur 100W Model 418 qui l’accompagne en option était aussi disponible en tests et semble répondre à toutes les attentes. Attention, ce transceiver ne couvrent ni la bande des 60 mètres (soit) ni celles des 12 mètres (plus gênant) car des compromis étaient nécessaires pour garder une taille et un coût raisonnables. Disponibilité prévue pour fin 2012.

Une démarche très intéressante de Ten-Tec sur leur stand est d’avoir enregistré avec un poste SDR I/Q une portion de la bande 20 mètres durant un week-end de contests, et de la rediffuser sur l’entrée des récepteurs. Ainsi vous pouvez tester les postes “en conditions presque réelles”!

J’avoue que Ten-Tec est une marque qui m’a toujours intrigué et dont je rêve de posséder un équipement. Les récepteurs sont tous renommés pour leur performances et surtout elle est une des seules marques à garantir une opération en QSK sans failles. Par contre, après avoir suivi les avis sur les transceivers de la marque (en particulier l’Eagle) je dois admettre qu’ils ne sont pas exempts de petits défauts que Ten-Tec peine parfois à corriger. Par ailleurs, certaines fonctionnalités présentes chez la concurrence ne le sont pas chez Ten-Tec malgré un prix plutôt élevé…

Première photos du TS-990s à Dayton

Don W6GPS nous a fait parvenir les premières photos du TS-990s (http://www NULL.filesanywhere NULL.com/fs/v NULL.aspx?v=8a7064865f647376af6e) depuis les coulisses stand de Kenwood à la HAMvention de Dayton, avant qu’il ne soit exposé. Des photos de l’intérieur seront disponibles dans la journée, mais aucune photo de la face arrière n’est possible. Le poste est “prêt à 95%” selon les ingénieur mais certains fonctions ne sont pas stabilisée et leur présence en face arrière n’est pas définitive.

Don a tout de même eu les informations suivantes :

  • Le récepteur principal est à première FI basse.
  • Le récepteur secondaire (sub-receiver) est celui d’un TS-590s “complet”.
  • Le transceiver sera équipé de 5 (ou 6) filtre roofing-filter avec un emplacement supplémentaire libre au cas où INRAD développerait un filtre plus performant.
  • Une sortie DVI pour un écran externe est disponible en face arrière.
  • Une sortie audio optique est disponible en face arrière.
  • Le prix pourrait être supérieur aux informations précédentes, mais rien n’est figé.
  • Il serait en production actuellement avec quelques détails à régler sur le firmware. Plus d’informations le mois prochain, toutes les caractéristiques en août pour le salon de Tokyo et disponibilités à la vente juste à temps pour Noël!

Photo du TS990s de Kenwood à Dayton par W6GPS (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/05/DSC_5595 NULL.jpg)

Ici une chouette vidéo avec Gordon West WB6NOA and Bob Heil K9EID qui lèvent le voile sur ce nouveau transceiver :

La vidéo sur Youtube (http://www NULL.youtube NULL.com/watch?v=FT3UlV1tFNA).

Yaesu FTDX-3000 et FlexRadio Flex6000

Yaesu FTDX-3000 à Dayton par K4SWL (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/05/wpid-2012-05-18_09-02-14_605 NULL.jpg)En marge de la présence du TS-990s à Dayton (http://xv4y NULL.radioclub NULL.asia/2012/05/19/premiere-photos-du-ts-990s-a-dayton/), Yaesu a de son côté annoncé une surprise avec le nouveau FTDX-3000 (http://www NULL.hamradio NULL.com/documents/2012 NULL.5_FTDX-3000 NULL.pdf) qui occupera une nouvelle niche moyenne gamme, visant vraisemblablement le TS-590s. Il a un récepteur unique à première FI basse utilisant en partie des éléments du FTDX-5000, possède un écran LCD affichant un analyseur de spectre et trois connecteurs d’antennes dont un pouvant être utilisé pour une antenne de réception. Le prix devrait être plutôt dans une tranche haute, autour de 3000$ je pense (3-3500 $ selon Yaesu sur le salon) : plus cher que le TS-590s mais mieux, aussi cher que l’IC-7410 mais plus performant. Le site de Yaesu UK dispose d’une page mise à jour (http://www NULL.yaesu NULL.co NULL.uk/product_info NULL.php?products_id=1244). K4SWL a de chouettes photos sur son site QRPer (http://qrper NULL.com/2012/05/photos-of-the-yaesu-ft-dx-3000/).

FlexRadio a aussi annoncé une nouvelle série Flex-6000 (http://www NULL.flex-radio NULL.com/FLEX-6000 NULL.pdf) avec les modèles 6500 et 6700. A ma connaissance c’est le premier transceiver radioamateur à conversion directe sur la réception et l’émission (ADC 245,76 MegaSamples sur 16 bits et DAC 491,52 MegaSamples sur 16 bits). Le Flex 6500 permet d’obtenir 4 récepteur simultané sur une bande passante 384KHz, dans la gamme de 30 kHz à 77 MHz, le Flex 6700 offre lui 8 récepteurs simultanés couvrant aussi la gamme 135 à 165 MHz. Les performances annoncées sont de tout premier ordre, le prix assez élevé, surtout si on ajoute les options “nécessaires”

Balise autonome WSPR avec MSP430

[GTranslate]

Ces derniers jours je me suis amusé un peu à programmer le LaunchPad de TI avec Energia. Le but étant de voir si du code Arduino (AVR ATMega) était facilement portable sur le MSP430.

Capture port série Balise WSPR MSP430 XV4Y (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/05/Capture-Balise-WSPR-MSP430 NULL.jpg)La réponse est oui, si le code est propre (pas toujours facile) et s’il n’utilise pas des librairies non encore portée sur Energia (ce qui va diminuer avec le temps). En pratique je suis parti d’un morceau de code de F4GKA/VA2GKA (http://www NULL.itsrainingelephants NULL.com/2012/04/29/wspr-30m-ready/#comments) et d’un autre de DH3JO (http://wsprnet NULL.org/drupal/node/1342) pour faire une balise WSPR autonome. Le code est fonctionnel mais n’a pas encore été testé sur l’air. Cerise sur le gâteau, il est “rétroportable” sur Arduino car il suffit de changer les numéros de broches.

J’ai encore un peu de travail autour de cela, mais pour les curieux voici les résultats de quelques heures de réflexion ce matin. Il me faut maintenant connecter cela sur la balise QRSS du kit de G0UPL / G0XAR et voir comment cela se comporte en particulier du point de vue dérive de la synchronisation dans le temps. Contrairement à mon Arduino Nano le LaunchPad n’est pas équipé d’origine d’un quartz mais j’ai ce qu’il faut sous la main.

Au passage la modification du kit balise QRSS peut se faire comme l’a fait IW1QLH avec une échelle R-2R (http://www NULL.iw1qlh NULL.net/index NULL.php/projects-hardware-mainmenu-66/99-qrp/115-qrss-beacon).

Le fichier pour Energia/Arduino est disponible au téléchargement (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/05/WSPR_autonome_XV4Y NULL.txt). Attention, il faudra renommer le fichier en .ino au lieu du .txt (WordPress n’aime pas les .ino)

/* WSPR Static Generator for MSP430G2553
* Code for Energia 005a</code>

* By Yannick DEVOS - XV4Y - May 2012
* Free for HAM Radio usage

* Based on VA2GKA Guenael Jouchet code for sending
* Based on DH3JO Martin Nawrath for WSPR sequence encoding

*
* Internal clock of MSP430 could be not stable enough, try a Crystal
* Start the circuit on the second 0 of an odd minute

* Ouput on 2 bits PinA and PinB
* Mirror on LED1 and LED2 du LaunchPad for testing
* Output to Serial for testing
* Using an R-2R ladder it makes the G0UPL/G0XAR beacon frequency shift
*/

#include// Comment on Arduino, replace mySerial by Serial everywhere

#define wsprPinA 7
#define wsprPinB 6
#define LEDPinA 14
#define LEDPinB 2
#define StartBtn 5

const char SyncVec[162] = {
1,1,0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,1,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,
1,1,0,0,1,1,0,1,0,0,0,1,1,0,1,0,0,0,0,1,1,0,1,0,1,0,1,0,1,0,0,1,0,0,1,0,1,1,0,0,0,1,1,0,1,0,1,0,
0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,1,1,0,1,1,0,0,1,1,0,1,0,0,0,1,1,1,0,0,0,0,0,1,0,1,0,0,1,1,0,0,0,0,
0,0,0,1,1,0,1,0,1,1,0,0,0,1,1,0,0,0
};

const char call[] = "XV4Y ";
const char locator[] = "OK20";
const byte power = 20;

int i;
char symbol;

int ii,bb;

byte c[11]; // encoded message

byte sym[170]; // symbol table 162
byte symt[170]; // symbol table temp
unsigned long n1; // encoded callsign
unsigned long m1; // encodes locator

TimerSerial mySerial; // Comment on Arduino

//******************************************************************
// Defining pins mode
// Encoding the WSPR sequence

void setup() {
mySerial.begin(); // Comment on Arduino
pinMode(wsprPinA, OUTPUT); // Change for Arduino/AVR
pinMode(wsprPinB, OUTPUT); // Change for Arduino/AVR
pinMode(LEDPinA, OUTPUT); // Change for Arduino/AVR
pinMode(LEDPinB, OUTPUT); // Change for Arduino/AVR
pinMode(StartBtn, INPUT_PULLUP); // INPUT for Arduino and put pin to HIGH
// digitalWrite(StartBtn, HIGH); // Don't use this on LaunchPad/MSP430

mySerial.print("\n\n\n*** MSP430 WPSR beacon \n");

encode_call();
mySerial.print("call: ");
mySerial.print(call);
mySerial.print(" ");
mySerial.print(n1,HEX);
mySerial.println(" ");

encode_locator();
mySerial.print("locator: ");
mySerial.print(locator);
mySerial.print(" ");
mySerial.print(m1 &lt;&lt; 2,HEX);
mySerial.println(" ");
for (bb=0;bb mySerial.print(c[bb],HEX);
mySerial.print(",");
}
mySerial.println("");
encode_conv();

mySerial.println("");

for (bb=0;bbmySerial.print(symt[bb],DEC);
mySerial.print(".");
if ( (bb+1) %32 == 0) mySerial.println("");
}
mySerial.println("");

interleave_sync();

mySerial.println("Channel symbols :");
for (bb=0;bb mySerial.print(sym[bb],DEC);
mySerial.print(".");
if ( (bb+1) %32 == 0) mySerial.println("");
}
mySerial.println("");

};

//******************************************************************
// Here starts the actual sequence sending

void loop() {
digitalWrite( wsprPinB, LOW );
digitalWrite( LEDPinB, LOW );

digitalWrite( wsprPinA, LOW );
digitalWrite( LEDPinA, LOW );
mySerial.println("*** Sequence sending delayed.");
mySerial.println("*** Press S2 to start now.");
i = 0;
while (i &lt; 9408) {
delay(1);
if (digitalRead(StartBtn)==LOW) {
i = 20000;
} else {
i++;
};

}

for (i = 0; i &lt; 170; i++) { symbol = sym[i]; mySerial.print(symbol%10, DEC); mySerial.print(" "); digitalWrite( wsprPinB, (symbol &gt;&gt; 1) );
digitalWrite( LEDPinB, (symbol &gt;&gt; 1) );

digitalWrite( wsprPinA, (symbol &amp; 1) );
digitalWrite( LEDPinA, (symbol &amp; 1) );
delay(682.667);
};
mySerial.println("\n *** End of sequence");
};

/* Functions declaration
* This code by DH3JO
* KHM 2009 / Martin Nawrath
* Kunsthochschule fuer Medien Koeln
* Academy of Media Arts Cologne
*/

//******************************************************************
void encode() {
encode_call();
encode_locator();
encode_conv();
interleave_sync();
};
//******************************************************************
// normalize characters 0..9 A..Z Space in order 0..36
char chr_normf(char bc ) {
char cc=36;
if (bc &gt;= '0' &amp;&amp; bc = 'A' &amp;&amp; bc &gt; 20;
t1=n1;
c[1]= t1 &gt;&gt; 12;
t1=n1;
c[2]= t1 &gt;&gt; 4;
t1=n1;
c[3]= t1 &lt;&lt; 4; } //****************************************************************** void encode_locator(){ unsigned long t1; // coding of locator m1=179-10*(chr_normf(locator[0])-10)-chr_normf(locator[2]); m1=m1*180+10*(chr_normf(locator[1])-10)+chr_normf(locator[3]); m1=m1*128+power+64; // merge coded locator and power into message array c[] t1=m1; c[3]= c[3] + ( 0x0f &amp; t1 &gt;&gt; 18);
t1=m1;
c[4]= t1 &gt;&gt; 10;
t1=m1;
c[5]= t1 &gt;&gt; 2;
t1=m1;
c[6]= t1 &lt;&lt; 6;

}
//******************************************************************
// convolutional encoding of message array c[] into a 162 bit stream
void encode_conv(){
int bc=0;
int cnt=0;
int cc;
unsigned long sh1=0;

cc=c[0];

for (int i=0; i &lt; 81;i++) {
if (i % 8 == 0 ) {
cc=c[bc];
bc++;
}
if (cc &amp; 0x80) sh1=sh1 | 1;

symt[cnt++]=parity(sh1 &amp; 0xF2D05351);
symt[cnt++]=parity(sh1 &amp; 0xE4613C47);

cc=cc &lt;&lt; 1;
sh1=sh1 &lt;&lt; 1;
}

}

//******************************************************************
byte parity(unsigned long li)
{
byte po = 0;
while(li != 0)
{
po++;
li&amp;= (li-1);
}
return (po &amp; 1);
}

//******************************************************************
// interleave reorder the 162 data bits and and merge table with the sync vector
void interleave_sync(){
int ii,ij,b2,bis,ip;
ip=0;

for (ii=0;iibis=1;
ij=0;
for (b2=0;b2 &lt; 8 ;b2++) { if (ii &amp; bis) ij= ij | (0x80 &gt;&gt; b2);
bis=bis &lt;&lt; 1;
}
if (ij &lt; 162 ) {
sym[ij]= SyncVec[ij] +2*symt[ip];
ip++;
}
}
}

Premiers pas avec le LaunchPad de TI

Texas Instruments LaunchPad Value kit MSP430 (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/05/100_3157 NULL.jpg)J’ai reçu mes deux kits LaunchPad il y a quelques jours. Oui, deux, car une première commande qui s’était conclue par une erreur du serveur web a quand même abouti. A 4,30$ le bout je n’ai pas annulé la commande… Au passage, livraison en temps record par Fedex avec 4 jours ouvrés, la douane ne semble même pas avoir ouvert le paquet.

La présentation est beaucoup plus valorisante que celle de l’Arduino Nano qui m’était tombé entre les mains il y a un an. Belle boîte, câble USB, petits autocollants, connecteurs… rien ne manque. Bonne nouvelle aussi, les micro-contrôleurs livrés sont équipés de respectivement 16ko (MSP430G2553) et 8ko (MSP430G2452), beaucoup mieux que les 1 et 2ko indiqués sur le site web lors de la commande. Détail pratique : la platine du Launchpad est équipée de petits patins en mousse permettant de la poser sur un bureau sans problèmes.

IDE Energia pour LaunchPad sous OS X (http://xv4y NULL.radioclub NULL.asia/wp-content/uploads/2012/05/Energia_Launchpad NULL.jpg)J’ai commencé à jouer un peu avec ce circuit en utilisant l’IDE Energia. Ce dernier étant un fork d’Arduino, la prise en main est rapide. Le fait de se retrouver avec un langage similaire (inspiré de Wiring/Processing) aide aussi beaucoup. Par contre le manque de documentation ou du moins l’absence d’homogénéité de celle-ci est pénalisante. Contrairement à la plateforme Arduino pas de définition matériel précise et le brochage n’est pas évident à connaître car il change suivant la version du processeur. Les terminologies utilisées me paraissent un peu obscures mais c’est peut-être une histoire de temps pour trouver les docs.

En tous cas, le fait de pouvoir programmer facilement le micro-contrôleur et ensuite implanter le CI autonome dans un circuit ouvre de nouvelles possibilités.

Petit ajout : La version d’Energia que j’utilise est la 005a, mais celle sur laquelle travaille les développeur est la 006. Pas mal de travail entre les deux, en particulier sur le nommage des broches. L‘exemple disponible en ligne pour utiliser la sonde thermomètre ne fonctionne pas tel que car la broche P1.3 qui lit le contact PUSH2 semble en état instable. Elle permet en tous cas de voir que les broches sont accessibles tout simplement par le numéro sur le boîtier, mais il faut alors se plonger dans les datasheet… D’autres exemples sont en ligne mais sont prévus pour la 006, et je n’ai pas trop envie de me mettre à compiler moi-même le logiciel.