HOWTO programmer les pics en C sous linux
Date d'initialisation : Avril 2005
Etat actuel : Stoppé
Sommaire
Description générale
Ce projet a été annulé, car il s'est avéré à l'usage que la version proposée en téléchargement du compilateur C est visiblement boguée. De plus, j'ai découvert que les AVR d'Atmel sont moins chers que les pics à performances égales, et surtout qu'ils sont parfaitement compatibles linux (utilisation de GCC). Si vous utilisez linux, je vous conseille donc de vous tourner vers ces autres microcontrôleurs, vous ne le regretterez pas. Je laisse quand même le brouillon ci-dessous, il aidera peut-être quelques uns... :
Ce document est le résultat d'une constatation : Même s'il éxiste de quoi programmer en assembleur sous linux, les compilateurs C sont très rares et bien souvent on ne trouve aucune documentation claire pour les pics. J'ai donc résumé dans cette page la démarche pour installer et utiliser un compilateur C sous Linux nommé C2C (disponible aussi sous windows mais payant), gratuit pour un usage non-commercial.
Il existe aussi SDCC, mais celui-ci n'est pas à l'origine conçu pour les pics et le port pour les pics reste en cours de développement et largement sous-documenté.
Conditions de réalisation
Voici les conditions de réalisation de ce document. La démarche peut parfois différer un peu sur d'autre configurations mais n'aurez sûrement aucun mal à adapter pour votre configuration.
- Linux Mandrake 10.1, KDE
- Port série sur /dev/ttyS0
- JDM sur port série (celui des fribotte par exemple, avec convertisseur DB25->DB9)
- Pic 16F877A avec un quartz à 20MHz (schéma ici) et sa Datasheet
Remarques
Toutefois, ce document n'est là que pour vous montrer comment installer et configurer l'ensemble de programmation des pics en C sous linux. Mais il part du principe que vous connaissez déjà un peu le C, que vous savez vous débrouillez avec la console, et que vous connaissez le fonctionnement d'un PIC.
Si ce n'est pas le cas, je vous conseille ces quelques sites :
- Tutoriel C : Developpez.com (vous n'avez besoin que du C ANSI, pas des divers éléents apportés par le C++. De plus la maîtrise des pointeurs n'est pas nécessaire)
- Apprentissage de la console et de linux en généal : Lea-Linux
- Cours sur les PIC : BigOnOff, LA référence indispensable pour se mettre aux PIC (vous n'êtes pas obligé d'étudier le cours en entier, mais au moins les parties sur le binaire, le fonctionnement interne d'un PIC, les registres, TRIS, timers, interruptions, ...)
Lorsque je donne une commande à taper dans la console, faites bien attention de savoir s'il faut la taper en mode utilisateur normal ou en mode root.
Exemples de codes
Le but de ce tutoriel est de fournir les bases qui suffiront pour 99% des programmes que vous serez amenés à faire. Voici le sommaire du tutoriel :
- 1 - Clignoter PORTB (utilisation d'un port en sortie, délais)
- 2 - PORTB en entrée (utilisation d'un port en entrée)
- 3 - Interruption sur TIMER0 (timers et interruptions)
- 4 - Pilotage d'un servo (timers et interruptions)
- 5 - PWM hardware (module CCP en mode PWM)
- 6 - CAN (module AD)
- 7 - EEPROM (lecture/écriture)
- 8 - RS232 (communication sérielle)
- 9 - I2C (master/slave)
Les sources étant très commentées, leur simple lecture suffit à comprendre le programme, sans avoir recours à d'autres explications.
Vous devrez néanmoins avoir sous la main ces quelques références :
- La datasheet du 16F877
- Le cours de BigOnOff (partie 1 et 2)
Code source
Fais clignoter les pins du PORTB à des fréquences différentes en utilisants le TIMER0.
Commentaires des visiteurs
Par miloud le 09/05/2007
vraiment bravo exellent
Par salahrls le 08/07/2008
salut,je te felicite de ta genieusité,g un montage a realiser et g trouvé des difficultés.le projet est de commander 4cervomoteur a distance(1km) a l\'aide d\'un pc,si vous avez des documents qui peuvent m\'etre utiles ou des conseils n\'hesitez pa
j\'att ta reponse sur mon adresse




