avr 11

Bon ça y est… Je suis passé à l’étape après la LED : l’afficheur LCD (celui de ma carte de dev AVRée).

Après avoir un peu galéré pour récupérer une doc correspondant à mon afficheur, j’ai finalement réussi à écrire un driver (basique, sans optimisation aucune… Mais qui avait le mérite de fonctionner!). Suite à une mauvaise manip (attention aux fichiers dont seul la casse du nom change sous XCode !), j’ai fini par reprendre le driver LCD d’une suite de librairies dédiées aux AVR et à la tunner pour ma config (lecture du LCD physiquement impossible : RW forcé à W).

En ce qui concerne la prog du 2313, je me suis bricolé un USBTinyISP pour pouvoir le programmer depuis mon Mac. J’ai eu quelques soucis au début : mon programmateur était bien reconnu par ma tour mais il ne l’était par aucun des portables qui trainent ici… Après quelques prises de tête et ré-étude du schéma, je me suis rendu compte que les diodes Zener assurant la limitation de tension sur les broches de données du bus usb sont nécessaires pour que les signaux soient interprétés sur tous les ordis (la tour tolère le +5V mais à priori les portables non… je n’ai heureusement pas grillé de port USB :) )

J’ai utilisé la breadboard de la carte de dev PSoC pour mon USBTinyISP (en laissant la connectique DB25 au cas où) et ça fonctionne plutôt pas mal. Donc dès que je trouve un peu de temps, je pense que je vais migrer tout ça vers une plaque pré-percée. Sinon l’autre “bonne nouvelle” c’est que ma carte de dev AVR était prévue pour être programmée via un port série (un switch permet de passer du mode programmation en mode tri-state pendant l’exécution normale, offrant ainsi la possibilité de laisser le programmateur branché sans danger pendant la phase de “run” normale). Un petit bémol là dessus : le USBTinyISP ne fonctionnait pas de base, j’ai été obligé de court-circuiter un trigger de Schmidt, mais l’inconvénient, c’est qu’en passant en mode Programmation, la broche reset du programmateur est alimentée par le montage… D’où un moment de surprise et de panique lorsque j’ai vu la LED d’alimentation de mon programmateur s’allumer alors que ce dernier n’était pas alimenté par l’USB…

Prochaine étape : connecter un GPS ?

written by Mathias

mar 20

Youpi : ça clignotte !

Apres avoir acheté sur eBay une carte de dev à la base orientée ancienne génération AT90S2313 (AVRée de Elektor), et quelques ATTiny2313 ainsi que des ATMega8, j’ai enfin de quoi tester les AVR…

Le souci : la programmation… Heureusement qu’il me reste une tour avec une prise lpt. Via un ssh dessus et par AVRDUDE (faudra que je re-teste UISP) j’ai réussi à programmer mon premier 2313 pour faire clignoter une LED ! Magique ! (Merci la carte de dev PSoC avec sa mini breadboard qui m’a permis de me servir de cette breadboard pour programmer le 2313 en utilisant l’alimentation “stabilisée” de la carte). J’en ai profité, après quelques mauvaises manips, pour re-tester le port parallèle du PC, ça faisait longtemps et ça m’a rappelé quelques bons souvenirs : faire clignoter des LEDs branchées sur le port //, lire les changements d’états… le tout sous Ubuntu (quelques galères avec les IOPerm et la librairie io à inclure, qui ne se trouve pas dans asm mais dans sys sur mon Ubuntu).
Il me reste quand même pas mal de progrès à faire mais je pense que je vais pouvoir pas mal m’amuser avec la carte de dev (LEDS, boutons poussoir, LCD 2×16, baie d’extension…), le tiny2313 étant compatible pin à pin avec l’AT90S2313, ça permet d’utiliser la carte sans aucune modification matérielle.

L’inconvénient pour le moment est la nécessité de retirer le tiny2313 pour le replacer sur la carte de prog., de déplacer la tour pour pouvoir accéder au port parallèle puis de la replacer à chaque nouvelle programmation du micro… Ca risque de ne pas être drôle longtemps, d’où l’urgence “relative” de me fabriquer un USBtinyISP ou USBASP : après quelques recherches dans le fond de mes tiroirs j’ai trouvé pas mal de trucs utiles mais il me manque les résistances 68 ohms qui permettent à l’host de détecter la présence d’un périphérique USB.

To be continued soon.

written by Mathias

fév 14

Bon alors j’ai vraiment envie de me replonger dans l’électronique… Surtout que maintenant j’ai un peu de place et un peu de matos aussi.

Pour rattaquer, je suis en train de bidouiller un PSoC (CY8C29466) via un mini prog 3210 mais la suite PSoC designer ne fonctionne que sous Windows… Et pour le moment j’ai encore un peu de mal à le faire fonctionner comme je voudrais (allumage LED ok mais fonctionnement du CAN obscur…). L’autre micro qui m’attire en ce moment est l’ATMEL Attiny2313, sur lequel la gestion de l’USB low-speed peut être implémentée en soft : faut que je teste ça.

Sauf que pour programmer les ATtiny des softs sont dispos mais la plupart se basent sur la présence d’un port parallèle. D’où mon soucis actuel : sur mon macbook, je n’ai ni port parallèle (pour la prog) ni port série (utile pour débugger…) Je cherche donc un convertisseur USB Parallèle qui soit utilisable sous Mac OS/Linux comme un port parallèle.

Autant un grep CONFIG_USB_SERIAL sur le fichier de config de mon noyau me donne des pistes sur les adaptateurs USB - Série supportés, autant je ne sais pas d’où partir pour trouver des infos concernant un adaptateur USB - Parallele…

