USB & ATtiny2313

Interfaces électroniques séries, parallèles, USB etc

Modérateur : Modérateur

lguenhael
PONCTUEL
PONCTUEL
Messages : 19
Inscription : 30 mai 2005 14:08
Localisation : Rennes

USB & ATtiny2313

Message par lguenhael »

Bonjour,

Ayant peu de connaissances en électronique, je suis à la recherche de toutes informations susceptibles de m'aider dans l'élaboration de mon projet.

Présentation du problème :

-Dans un premier temps j’aimerai programmer un microcontrôleur ATtiny2313 pour commander 4 sorties (LED) représentant l’état de 4 entrées (Boutons) du microcontrôleur.
N’ayant jamais programmé de up cela me servira de base pour la suite.
Quelqu’un aurait-il un programme très simple dont je pourrai m’inspirer afin d’y parvenir ? (Je souhaite le programmer sous AVRstudio)
Après compilation la transmission s’effectuera à l’aide du Dongle visible sur ce site et de PonyProg2000.

-Par la suite j’aimerai commander 8 sorties du up via un ordinateur et ce à l’aide d’un port USB. Pour cela il me faut donc :
Effectuer le montage en m’inspirant du cite
http://xavier.fenard.free.fr/USBDebutant.htm
Ecrire le programme du up.
Mettre au point un driver avec Windows 98 DDK
(la partie la plus difficile je pense).
Ecrire un programme en VB en introduisant la dll pilotant le up.
Je recherche donc des personnes ayant déjà travaillé sur l’élaboration d’un tel projet ou toutes aides ou programmes en rapport avec ces différentes parties.

Si vous avez des questions ou remarques vis-à-vis de tout ceci n’hésitez pas !

JP
Administrateur
Administrateur
Messages : 2323
Inscription : 23 sept. 2003 18:14
Localisation : Strasbourg
Contact :

Message par JP »

Bonjour lguenhael et bienvenue,
-Dans un premier temps j’aimerai programmer un microcontrôleur ATtiny2313 pour commander 4 sorties (LED) représentant l’état de 4 entrées (Boutons) du microcontrôleur.
N’ayant jamais programmé de up cela me servira de base pour la suite.
Quelqu’un aurait-il un programme très simple dont je pourrai m’inspirer afin d’y parvenir ? (Je souhaite le programmer sous AVRstudio)
Donc tu souhaites programmer en assembleur, c'est bien ça ?
Pour débuter, je peux déjà te conseiller le site ATmicroprog, tu y trouveras toutes les explications sur le fonctionnement des entrées/sorties.
Si tu as des questions n'hésites pas, Sly (Webmaster d'ATmicrogrog) se fera sûrement un plaisir de te répondre :)
Mettre au point un driver avec Windows 98 DDK
Je crois que le driver pour Windows 98 existe déjà :
http://cesko.euro-science.net/IgorPlugU ... R)_eng.htm

Si ton but final est juste de piloter 8bits à partir du port USB, il existe aussi des modules tout fait (FT245).
Qui est peut être un peu plus fiable que l'IgorPlug-USB :
Le quartz a une valeur de 12MHZ, l'AVR est "over clock " puisque le fonctionnement normale est a 10MHZ.
mais plus cher aussi.

L'AT90S2313 doit aussi être en voie de disparition, vérifies aussi que l'IgorPlug-USB est compatible avec l'ATtiny2313

a+
JP

lguenhael
PONCTUEL
PONCTUEL
Messages : 19
Inscription : 30 mai 2005 14:08
Localisation : Rennes

Message par lguenhael »

Salut JP,

En effet le site ATmicroprog est très intéressant, j’avais déjà eu l’occasion de le visiter tout comme celui d’Igor Cesko qui a réalisé un travail très proche de ce que je souhaite faire. Cependant le driver qu’il propose est propre à son montage alors que le mien sera amené à évoluer ce qui implique que je puisse modifier ce driver. De plus je souhaite le distribuer, pour cela il me faut les droits c’est pourquoi je fais le choix de le réaliser moi-même bien que je m’inspirerai sûrement des sources du driver d’Igor Cesko pour cela.

