Port série logiciel pour Tiny

Afin de ne pas avoir à maintenir plusieurs sujets je ne conserve que la version internationale publiée à cet endroit :

http://arduino.cc/forum/index.php/topic,118794.0.html

JLB

Bonjour,

Dans le même genre il existe une note d'application d'ATMEL au sujet du software serial sur ATTiny :
http://www.avrfreaks.net/index.php?module=Freaks%20Tools&func=viewItem&item_id=525
(Le .pdf contient les explications détaillés et le .zip contient le code d'exemple + la librairie.)

Cette note d'application est basé sur le même principe que le code de Jihelbi mais au lieu d'un couple PCint + timer elle utilise un couple timer + USI (module de communication série universel des ATtiny).
A voir niveau taille du code ce que ça donne en comparaison.

jihelbi:
Dans un premier temps j'ai pensé à utiliser l'USI mais cela ne me laissait pas vraiment le choix des pins utilisés. Comme sur les ATtiny cela est assez important j'ai préféré faire de cette façon surtout que j'aime bien pouvoir laissez le programmateur branché sur le Tiny pendant que je bidouille.

C'est vrai que ça peut poser probléme dans certain montage de pas pouvoir choisir les pins.

jihelbi:
J'ai mis cela dans un .h avec quelques extensions :

  • Envoi de chaînes : TXprint(string, booleen saut de ligne)
  • Envoi en décimal ascii : DECprint(unsigned int)
  • Envoi en hexa : HEXprint(unsigned int, byte nombre de digits)
  • Délai en mS : mydelay(unsigned int)

Si tu veut pas te casser la tête à faire toute les fonctions pour chaque type de données tu peut faire une classe TinyUART (par exemple) avec les fonctions de base (available(), read(), peek(), flush() et write()) et la faire hériter de "stream" (qui hérite elle même de "print").
Ca te donne alors accès au fonctions standard telle que .print(), println(), ...

jihelbi:
Et cela me donne une librairie de 3 Ko...

J'en suis à compter les octets. C'est pour cela que je n'ais pas fait une librairie c++.

Aie, c'est vrai.

Dans ce cas, c'est un peu relou sur plateforme AVR mais tu peut implémenter tes fonctions en tant que stream FILE*.
Et utiliser les fonctions standard pour I/O textuelle : printf(), scanf(), ...
http://www.gnu.org/savannah-checkouts/non-gnu/avr-libc/user-manual/group__avr__stdio.html