<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9205328823444091233</id><updated>2011-07-08T09:43:42.886-07:00</updated><category term='ATmega'/><category term='Création du blog'/><category term='SDcard'/><title type='text'>Silicium628 - ELECTRONIQUE - PROGRAMMATION</title><subtitle type='html'>ELECTRONIQUE - Programmation des microcontrôleurs PIC et AVR ATmega avec des outils open source LINUX.
Programmation en C/C++ et Qt4 sous LINUX.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://silicium628.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205328823444091233/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://silicium628.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Silicium628</name><uri>http://www.blogger.com/profile/16381702141863059817</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YtSa9jXuMd4/StwaZBr65HI/AAAAAAAAAAY/cCXiiTslPZ8/S220/P1060815.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9205328823444091233.post-6020358214366185838</id><published>2010-01-29T00:10:00.000-08:00</published><updated>2010-01-29T00:16:18.107-08:00</updated><title type='text'>QT4 - Quelques tuyaux utiles:</title><content type='html'>Bonjour,&lt;br /&gt;Je fais une petite récap. de choses simples mais pas évidentes lorsqu'on débute avec Qt4:&lt;br /&gt;&lt;br /&gt;/*=================================================================&lt;br /&gt;* Ecrire des lignes de texte dans un QTextEdit&lt;br /&gt;*==================================================================*/&lt;br /&gt; QTextEdit TextEdit1;&lt;br /&gt; QString str1, str2;&lt;br /&gt;// 1- associer un "QTextCursor"&lt;br /&gt; QTextCursor cursor1(textEdit1-&gt;document());&lt;br /&gt; cursor1.movePosition(QTextCursor::Down, QTextCursor::MoveAnchor, 0);&lt;br /&gt; cursor1.select(QTextCursor::LineUnderCursor);&lt;br /&gt; //return cursor1.selectedText(); &lt;br /&gt; &lt;br /&gt;// 2- écrire les lignes et les terminer par un "\n" (saut de ligne)&lt;br /&gt; &lt;br /&gt; cursor1.insertText(str1);&lt;br /&gt; cursor1.insertText("\n"); //saut de ligne&lt;br /&gt; &lt;br /&gt; cursor1.insertText(str2);&lt;br /&gt;&lt;br /&gt;/*=================================================================&lt;br /&gt;* Lire une ligne de texte dans un QTextEdit&lt;br /&gt;*==================================================================*/&lt;br /&gt;&lt;br /&gt;//retourne la ligne i du QTextEdit&lt;br /&gt; QTextEdit TextEdit1;&lt;br /&gt; QString str1; &lt;br /&gt; QTextCursor cursor1(textEdit1-&gt;document());&lt;br /&gt; cursor1.movePosition(QTextCursor::Down, QTextCursor::MoveAnchor, i);&lt;br /&gt; cursor1.select(QTextCursor::LineUnderCursor);&lt;br /&gt; str1 = cursor1.selectedText();&lt;br /&gt;&lt;br /&gt;/*=================================================================&lt;br /&gt;* Copier tout le contenu d'un QTextEdit&lt;br /&gt;*==================================================================*/ &lt;br /&gt; QTextEdit TextEdit1;&lt;br /&gt; TextEdit1 -&gt;copy();&lt;br /&gt; &lt;br /&gt;/*=================================================================&lt;br /&gt;* Lire le contenu d'une cellule d'un QTableWidget&lt;br /&gt;*==================================================================*/&lt;br /&gt; QTableWidget TableWidget1&lt;br /&gt; QString texte_lu; &lt;br /&gt; int row = TableWidget1-&gt;currentRow(); // ligne courante (par exemple sélectionnée à la souris)&lt;br /&gt; int coll = 2; // par exemple &lt;br /&gt; TableWidget1-&gt;setCurrentCell(row,coll); //selectionne la cellule&lt;br /&gt; texte_lu = TableWidget1-&gt;currentItem()-&gt;text();&lt;br /&gt; &lt;br /&gt;/*=================================================================&lt;br /&gt;* Ecrire dans une cellule d'un QTableWidget&lt;br /&gt;*==================================================================*/ &lt;br /&gt; &lt;br /&gt; QString str1;&lt;br /&gt; int r = TableWidget1-&gt;currentRow();&lt;br /&gt; int coll = 2; // par exemple  &lt;br /&gt; TableWidget1-&gt;setItem(r, coll, new QTableWidgetItem (str1) ); &lt;br /&gt;&lt;br /&gt;/*=================================================================&lt;br /&gt;* Dessiner (et ecrire) dans un QPixMap&lt;br /&gt;*==================================================================*/&lt;br /&gt;&lt;br /&gt;// 1- déclarer et dimensionner le pixmap&lt;br /&gt; QPixmap pixmap1(200,400);&lt;br /&gt;// 2- lui associer un 'QPainter' &lt;br /&gt; QPainter painter1(&amp; pixmap1); // adresse de pixmap1 dans le constructeur&lt;br /&gt;// 3- choisir la couleur du trait et celle de remplissage &lt;br /&gt; painter1.setPen(Qt::cyan); &lt;br /&gt; painter1.setBrush(Qt::white);&lt;br /&gt;// 4- dessiner  &lt;br /&gt; painter1.drawEllipse(100,50, 8, 12);&lt;br /&gt;// 5- ecrire:&lt;br /&gt; painter1.drawText("coucou!");&lt;br /&gt;// 5- IMPORTANT: pour rendre le pixmap visible, l'associer à un QLabel! (ou autre widget AYANT un pixmap...)&lt;br /&gt; label1-&gt;setPixmap(pixmap1);&lt;br /&gt;// attention: par la suite, ne pas associer un autre pixmap au label, mais toujours copier le même&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205328823444091233-6020358214366185838?l=silicium628.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silicium628.blogspot.com/feeds/6020358214366185838/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://silicium628.blogspot.com/2010/01/qt4-quelques-tuyaux-utiles.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205328823444091233/posts/default/6020358214366185838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205328823444091233/posts/default/6020358214366185838'/><link rel='alternate' type='text/html' href='http://silicium628.blogspot.com/2010/01/qt4-quelques-tuyaux-utiles.html' title='QT4 - Quelques tuyaux utiles:'/><author><name>Silicium628</name><uri>http://www.blogger.com/profile/16381702141863059817</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YtSa9jXuMd4/StwaZBr65HI/AAAAAAAAAAY/cCXiiTslPZ8/S220/P1060815.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9205328823444091233.post-3002980729494263695</id><published>2009-11-15T21:20:00.000-08:00</published><updated>2010-11-24T22:39:31.313-08:00</updated><title type='text'>Programmer en C et Qt4 pour Linux</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YtSa9jXuMd4/S0NhGZh5toI/AAAAAAAAACA/TVZM9u3hG3A/s1600-h/ape2009b.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 295px;" src="http://4.bp.blogspot.com/_YtSa9jXuMd4/S0NhGZh5toI/AAAAAAAAACA/TVZM9u3hG3A/s400/ape2009b.jpg" alt="" id="BLOGGER_PHOTO_ID_5423285138844399234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_YtSa9jXuMd4/SwDhlGIb5OI/AAAAAAAAABQ/_VpXcTuzWkI/s1600/qdevelop.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 400px; height: 242px;" src="http://2.bp.blogspot.com/_YtSa9jXuMd4/SwDhlGIb5OI/AAAAAAAAABQ/_VpXcTuzWkI/s400/qdevelop.jpg" alt="" id="BLOGGER_PHOTO_ID_5404567580261999842" border="0" /&gt;&lt;/a&gt;Je programmais depuis des années en Pascal (Delphi) sous Windows. Désirant me passer totalement de cet OS, j'ai recherché des outils de programmation sous Linux.&lt;br /&gt;J'ai tout d'abord utilisé l'équivalent de Delphi, à savoir Lazarus. En fait depuis des années, je boudais le langage C.&lt;br /&gt;&lt;br /&gt;Puis j'ai fini par apprendre le C afin de pouvoir programmer les microcontroleurs AVR sous Linux (Avec KontrollerLab). Et en définitive j'ai trouvé que le langage C n'est pas si mal que ça! Les "pascaliens" le dénigrent souvent, moi j'ai testé et je l'ai adopté! D'autant que c'est un langage très ouvert, avec plein de bibliothèques très diverses en open source.&lt;br /&gt;&lt;br /&gt;Il me restait alors à trouver un environnement intégré permettant de programmer des applications pour Linux en C, avec fenêtres, boites de dialogues, de saisies, boutons etc...&lt;br /&gt;&lt;br /&gt;Après avoir essayé plusieurs solutions que je ne veux pas critiquer, j'ai trouvé &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;qdevelop&lt;/span&gt;&lt;/span&gt; qui me donne entière satisfaction.&lt;br /&gt;&lt;br /&gt;qdevelop permet la programmation en C/C++ et la gestion d'une interface graphique en Qt4 avec &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Qt4 designer&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Voici un aperçu de Qt4 Designer:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_YtSa9jXuMd4/SwI2zqrbCwI/AAAAAAAAABw/HAm1rXUEE2c/s1600/qdesigner.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; cursor: pointer; width: 320px; height: 194px;" src="http://2.bp.blogspot.com/_YtSa9jXuMd4/SwI2zqrbCwI/AAAAAAAAABw/HAm1rXUEE2c/s320/qdesigner.jpg" alt="" id="BLOGGER_PHOTO_ID_5404942764055661314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;A noter que Qt4 Designer est directement accessible DEPUIS qdevelop par un simple clic sur le fichier ".ui" et que les modifications apportées aux objets graphiques (on dit "widgets" en langage Qt) sont automatiquement répercutées dans le code source de l'application.&lt;br /&gt;&lt;br /&gt;Je viens de publier sur mon site un programme (avec les sources) écrit avec qdevelop.&lt;br /&gt;&lt;br /&gt;Vous y trouverez une fenêtre principale comprenant:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;un "menu"&lt;/li&gt;&lt;li&gt;des boutons&lt;br /&gt;&lt;/li&gt;&lt;li&gt;des boutons avec un "icon" dessus&lt;/li&gt;&lt;li&gt;des QLineEdit (boites de saisie texte)&lt;/li&gt;&lt;li&gt;un QComboBox (liste de choix, déroulante)&lt;/li&gt;&lt;li&gt;un QTextEdit ( equiv.  Tmemo delphi, avec nombreuses fonctions d'éditions)&lt;/li&gt;&lt;li&gt;un QTableWidget (equiv. TStringGrid delphi avec fonctions de tri intégrées...)&lt;/li&gt;&lt;/ul&gt;Dans le code source en C du programme associé vous verrez comment exploiter les propriétés et les évènements générés par ces objets, en particulier comment:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;copier le contenu texte du presse papier dans le QLineEdit&lt;/li&gt;&lt;li&gt;trouver une ligne dans ce QTextEdit contenant un texte donné&lt;/li&gt;&lt;li&gt;recopier une ligne ou un mot du QTextEdit dans un QLineEdit&lt;/li&gt;&lt;li&gt;recopier le contenu d'un QLineEdit dans une case du QTableWidget&lt;/li&gt;&lt;li&gt;lire et sauvegarder sur le disque dur le contenu du QTableWidget&lt;/li&gt;&lt;li&gt;utiliser des onglets: QTabWidget&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;DESSIN&lt;/span&gt;: dessiner avec des droites, des ellipses etc... sur une grande surface (dans un QPixmap associé à un QLabel )&lt;/li&gt;&lt;li&gt;utiliser des couleurs pour dessiner et écrire&lt;br /&gt;&lt;/li&gt;&lt;li&gt;récupérer les coordonnées de la souris lors d'un clic dans le pixmap&lt;br /&gt;&lt;/li&gt;&lt;li&gt;etc...&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_YtSa9jXuMd4/Sx3hkz6fx4I/AAAAAAAAAB4/EN-BZnq638M/s1600-h/dessinQt4.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 256px;" src="http://2.bp.blogspot.com/_YtSa9jXuMd4/Sx3hkz6fx4I/AAAAAAAAAB4/EN-BZnq638M/s320/dessinQt4.jpg" alt="" id="BLOGGER_PHOTO_ID_5412730349696305026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tout cela semble facile mais pour ceux qui ont l'habitude de Delphi, ces opérations de base se font dans une syntaxe extrêmement déroutante! On s'y fait en quelques jours, mais au départ j'ai ramé grave! Mais je vous assure que cela vaut la peine! Et  cet exemple que je vous donne, vous permettra je pense de gagner du temps.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Voici la page de mon site concernée:&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.silicium628.fr/astrono/ape2009/ape2009.html"&gt;APE2009&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Pour voir tourner ce programme sans rien "installer", &lt;span style="font-weight: bold;"&gt;sous linux&lt;/span&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;télécharger l'archive "ape2009_src_vx.x.tar.gz" dans votre dossier personnel&lt;/li&gt;&lt;li&gt;la décompresser sur place (crée un dossier ape2009_src_vx.x avec tout dedans, et rien ailleurs dans l'ordi)&lt;/li&gt;&lt;li&gt;dans ce dossier, aller dans le sous-dossier "bin" et exécuter le fichier "APE2009" (le rendre executable si ce n'est pas le cas (clic de droite, propriétés, permissions, cocher "exécution") )&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sous Windows? Vous devrez recompiler les sources (fournies également)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Silicium628&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Quelques liens externes:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.siteduzero.com/tutoriel-3-11240-introduction-a-qt.html"&gt;Introduction à Qt&lt;/a&gt; sur "le Site du Zero"&lt;/li&gt;&lt;li&gt;&lt;a href="http://doc.trolltech.com/4.4/tutorials-tutorial.html"&gt;Qt Tutorial&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://fr.wikipedia.org/wiki/Qt"&gt;Article Qt&lt;/a&gt; sur Wikipedia&lt;/li&gt;&lt;li&gt;&lt;a href="http://doc.ubuntu-fr.org/qdevelop"&gt;qdevelop&lt;/a&gt; sur la documentation ubuntu.fr&lt;/li&gt;&lt;li&gt;&lt;a href="http://forum.qtfr.org/"&gt;forum Qtfr&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://biord-software.org/fr/qdevelop/"&gt;site officiel de QDevelop&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205328823444091233-3002980729494263695?l=silicium628.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silicium628.blogspot.com/feeds/3002980729494263695/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://silicium628.blogspot.com/2009/11/programmer-en-c-et-qt4-pour-linux.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205328823444091233/posts/default/3002980729494263695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205328823444091233/posts/default/3002980729494263695'/><link rel='alternate' type='text/html' href='http://silicium628.blogspot.com/2009/11/programmer-en-c-et-qt4-pour-linux.html' title='Programmer en C et Qt4 pour Linux'/><author><name>Silicium628</name><uri>http://www.blogger.com/profile/16381702141863059817</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YtSa9jXuMd4/StwaZBr65HI/AAAAAAAAAAY/cCXiiTslPZ8/S220/P1060815.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_YtSa9jXuMd4/S0NhGZh5toI/AAAAAAAAACA/TVZM9u3hG3A/s72-c/ape2009b.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9205328823444091233.post-2991056253180428754</id><published>2009-10-20T05:25:00.000-07:00</published><updated>2009-11-25T09:53:24.228-08:00</updated><title type='text'>Décodage d'une trame RC5 (télécommande TV)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_YtSa9jXuMd4/St2yRkAFuTI/AAAAAAAAABI/8lQjrZkimpo/s1600-h/ir_rc5.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 400px; height: 229px;" src="http://3.bp.blogspot.com/_YtSa9jXuMd4/St2yRkAFuTI/AAAAAAAAABI/8lQjrZkimpo/s400/ir_rc5.jpg" alt="" id="BLOGGER_PHOTO_ID_5394663943451294002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Ou comment utiliser une télécommande infra-rouge pour piloter un microcontrôleur&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;J'ai écrit cette fonction en langage C que j'utilise, une fois compilée avec avr-gcc sur des uC AVR ATmega&lt;br /&gt;On suppose que le module récepteur IR est relié au pin7 du port D&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://silicium628.chez-alice.fr/electron/fonctions_RC5.txt"&gt;Fonctions RC5&lt;/a&gt; (code source en C, fichier texte, encodage des caractères en UTF8)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Des exemples d'utilisation sur mon site:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;a href="http://www.silicium628.fr/electron/electron.html"&gt;http://www.silicium628.fr/electron/electron.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Documentation sur le codage RC5:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.positron-libre.com/electronique/protocole/rc5/code-rc5.htm"&gt;http://www.positron-libre.com/electronique/protocole/rc5/code-rc5.htm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.positron-libre.com/electronique/protocole/rc5/liste-code-rc5.htm"&gt;http://www.positron-libre.com/electronique/protocole/rc5/liste-code-rc5.htm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://z.oumnad.123.fr/Telecommande-IR/RC5.htm"&gt;http://z.oumnad.123.fr/Telecommande-IR/RC5.htm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Silicium628&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205328823444091233-2991056253180428754?l=silicium628.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silicium628.blogspot.com/feeds/2991056253180428754/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://silicium628.blogspot.com/2009/10/decodage-dune-trame-rc5-telecommande-tv.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205328823444091233/posts/default/2991056253180428754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205328823444091233/posts/default/2991056253180428754'/><link rel='alternate' type='text/html' href='http://silicium628.blogspot.com/2009/10/decodage-dune-trame-rc5-telecommande-tv.html' title='Décodage d&apos;une trame RC5 (télécommande TV)'/><author><name>Silicium628</name><uri>http://www.blogger.com/profile/16381702141863059817</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YtSa9jXuMd4/StwaZBr65HI/AAAAAAAAAAY/cCXiiTslPZ8/S220/P1060815.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_YtSa9jXuMd4/St2yRkAFuTI/AAAAAAAAABI/8lQjrZkimpo/s72-c/ir_rc5.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9205328823444091233.post-1400008273199154140</id><published>2009-10-19T22:17:00.000-07:00</published><updated>2010-11-24T22:34:01.887-08:00</updated><title type='text'>Programmation des AVR en langage C, sous LINUX</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_YtSa9jXuMd4/St1Kd_D-uTI/AAAAAAAAABA/xs4U3B2hXtE/s1600-h/kontrllerlab1.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 400px; height: 315px;" src="http://1.bp.blogspot.com/_YtSa9jXuMd4/St1Kd_D-uTI/AAAAAAAAABA/xs4U3B2hXtE/s400/kontrllerlab1.jpg" alt="" id="BLOGGER_PHOTO_ID_5394549807664511282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Actuellement Les microcontroleurs AVR  &lt;span style="font-weight: bold;"&gt;ATmega &lt;/span&gt;sont devenu très abordables. En particulier les ATmega32 qui possèdent suffisamment de mémoire de programme flash  (32ko) nous donnent la possibilité de les programmer en langage de haut niveau comme le Pascal ou le Langage C.&lt;br /&gt;&lt;br /&gt;Il est de plus possible de les programmer avec des logiciels libres (sous licence GNU) en travaillant sous LINUX, un OS libre également!&lt;br /&gt;&lt;br /&gt;Le logiciel en question c'est Kontrollerlab. Je l'utilise régulièrement et j'en suis tout à fait satisfait. C'est en fait un tableau de bord qui permet de saisir et d'éditer le code source, de le compiler (en utilisant avr-gcc), de lier les fichiers, de programmer l'ATmega. Il y a même un mode simulation.&lt;br /&gt;&lt;br /&gt;Ceci n'est pas de la publicité commerciale puisqu'il s'agit de logiciels et de codes sources libres et 100% gratuits.&lt;br /&gt;&lt;br /&gt;Je donne plus de détails sur la &lt;a href="http://www.silicium628.fr/electron/atmega/atmega.html"&gt;page ATmega&lt;/a&gt; de mon site.&lt;br /&gt;&lt;br /&gt;Silicium628&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205328823444091233-1400008273199154140?l=silicium628.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silicium628.blogspot.com/feeds/1400008273199154140/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://silicium628.blogspot.com/2009/10/programmation-des-avr-en-langage-c-sous.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205328823444091233/posts/default/1400008273199154140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205328823444091233/posts/default/1400008273199154140'/><link rel='alternate' type='text/html' href='http://silicium628.blogspot.com/2009/10/programmation-des-avr-en-langage-c-sous.html' title='Programmation des AVR en langage C, sous LINUX'/><author><name>Silicium628</name><uri>http://www.blogger.com/profile/16381702141863059817</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YtSa9jXuMd4/StwaZBr65HI/AAAAAAAAAAY/cCXiiTslPZ8/S220/P1060815.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_YtSa9jXuMd4/St1Kd_D-uTI/AAAAAAAAABA/xs4U3B2hXtE/s72-c/kontrllerlab1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9205328823444091233.post-5539994791950492639</id><published>2009-10-19T04:17:00.000-07:00</published><updated>2010-11-24T22:32:37.605-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ATmega'/><category scheme='http://www.blogger.com/atom/ns#' term='SDcard'/><title type='text'>Comment relier électriquement une SD card à un ATmega</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YtSa9jXuMd4/StxQrDB5ZyI/AAAAAAAAAA4/6ql77j0hAU0/s1600-h/adaptateur5v_3v3.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 400px; height: 260px;" src="http://4.bp.blogspot.com/_YtSa9jXuMd4/StxQrDB5ZyI/AAAAAAAAAA4/6ql77j0hAU0/s400/adaptateur5v_3v3.jpg" alt="" id="BLOGGER_PHOTO_ID_5394275154160871202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Les uC &lt;span style="font-weight: bold;"&gt;ATmega &lt;/span&gt;d'AVR disposent d'une &lt;span style="font-weight: bold;"&gt;SPI &lt;/span&gt;(Serial Peripheral Interface) tout comme les cartes mémoires SDcard. Donc la liaison peut se faire directement  en reliant MISO àMISO, MOSI à MOSI etc... et paramétrant correctement la SPI, en particulier la fréquence de SCK à 125kHz.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sauf que...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sauf que dans bien des cas des contraintes obligent à alimenter l'ATmega sous &lt;span style="font-weight: bold;"&gt;5V&lt;/span&gt; alors que les SDcard doivent être alimentées en &lt;span style="font-weight: bold;"&gt;3,3V&lt;/span&gt; et rien d'autre. Dans ce cas, une liaison directe détruirait la SDcard.&lt;br /&gt;&lt;br /&gt;Il faut donc concevoir une alimentation 3V3 et un adaptateur de niveaux logiques.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pour les signaux qui sortent de l'ATmega et entrent dans la SD card (MOSI, CS, SCK), il faut limiter la tension du niveau haut à 3,3V . Une solution consiste à utiliser une résistance en série et une diode à faible tension directe (diode schottky) reliée au 3V3.&lt;/li&gt;&lt;li&gt;Pour le signal qui sort de SDcard et entre dans l'ATmega (MISO =Maitre-In, Slave-Out) il faut au contraire augmenter la valeur du niveau haut de 3V3 vers 5V. (Le datasheet de l'ATmega32 indique que, alimenté sous 5V, le niveau haut en entrée doit se situer au dessus de 0,7 x VCC  soit &gt;3,5V ce qui est &gt; à 3,3V). Certes une connexion directe PEUT fonctionner, mais ce n'est pas garanti. On peut donc utiliser soit deux transistors en montage émetteur commun (deux afin de ne pas inverser le signal logique), soit un seul transistor monté en base commune.&lt;/li&gt;&lt;/ul&gt;D'où le schéma proposé (et testé ok)&lt;br /&gt;&lt;br /&gt;Pour le soft, c'est une autre histoire (voir &lt;a href="http://www.silicium628.fr/astrono/ape2009/ape2009.html"&gt;APE2009 Goto pour téléscope&lt;/a&gt; sur mon site...)&lt;br /&gt;Silicium628&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205328823444091233-5539994791950492639?l=silicium628.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silicium628.blogspot.com/feeds/5539994791950492639/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://silicium628.blogspot.com/2009/10/comment-relier-electriquement-une-sd.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205328823444091233/posts/default/5539994791950492639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205328823444091233/posts/default/5539994791950492639'/><link rel='alternate' type='text/html' href='http://silicium628.blogspot.com/2009/10/comment-relier-electriquement-une-sd.html' title='Comment relier électriquement une SD card à un ATmega'/><author><name>Silicium628</name><uri>http://www.blogger.com/profile/16381702141863059817</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YtSa9jXuMd4/StwaZBr65HI/AAAAAAAAAAY/cCXiiTslPZ8/S220/P1060815.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_YtSa9jXuMd4/StxQrDB5ZyI/AAAAAAAAAA4/6ql77j0hAU0/s72-c/adaptateur5v_3v3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9205328823444091233.post-750488516826849525</id><published>2009-10-19T00:13:00.000-07:00</published><updated>2010-11-24T22:30:04.067-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Création du blog'/><title type='text'>Message de bienvenue</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_YtSa9jXuMd4/StwUfVrcbWI/AAAAAAAAAAM/cgypwINn_-c/s1600-h/site_silicium628.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 400px; height: 274px;" src="http://4.bp.blogspot.com/_YtSa9jXuMd4/StwUfVrcbWI/AAAAAAAAAAM/cgypwINn_-c/s400/site_silicium628.jpg" alt="" id="BLOGGER_PHOTO_ID_5394208982310874466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Bienvenue chez Silicium628. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Je crée ce blog pour permettre aux passionnés d'électronique comme moi, et plus particulièrement aux développeurs de logiciels en C pour les microcontrôleurs AVR d'échanger leurs remarques, critiques et informations.&lt;br /&gt;&lt;br /&gt;Je dispose également d'un site ( &lt;a href="http://www.silicium628.fr/"&gt;http://www.silicium628.fr/&lt;/a&gt; ) décrivant plusieurs réalisations personnelles à base de ces uC, mais ne permettant pas l'interactivité avec les internautes. Voilà qui est chose faite.&lt;br /&gt;&lt;br /&gt;Je publierai aussi ici des notes de mises à jour concernant mes différents montages, ainsi que les bugs (et solutions!) éventuels.&lt;br /&gt;&lt;br /&gt;Je vous laisse donc la parole.&lt;br /&gt;Fred (Silicium628)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9205328823444091233-750488516826849525?l=silicium628.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://silicium628.blogspot.com/feeds/750488516826849525/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://silicium628.blogspot.com/2009/10/message-de-bienvenue.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9205328823444091233/posts/default/750488516826849525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9205328823444091233/posts/default/750488516826849525'/><link rel='alternate' type='text/html' href='http://silicium628.blogspot.com/2009/10/message-de-bienvenue.html' title='Message de bienvenue'/><author><name>Silicium628</name><uri>http://www.blogger.com/profile/16381702141863059817</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_YtSa9jXuMd4/StwaZBr65HI/AAAAAAAAAAY/cCXiiTslPZ8/S220/P1060815.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_YtSa9jXuMd4/StwUfVrcbWI/AAAAAAAAAAM/cgypwINn_-c/s72-c/site_silicium628.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