Mais je n’en suis pas encor là, pour le moment je m’intéresse surtout à la programmation de l’ATtyni2313 et en particulier pour ce montage:

Image

Cependant PB0 et PB1 me servirons plus tard pour la communication USB et je voulais donc savoir comment programmer PB2 à PB7 en sorties tout en programmant PB0 et PB1 en comparateur analogique.
Etant donné que le port B servirait donc à la fois de sortie et de comparateur analogique, faut-il utiliser les fonctions cbi et sbi pour commander les sorties indépendamment ?
En résumé qu’elles sont la ou les possibilités pour y arriver ?


Pour les modules USB tel que le FT232 je m’y étai déjà intéressé mais leur prix restent relativement élevés pour mon application.

Pour ce qui est de l’AT90S2313 il ne se fabrique plus à ma connaissance et a été remplacé par l’ATtiny2313, ce dernier étant par ailleurs parfaitement compatible avec l’IgorPlug-USB.
Pièces jointes
ATtiny2313 LED BP.GIF
ATtiny2313 LED BP.GIF (10.66 Kio) Consulté 11553 fois

JP
Administrateur
Administrateur
Messages : 2323
Inscription : 23 sept. 2003 18:14
Localisation : Strasbourg
Contact :

Message par JP »

Pour PB0 et PB1 en entrée et PB2 à PB7 en sortie tu peux faire:

Code : Tout sélectionner

ldi r16,$fc	;Charge le registre r16 par la valeur $FC qui fait en binaire 11111100 donc tu as bien les 2 premiers bits du portb en entrée et les autres  en sortie.
out ddrb,r16	;Copie le contenu de r16 dans DDRB 
Etant donné que le port B servirait donc à la fois de sortie et de comparateur analogique, faut-il utiliser les fonctions cbi et sbi pour commander les sorties indépendamment ?
Oui, tu peux utiliser cbi et sbi

Code : Tout sélectionner

sbi DDRB,0 ;met PB0 en sortie
En résumé qu’elles sont la ou les possibilités pour y arriver ?
Tu peux aussi faire un masque, ca doit donner quelque chose du genre:

Code : Tout sélectionner

ldi r16,(DDRB|0x01)
out DDRB,r16 ; Si DDRB est à 11111100b DDRB passe à 111111101b donc PB0 passe d'entrée en sortie.
Pour ce qui est de l’AT90S2313 il ne se fabrique plus à ma connaissance et a été remplacé par l’ATtiny2313, ce dernier étant par ailleurs parfaitement compatible avec l’IgorPlug-USB.
Donc si tu as vérifié tout va bien. :)
J'ai déjà vu des problèmes de compatibilité d'une génération à l'autre, comme entre l'ATmega163 et l'ATmega16, donc mieux vaut vérifier.

A quoi te servent les résistances R2 à R5 ?
Tu comptes faire l'anti-rebonds logiciellement ?
Je pense que tu dois le savoir mais on ne sait jamais : il faut aussi des condensateurs ~20p pour ton quartz.

a+
JP

Avatar de l’utilisateur
vincevg
ACCRO
ACCRO
Messages : 803
Inscription : 05 mars 2005 16:58
Localisation : SMalville
Contact :

Message par vincevg »

Salut à tous les 2,

R2 à R5 servent à limiter le courant dans le port D donc à rien.

Par contre quand tes BP sont ouverts, tu n'as pas d'état logique définis. Préfère un BP relié à la masse avec en parallèle un condo anti rebond. En plus ton ATTyni doit avoir des pull up interne (à vérifier) sinon il les faut.

