Programmation microcontrolleurs atmel

Simon T.

Membre confirmé
28 Juillet 2003
75
2
Bonjour !

Quelqu'un pourrait-il me dire s'il est possible de programmer en assembleur des micro-controlleurs atmel (j'ai un atmega8535L) sous mac os X ?

J'ai essayé "avra", mais ça ne fonctionne pas chez moi, j'ai chaque fois l'erreur: Bus error...

Quelqu'un aurait-il une idée ?

J'ai aussi besoin d'un programme pour transférer le programme sur le microcontrolleur, quelqu'un sait-il s'il est possible d'installer Ponyprog sur mac os x ?

a+

Simon
 
Le mieux, c'est de compiler AVR-GCC sur mac os X. C'est une idée que j'ai en tête depuis un momment mais j'attend le momment propice pour essayer.
C'est le compilateur C open source pour les AVR d'atmel (dont le 8535 fait partie). Ensuite, libre a toi d'ajouter des bouts en assembleur dans ton code en C.
 
Ok, merci. Par contre, on fait comment pour inclure des bouts d'assembleur dans le code? J'ai jamais programmé de microcontrolleurs en C (en fait j'en ai jamais vraiment programmés tout court), est-ce que tu connais un site sur ce sujet. Je te ferai part de mes premières expériences dans le domaine. A+

Simon
 
Hello,

Pour inclure de l'assembleur dans le code c, j'ai vu qu'il existait les fonctions asm() et __asm__(). Laquelle doit-on utiliser en priorité, et quel fichier faut-il inclure dans l'entête pour pouvoir utiliser cette fonction? Merci!

Salutations.
Simon
 
Ben finalement, j'ai installé la version précédente d'avra (0.9) et elle fonctionne sans problème sous os x. Donc tout est parfait.
cool.gif


Simon
 
et pourquoi ? on est en 2004 l'assembler c'est bien
mais si on peut utiliser un language un peu plus évoluer
je vois pas le problème de super naze

c'est comme faire du cobol tu serais pas cobolien ?
 
Plumber, tu continues dans le comique troupier j'ai l'impression...quand on programme des microcontroleurs avec 256 octets de RAM, et bien oui il faut bien le reconnaître, c'est de la PURE CONNERIE de programmer en autre chose qu'en assembleur. Quand il s'agit de faire tenir son programme dans 1000 instructions processeur et que pour faire une boucle le meilleur compilateur C prend quatre fois plus de place que du code simple écrit en assembleur, et bien oui, peut-être que ça t'étonne, mais c'est vraiment PAS intelligent...j'espère que tu optimise mieux FreeBSD que tes microcontroleurs...à moins que tu ne fasses que parler au lieu de programmer??ça expliquerait bien des choses....
Enfin je suis tout à fait d'acord avec toi, quand il ne s'agit pas de programmer des microcontroleurs(ça c'est en assembleur) ou le noyau d'un OS(ça c'est en C), il n'y a aucune raison de programmer dans un autre langage que le python,on fait tout le reste et très bien avec.
 
pour l'assembleur en C c'est la fonction asm(). Tu trouveras les infos sur le net pour la manière d'implémenter car je me souviens plus tres bien. Ensuite, tu peux utiliser les instructions assembleur du microcontroleur. (ADD SUB RJMP etc)
voila un petit exemple d'un truc que j'ai fait il y a qq temps.

<font class="small">Code:</font><hr /><pre>
asm volatile
(
"T3: SBIW %A0,1 \r\n"
" BREQ T4 \r\n"
" SBIS %2, %3 \r\n"
" rjmp T3 \r\n"
"T4: SBIW %A0,1 \r\n"
:"=w" (u): "0" (u), "I" (_SFR_IO_ADDR(BQ_PIN)),"I" (HQ)
);
</pre><hr />

la derniere ligne, c'est pour faire correspondre les variables (C) aux registres (ASM) (les %1 %2 etc) et remettre dans une variable le retour de la fonction. (sauf erreur)

Pour le fait d'utiliser du C plutot que de l'assembleur, je dirais qu'il est bien plus pratique de tout faire en C puis de chercher ensuite les parties optimisables (le compilateur est quelquefois maladroit pour certaines parties) (voir fichier .lst résultat de la compilation) et d'utiliser cette fonction.
La meilleure optimisation au départ, c'est du C bien écrit!

Enfin ça dépend, si c'est pour faire clignoter des leds, autant faire en asm.

Si qqn est intéressé, il me reste quelques PCB sur lesquels on peut souder un ATMega128, un quartz et quelques capas. Toutes les E/S sont accessibles. J'avais rajouté ça sur la production d'un appareil car il restait de la place inutilisée.
 
J'oubliais, il faut inclure &lt;io.h&gt;.
 
Gallenza a dit:
Plumber, tu continues dans le comique troupier j'ai l'impression...quand on programme des microcontroleurs avec 256 octets de RAM, et bien oui il faut bien le reconnaître, c'est de la PURE CONNERIE de programmer en autre chose qu'en assembleur. Quand il s'agit de faire tenir son programme dans 1000 instructions processeur et que pour faire une boucle le meilleur compilateur C prend quatre fois plus de place que du code simple écrit en assembleur, et bien oui, peut-être que ça t'étonne, mais c'est vraiment PAS intelligent...j'espère que tu optimise mieux FreeBSD que tes microcontroleurs...à moins que tu ne fasses que parler au lieu de programmer??ça expliquerait bien des choses....
Enfin je suis tout à fait d'acord avec toi, quand il ne s'agit pas de programmer des microcontroleurs(ça c'est en assembleur) ou le noyau d'un OS(ça c'est en C), il n'y a aucune raison de programmer dans un autre langage que le python,on fait tout le reste et très bien avec.


voila tu t'enerves et tu dis des conneries

1 la tecno qu'on choisi ca dépends de l'environnement technique

"on ne dit pas c'est supert naze"

2 ok pour des microcontrellers conventionnels

3 mais ici on parle microcontrollers plus modernes ATMEL
qui sont un peu mieux pourvu en RAM

4 t'as fini d'etre un raleur
 
ok je suis peut-etre un peu fatigué en ce moment, ne fait j'adore la programmation assembleur et je trouve dommage de la délaisser pour des avantages que je ne vois pas (en fait il me semble de voir que des défaults..)
De toute manière je crois que j'ai des goûts assez bizarres, puisque je kiffe mettre le bit n du registre x à 1 pour faire un truc, ET j'adore les languages de très haut niveau (surtout le python en fait :) ) alors que je n'aime pas les languages dits évolués de bas niveau comme le C, avec une verbosité qui m'oripile par rapport à l'assembleur, et une faiblesse incroyable pour faire les choses simplement sur les types évolués comme en Python..Dieu sait pourtant comme le C est utile...Bon j'ai bien dévié, mais je viens de rendre un devoir de 40 lignes stylées en Python alors que les copains ont pondus un immondice de 400 lignes en C...et je m'en vais de ce pas retrouver mes petits PICs pour le plaisir des bsf...
 
oui c'est vrai quand c faut ce taper les phases headers + exe

Il est vrai que python est un language de script super intérressant
j'y suis venu par hasard pour aider un ami qui fesait une formation
et il avait un proj en python

alors je me suis collé (j'avais un peu touché zope par curiosité tout au debut enfin y'a bien longtemps et cela m'avait fait chier )

alors que la on s'attaquait a python + pgsql

le fonctionnement est tres inspiré de java
au niveau de la creation de lib support comme celle
de l'interpretation et la possibilite d'avoir des libs "precomp"

code source -&gt; comp -&gt;bytecode -&gt; interpreteur -&gt; resultat

ou direct t'as deja une lib qui fonctionne bien tu l'as passe en byte code
bytecode -&gt; interpreteur -&gt; resultat


bon le seul truc que j'ai trouvé space c'est ca i=i+1 et non i++

mais bon je pense que ca va écoluer tres vite car python est jeune mais est un projet tres actif surtout en bio

40 lignes stylées en Python alors que les copains ont pondus un immondice de 400 lignes en C

ca depends si tu utilises des objets complexes de python

et qu'en c ils ont été obligé de réecrire une methode

mais si ils ont foutu 400 lignes dans un meme fichier

la c'est des salopios
 
Haaaa là, je suis trop content.
ça fait un moment que j'essaie de programmer un microcontroleur depuis mon Mac mais j'y arrive pas encore et je n'ai encore personne trouvé pour m'aider!

J'ai un kit d'évaluation, le AVR Butterfly de ATMEL. Il s'agit du microcontroleur ATmega169 AVR. Et en fait, je n'ai ni de compilateur pour Mac, ni le moyen de le relier au Mac. Pour la liaison il s'agit normalement de 3 bits UART que l'on relie au RS-232, vous pensez que ça jouerait sur l'USB? et pour l'assembleur, ça irait AVRA?

Pour ceux qui ont déjà réussi, c'était par une connection USB? Vous avez utilisé quel logiciel pour assembler?

Je suis un peu perdu, parce qu'à l'école, on fait tout ça sur PC avec un IDE et le tout relié avec du RS-232. Mais comme chez moi je ne suis que sur Mac, j'aimerai vraiment pouvoir le programmer depuis un Mac.

Sinon, pour ceux qui programme des uC, c'est des kit d'évaluation ou vous avec des programmeurs pour pouvoir programmer plusieur chip?
 
bonsoir,

pour ma part j'utilise les microp de la famille PIC 16F877 et autres,

Je suis passer totalement au bus USB pour l'interface et la programmation

voir mes derniers projets/prototypes ICI

J'utilise des compilateurs C sous Windows ou Linux, mais j'ai vu sur le site qu'il existait des outils pour Mac OS/X
Future Technology Devices,

Je suis très satisfait des modules et des outils, pour des couts minimes et des temps de développement dérisoires (par rapport à ce que j'ai pratiqué toute ma carrière -25ans- )

bye,
signé Le quincagénaire
 
Si vous voulez plus de précisions sur le kit dont je vous ai parlé, voici un lien
http://www.atmel.com/products/AVR/butterfly

J'ai téléchargé à cette adresse le programme du microcontroleur qu'il livre de base avec le kit d'évaluation et j'ai tenté de le compiler avec AVRA mais ça ne marche pas... Par contre ils l'ont déjà compiler et on trouve un fichier HEX.

Quand AVRA marche, il est bien censé retourné un fichier HEX?

Sur ce Kit, j'ai lu dans leur PDF qu'il y avait 4 moyens de le programmer.
Au travers du UART, du USI, du JTAG et du ISP il me semble... Y a-t-il donc un moyen d'envoyer ce fichier HEX dans la mémoir du micro avec de l'USB?

J'ai aussi lu que ce kit était un peu spécial puisqu'il s'agit d'un "Bootloader" mais je sais pas ce que ça veut dire.

Je suis un peu perdu et je sais pas vraiment comment faire..
 
Bonjour,

Je n'ai pas réussi à faire fonctionner la dernière version d'avra (1.0), mais la versioin 0.9 fonctionne très bien chez moi.

J'ai par contre un programmateur qui doit se connecter sur un port série. J'ai acheté un adaptateur usb-&gt;serial, mais ça ne fonctionne pas... J'ai voulu utiliser uisp pour transférer mes programmes. Le problème vient probablement de l'adaptateur, car ça ne marche pas non plus depuis Virtual PC.

Mon microcontrolleur est un ATMEGA8535L et mon adaptateur usb-&gt; serial (qui ne va pas) est fait par Atmen.

Si quelqu'un connaît un adaptateur usb-&gt;serial qui fonctionne, ce sera fort sympathique de m'en faire part.

Simon