Pour le moment j’ai trouvé ça pour moins de 15euros chez ldlc et dont un utilisateur confirme le bon fonctionnement sous linux, les questions : d’une part c’est un adaptateur USB -> Centronics (j’aurais préféré parallèle DB25, faut que je regarde si c’est compatible auquel cas il suffirait d’utiliser une fichie Centronics sur le programmateur), et d’autre part, reste à voir si c’est utilisable pour autre chose qu’une imprimante… [Note, à priori le matos basé sur des chips Prolific a l’air bien supporté sous Linux]
Une autre solution serait la fabrication maison d’un adaptateur :) (en utilisant le port parallèle d’un vieux PC pour la première programmation du chip utilisé sur le programmateur couplé à un bootloader pour mettre à jour le firmware… mais j’ai peur de ne jamais trouver le temps de bricoler ça)

En ce qui concerne les softs (j’avoue ne pas encore avoir pris le temps de regarder) :

  • Kicad, Eagle ?
  • Voir s’il existe un environnement de dev un peu graphique autour de AVR GCC

Les idées de réalisation :

  • Interfacer un écran de Nokia 3210/3310 (j’en ai un dont quelques lignes sont mortes mais qui reste utilisable sur les autres :) )
  • Mettre en pratique l’utilisation de LED comme émetteur mais aussi récepteur (faut que je retrouve les docs là dessus, ça m’avait paru sympa)
  • Si je trouve enfin un récepteur GPS pas trop cher et filaire, voir pour l’interfacer (cf détecteur de radar)

Note : à regarder : Armadeus

written by Mathias

fév 04

Suite à un précédent article sur Deezer, j’ai commencé à regarder pourquoi les softs disponibles pour transférer la musique sur mon lecteur mp3 n’aimaient pas mes fichiers… Et il s’avère que ces softs sont assez vieux ne sont plus très jeunes, et ont donc été écrits pour des id3 tag v2.3 max or ffmpeg insère [chez moi] les méta données en id3 v2.4.

Deux possibilités s’offrent à moi : encoder les méta données en id3 v2.3 ou modifier le soft pour gérer aussi bien les id3 v2.3 que les id3 v2.4… Je commence donc [je l’avoue : j’ai d’abord cherché à encoder les méta données avec une ancienne version mais j’ai pas trouvé… ] à chercher des infos sur les id3 v2.4.

Plus de news prochainement (si je trouve le temps de continuer mes investigations).

PS : Les liens vers les sites concernés : yampp, yamppLink, ylink, le forum autour de yampp, id3 et l’ancienne librairie utilisée dans ylink pour décoder les id3.

PS2 : En attendant de trouver mieux, voici quelques lignes pour renommer les fichiers de façon à ce qu’ils soient traités par ylink :

#!/bin/sh

# Script to rename mp3 files “$author - $title.mp3″ to “$author–$title.mp3″ so that ylink can process it smoothly
# The separator for ylink can be ‘–’ or ‘__’, if none is found, the author is considered to be the string before the first space char.

SEPARATOR=’–’

ls *.mp3 | grep ‘\ -\ ‘ | while read line
do
newline=`echo $line | sed “s/\ -\ /$SEPARATOR/g”`
#echo “Renaming $line to $newline”
mv “$line” “$newline”
done

Quelques liens qui m’ont été utiles pour ces quelques lignes (je me bats toujours quand je dois traiter des noms de fichiers contenant des espaces…) : Unix batch file rename, un répertoire où je stocke quelques uns de mes essais plus ou moins concluants.

written by Mathias

jan 31

En fouillant un peu sur mon PC (sous CentOS), je me suis rendu compte que certains fichier Flash* trainaient dans /tmp.

file /tmp/FlashwaEi9I
/tmp/FlashwaEi9I: Macromedia Flash Video

Un petit mplayer sur ce[s] fichier[s] et je me rends compte que ces fichiers contiennent les chansons que j’écoutais sur Deezer avant que Firefox ne plante…

Playing /tmp/Flashk91NXR.
libavformat file format detected.
Seek failed
=======================================
Opening audio decoder: [mp3lib] MPEG layer-2, layer-3
AUDIO: 22050 Hz, 2 ch, s16le, 128.0 kbit/18.14% (ratio: 16000->88200)
Selected audio codec: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)
=======================================

D’où une bonne surprise pour moi qui voulais mettre un peu de musique sur mon lecteur mp3 pour les longues heures de trajet qui m’attendent… Le transfert de fichier sur ce lecteur [yampp7] n’étant, que je sache, possible qu’avec des fichiers mp3, merci ffmpeg. (Encore quelques petits soucis : les softs de transfert n’ont pas l’air de reconnaître les meta insérés par ffmpeg, d’où le nommage du fichier avec le nom de l’auteur… à investiguer)

#!/bin/sh

author=”Author”
album=”Album”
title=$1

cp /tmp/Flash* ./test.flv

if [ ! -d “$author” ];
then mkdir “$author”;
fi

if [ ! -d “$author”/”$album” ];
then mkdir “$author”/”$album”;
fi

#ffmpeg -i test.flv -vn -f mp3 -ac 2 -ab 128k -author “$author” -album “$album” -title “$title” “$author”/”$album”/”$title.mp3″
ffmpeg -i test.flv -vn -f mp3 -ac 2 -ab 128k -author “$author” -album “$album” -title “$title” “$author”/”$album”/”$author”–”$title.mp3″

rm test.flv

written by Mathias

jan 31

Juste un petit pense bête utile lorsqu’on a “oublié” son user/mot de passe sur un Linksys WRT54G pour accéder à l’interface web d’administration mais qu’on est encore capable de se logguer en telnet/ssh sur la bête :

nvram http_passwrd = “admin”
nvram commit

Ca peut sauver des vies :)

cf : Root Password reset in Telnet

written by Mathias