Pour tes ports, le masquage ou le cbi et sbi c'est bien mais Atmel recommande de définir les ports non utilisé en sortie et il faut donc y penser (ceci dit sans le faire je n'ai jamais rien cramé mais pour la consommation c'est important).


Ce lien ne marche pas. Domage je cherche aussi à faire de l'USB en direct (sans FT).
Vince
http://anyedit.free.fr/
http://electropol.free.fr/

Les amis, ça va, ça vient, mais les ennemis, ça s’accumule.

JP
Administrateur
Administrateur
Messages : 2323
Inscription : 23 sept. 2003 18:14
Localisation : Strasbourg
Contact :

Message par JP »

Par contre quand tes BP sont ouverts, tu n'as pas d'état logique définis. Préfère un BP relié à la masse avec en parallèle un condo anti rebond. En plus ton ATTyni doit avoir des pull up interne (à vérifier) sinon il les faut.
Je le vois aussi plutôt comme ça :)
Ce lien ne marche pas. Domage je cherche aussi à faire de l'USB en direct (sans FT).
Il ya un point en trop à la fin du lien, ça devrait fonctionner :
http://xavier.fenard.free.fr/USBDebutant.htm
Je modifie ça.

lguenhael
PONCTUEL
PONCTUEL
Messages : 19
Inscription : 30 mai 2005 14:08
Localisation : Rennes

Message par lguenhael »

Avant tout merci à vous deux pour votre aide!

Pour les résistances R2 à R5 je pensais qu’il en fallait aussi en entrée pour éviter les cours circuits, j’en déduit donc qu’elles ne sont utiles qu’en sortie ?

Pour les condo du quartz je sais qu’il en faut mais Igor Cesko n’en met pas donc je me suis dit qu’ils n’étaient pas indispensables. Sinon quels sont les conséquences ou risques si je ne modifie pas mon montage ? (Car pour tout dire je n’en ai pas commandé)

J’avais zappé les problèmes d’anti rebond ! Quelle valeur de condo dois-je utiliser ? J’ai à ma disposition des 100nF, 4.7uF et 10uF, un condo de 100n conviendrait-il ?
Je sais que l’ATtiny a des pull up mais je dois avouer que je ne comprend pas très bien à quoi cela correspond donc si vous pouviez me l’expliquer succinctement.

Si j’ai bien compris pour que l’état logique d’une entrée soit défini elle doit soit être reliée à la masse (état logique 0) soit être alimentée (état logique 1) et si elle reste libre alors le up n’est pas capable de dire que l’état logique est 0, c’est bien ça ?

Quand mes BP sont ouvert sur le montage qui suit, l’état logique est-il définit cette fois? J’ai vu un montage où il y avait une résistance en parallèle avec le condensateur (peut être pour que l'état logique soit définit quand le BP est ouvert justement), faut-il que je fasse pareil ?
Pièces jointes
ATtiny2313 LED BP.GIF
ATtiny2313 LED BP.GIF (11.81 Kio) Consulté 11513 fois

lguenhael
PONCTUEL
PONCTUEL
Messages : 19
Inscription : 30 mai 2005 14:08
Localisation : Rennes

Message par lguenhael »

Pour Vincevg en particulier:

Je ne sais pas si tu connaissais ce lien donc au cas où voici toutes les sources du travail d'Igor Cesko sous le nom d'AVR309USB (ou USB to AVR)mais il s'agit bien de l'IgorPlug-USB.

http://www.cesko.host.sk/downloads/USB% ... 20Note.zip

JP
Administrateur
Administrateur
Messages : 2323
Inscription : 23 sept. 2003 18:14
Localisation : Strasbourg
Contact :

Message par JP »

Pour les résistances R2 à R5 je pensais qu’il en fallait aussi en entrée pour éviter les cours circuits, j’en déduit donc qu’elles ne sont utiles qu’en sortie ?
Oui, la résistance d'entrée est très élevée.
Pour les condo du quartz je sais qu’il en faut mais Igor Cesko n’en met pas donc je me suis dit qu’ils n’étaient pas indispensables. Sinon quels sont les conséquences ou risques si je ne modifie pas mon montage ? (Car pour tout dire je n’en ai pas commandé)
Le risque c'est que ca ne fonctionne pas ou pas à la bonne fréquence. Et pour de l'usb les timing sont plutôt importants.
J'ai vu qu'il n'en a pas mit et ça me semble bizarre.
Tu peux toujours essayer sans, si ça ne fonctionne pas tu n'auras pas à chercher bien loin pour trouver le problème. :)
J’avais zappé les problèmes d’anti rebond ! Quelle valeur de condo dois-je utiliser ? J’ai à ma disposition des 100nF, 4.7uF et 10uF, un condo de 100n conviendrait-il ?
Déjà pour le schéma, ça devrait plutôt être comme sur le schéma ci-joint.
Pour la valeur, 100nf ç'est peut être un peut juste, 4.7µ devrait fonctionner.
Je sais que l’ATtiny a des pull up mais je dois avouer que je ne comprend pas très bien à quoi cela correspond donc si vous pouviez me l’expliquer succinctement.
Par défaut l'entrée est en haute impédance càd qu'elle n'est ni à un état bas ni à un état haut, la pull up est une résistance qui ramène l'entrée à un état haut par défaut.
Sur le schéma ci-joint, quand le BP est ouvert tu auras un état haut sur l'entrée. En appuyant sur le BP tu court-circuites le condo donc tu ramènes l'entrée à la masse. En relâchant le BP (le moment où tu devrais avoir des rebonds) le condensateur va se charger progressivement à travers la résistance Rpu, donc pas de rebonds.
Mais l'anti rebond n'est nécessaire que si tu as une notion de comptage ou d'interruption dans ton programme.
Si j’ai bien compris pour que l’état logique d’une entrée soit défini elle doit soit être reliée à la masse (état logique 0) soit être alimentée (état logique 1) et si elle reste libre alors le up n’est pas capable de dire que l’état logique est 0, c’est bien ça ?
Oui
You don't have permission to access /downloads/USB to RS232 Application Note.zip on this server.
:cry:

a+
JP
Pièces jointes
rebonds.gif
rebonds.gif (2.73 Kio) Consulté 11544 fois

Avatar de l’utilisateur
vincevg
ACCRO
ACCRO
Messages : 803
Inscription : 05 mars 2005 16:58
Localisation : SMalville
Contact :

Message par vincevg »

Moi non plus je ne peux pas le télécharger.
Je sais que l’ATtiny a des pull up mais je dois avouer que je ne comprend pas très bien à quoi cela correspond donc si vous pouviez me l’expliquer succinctement.
Il faut définir les pull up sur les entrées. Si tu ne sais pas comment faire, télécharge la doc sur les port sur mon site page AVR ressources. Si tu n'y arrive pas je te posterais un exemple.

Pour le schéma celui de JP est parfait, comme d'hab, moi je ne met pas d'anti rebond. Je suis un adepte du 0 composants périphériques. Si ton montage s'inscrit dans la durée ne met pas n'importe quel condensateur il est rare qu'un céramique GII conserve ces caractéristiques 10 ans.
Pour les condo du quartz je sais qu’il en faut mais Igor Cesko n’en met pas donc je me suis dit qu’ils n’étaient pas indispensables. Sinon quels sont les conséquences ou risques si je ne modifie pas mon montage ? (Car pour tout dire je n’en ai pas commandé)
Je pense que c'est un résonnateur céramique qui n'a pas besoin de condo périphérique. Voit la doc ATMEL il me semble qu'ils en préconisent quelques un.

Si tu comptes programmer in situe n'oublie pas le connecteur.
Vince
http://anyedit.free.fr/
http://electropol.free.fr/

Les amis, ça va, ça vient, mais les ennemis, ça s’accumule.

Répondre