Bonjour,
quelqu'un pourrait-il m'aider sur la programmation du pic12f675 ou 629?
merci d'avance!
-----
Bonjour,
quelqu'un pourrait-il m'aider sur la programmation du pic12f675 ou 629?
merci d'avance!
Pour cette question vague, il existe 2 réponses
OUI et NON
Ça va pas beaucoup faire avancer le schmilbick, mais ayé une troisième réponse:
Peut-être...
toujours en logique floue : ça depend
Tout projet flou conduit à une connerie précise !
la question est bien claire.t'es pas obligé de m'aider!!!heureusement que t'es pas le seul informaticien(if you are of course)!
D’abord, bonjour cole et bienvenue sur futura. Il est vrai que nos réponses n'ont pas étés très constructives et je m'en excuse. Cela dit, ta question est bien trop floue pour obtenir une reponse coherente, donc:
1) Tu trouveras surement sur futura quelqu'un pour t'aider dans la programmation d'un PIC
2) La question que tu as posée n'aura surement pas de réponse plus constructive. Il faut préciser de quelle genre d'aide tu as besoin et ce que tu ne comprends pas
3) un informaticien?! Pas sur que ce soit la meilleur personne pour un uC, heureusement tu as posté sous la section "électronique"
Sur ce bon aprem!
Alors, vexé ?
Non, ta question est tout sauf claire !
A demande normande, réponse normande.
C'est quoi ton souci de programmation ?
l'init, la mise en oeuvre des périphériques, les interruptions, le CAN, les Timers ... ?
A question PRECISE, réponse précise !
Et pas la peine de prendre la mouche.
ok,ok,ok
là j'ai un exple du 18f4550,j'aimerai savoir ce qu'il fo changer pour le 12f675:
-config.h:
#include "../Sources/Main.h"
//****************************** ****************************** ***********************
// Bit de Configuration du Microncontroleur : PIC 18F4550
//****************************** ****************************** ***********************
#pragma config PLLDIV =1 // PLLDIV =
#pragma config CPUDIV =OSC1_PLL2 // CPUDIV =
#pragma config FOSC =HSPLL_HS //
#pragma config MCLRE = ON // MCLR pin enabled pour utilisation du debuger
#pragma config DEBUG = ON // Mode Debug // => RE3 input pin disabled
#pragma config CCP2MX = ON // CCP2 Connecté sur RC1
#pragma config FCMEN = OFF // Test de defaillance de l'horloge
#pragma config IESO = OFF // Autorisation de changement d'oscillateur
#pragma config PWRT = OFF // Désactivation du Power On Reset
#pragma config BOR = OFF // Désactivation du Brown-out Reset
#pragma config BORV = 3 //
#pragma config VREGEN = OFF //
#pragma config WDT = OFF // Arret du WatchDog
#pragma config WDTPS = 512 //
#pragma config LPT1OSC = OFF //
#pragma config PBADEN = OFF // PORTB<4:0> configurés comme Digital au Reset
#pragma config STVREN = OFF // Désactivation du Reset sur depassement de pile
#pragma config LVP = OFF // Désactivation de la Programmation avec tension unique
#pragma config XINST = OFF // Jeu d'instructions normal
#pragma config USBDIV = 2 // Source Horloge USB = 96 MHz PLL
//****************************** ****************************** ***********************
-port.c:
#include "../Sources/Main.h" // Copie le contenu de "Main.h" à cet endroit
//****************************** ****************************** ************************
// Role de la fonction :Initialiser les ports
// PE : Aucun
// PS : Aucun
//****************************** ****************************** ************************
void InitPort (void)
{
TRISDbits.TRISD5=0;
TRISDbits.TRISD6=0;
TRISDbits.TRISD7=0;
TRISCbits.TRISC7=0;
TRISBbits.TRISB1=0;
}
//****************************** ****************************** ************************
// Role de la fonction :Ecriture sur le port de sortie
// PE : cData = donnee a ecrire sur le port de sortie
// PS : Aucun
//****************************** ****************************** ************************
void EcritPort (char cData)
{
}
interrupt.c
#include "../Sources/Main.h"
#pragma interrupt Interrupt_High
#pragma interruptlow Interrupt_Low
#pragma code high_vector = 0x08
void interrupt_at_high_vector(void)
{
_asm
GOTO Interrupt_High
_endasm
}
#pragma code low_vector =0x18
void interrupt_at_low_vector(void)
{
_asm
GOTO Interrupt_Low
_endasm
}
#pragma code
void Interrupt_High(void)
{
if (INTCONbits.TMR0IF==1)
{
PORTDbits.RD5= ~PORTDbits.RD5;
INTCONbits.TMR0IF=0;
TMR0L=0x19;
}
}
void Interrupt_Low (void)
{
}
main.c:
#include "../Sources/Main.h" // Copie le contenu de "Main.h" à cet endroit
#include "../Sources/Config.h" // Copie le contenu de "Config.h" à cet endroit
//****************************** ****************************** ************************
// Programme Principal uniquement
//****************************** ****************************** ************************
void main(void)
{
InitPort();
InitTimer();
INTCONbits.GIE=1; // On Active les interruptions avec L'interrution sur le
INTCONbits.PEIE=0; // Timer0 en haute priorité. On active l'interruption
INTCONbits.TMR0IE=1;
// sur le bit de dépassement
INTCONbits.TMR0IF=1;
INTCON2bits.TMR0IP=1;
RCONbits.IPEN=1;
while(1)
{
EcritPort(0x04);
}
}
//****************************** ****************************** ************************
timer.c:
#include "../Sources/Main.h"
void InitTimer(void)
{
T0CONbits.TMR0ON=1;
T0CONbits.T08BIT=1;
T0CONbits.PSA=0;
T0CONbits.T0PS2=0;
T0CONbits.T0PS1=0;
T0CONbits.T0PS0=0;
T0CONbits.T0CS=0;
TMR0L=0x00;
TMR0H=0x19;
}
main.h:
#include "../Sources/Main.h" // Copie le contenu de "Main.h" à cet endroit
#include "../Sources/Config.h" // Copie le contenu de "Config.h" à cet endroit
//****************************** ****************************** ************************
// Programme Principal uniquement
//****************************** ****************************** ************************
void main(void)
{
InitPort();
InitTimer();
INTCONbits.GIE=1; // On Active les interruptions avec L'interrution sur le
INTCONbits.PEIE=0; // Timer0 en haute priorité. On active l'interruption
INTCONbits.TMR0IE=1;
// sur le bit de dépassement
INTCONbits.TMR0IF=1;
INTCON2bits.TMR0IP=1;
RCONbits.IPEN=1;
while(1)
{
EcritPort(0x04);
}
}
//****************************** ****************************** ************************
et aussi entre le pic18f et 12f,c le quel qui est plus facile a utiliser?
j'ai le datasheet du pic12f675,est-ce ca me suffit pour la prog?
merci pour votre aide!!!
Bien cordialement!!!
On ne sait tjs pas ce que tu veux faire ...
- Quel compilateur
- Utilité du programme
- ...
A+
Laurent
Entre le 12f675 et le 18f4550 il y a un monde, à moins que le 18f4550 soit énormément surdimensionné je vois mal un 12f675 le remplacer.
Mais comme tu ne nous dis toujours rien de ton application on ne peut que rester vague.
bonjour ,
c'est le compilateur c18.
En fait,le programme sera utilisé pour la detection de gaz.donc son role sera de me dire si il ya presence ou non de gaz en fonction de la temperature de la resistance du capteur et de dire a la resistance du capteur de se chauffer pendant une seconde pour chaque 10 secondes.
ce travail doit se faire avec:
-langage c
-compilateur c18
-pic12f675
-mplab
merci pour votre aide!
Deja, tu as besoin de combien d'entrees et de sorties???
Bonjour,
Ben déjà 12F675 et c18 c'est pas possible. Avec PicC Lite oui c'est possible pour compiler un programme.ce travail doit se faire avec:
-langage c
-compilateur c18
-pic12f675
-mplab
merci pour votre aide!
Bien cordialement Jean Claude.
Déjà, il faut savoir le nombre d'I/O nécessaire, est ce que la mémoire du 675 sera assez grande par rapport au 18F ? On peut en douter.
Pour faire un programme, au lieu de pomper, on fait un ordinogramme et on traduit.
Salut,
Quel est ton premier objectif ?
Utiliser un PIC moins cher ?
Autre ?
Apparemment tu as activé la PLL.
Quelle fréquence de quartz externe ?
Utilises-tu l'USB dans le PIC18F4550 ?
Quelle est la taille de ton programme après compilation (en octets) ?
Combien de RAM utilises-tu ?
De combien de broches as-tu besoin ?
a+
Pour ta programmation avec un PIC, je te conseille Flowcode, il te permettra de coder très simplement et de compiler sur ton pic. Tu pourras également tester ton programme virtuellement, ce qui est plutôt pratique.
Pour choisir ton PIC il faut que tu connaisses le nombre et le type d'entrée et de sortie, la mémoire que le pic a besoin et parfois sa fréquence.
-1 (moins un) pour flowchiotte
Tout projet flou conduit à une connerie précise !
En effet, flowmachin, ca genere un code foireux, illisible car non documenté, et on retrouve regulierement des utilisateurs de flowtruc qui viennent quemander de l'aide ici.
La seule bonne chose, c'est de programmer un petit µC en C ou en asm directement...
Bonjour,J'ai fait un petit programme avec toujours le pic12f675,dans mplabv8 et HI-TECH com compilateur.
Dans hi-tech,j'ai pris le pic12rf675 et j'ai modifié que les bits de configuration.
// Configuration Mask Definitions
#define CONFIG_ADDR 0x2007
// Bandgap Calibrations
#define BGHIGH 0x0x3FFF
// Protection of data block
#define UNPROTECT 0x3FFF
// Protection of program code
#define UNPROTECT 0x3FFF
// Brown out detection enable
#define BORDIS 0x3FBF
// Master clear reset
#define MCLRDIS 0x3FDF
// Power up timer enable
#define PWRTDIS 0x3FFF
// Watchdog timer enable
#define WDTDIS 0x3FF7
// Oscillator configurations
#define INTIO 0x3FFC
2ement ,voici mon programme
//Led clignotante sur Port GPIO
#include <pic12rf675.h> // includ le fichier pic12f675
#include <delay.c> //includ le fichier delay en µs
#include <delay.h>
void main()
{
TRISIO0 = 1 ; //GPIO0 configuré en entrée
TRISIO1 = 0 ; //GPIO1 configuré en sortie
TRISIO2 = 0 ; //GPIO2 configuré en sortie
TRISIO3 = 1 ; //GPIO3 configuré en entrée
TRISIO4 = 0 ; //GPIO4 configuré en sortie
TRISIO5 = 0 ; //GPIO5 configuré en sortie
ANSEL = 0x41 ; //pin AN0 is configured as analog
ADCON = 0xC3 ; // reference voltage is Vdd
while(1)
{
GPIO3 = GPIO5 ;
GPIO5 = 255 ;
delayMs (1000);
GPIO5 = 0 ;
delayMs(9000);
}
do
{
if(GPIO0==x)
}
GPIO0 = GPIO1 ;
GPIO1 = 255 ;
}
elsif(GPIO==x)
{
GPIO0 = GPIO2 ;
GPIO2 = 255 ;
}
else
{
GPIO0 = GPIO4 ;
GPIO4 = 255 ;
}
}
dans ce programme, j dois envoyer 5v à GPIO3 pour kil chauff une resistance avec delay par la sortie GGPIO5;
mais aussi,je dois envoyer un signal analog d'un capteur sur AN0 pour faire clignoter les diodes en fonction de la valeur de GPIO0.
Enfin j'ai utilisé delayMs() dans le programme mais je ne comprends pas exactement ce kil fo mettre dans delay.c et delay.h .Voilà en gros ce ke j ve faire.
Merci de me corriger,j'en ai vraiment besoin.
Merci d'avance.
bonjour,
"Merci de me corriger,j'en ai vraiment besoin".
ce kil fo
correction
ce qu'il faut
cordialement
Alain
GPIO0 = 255 est incorrect :
GPIO0 = 1 ou GPIO0 = 0
Un PIC ne peut pas (sans artifice) "envoyer" un signal analogique sur AN0.
Je crois qu'il te manque les bases.
PS : un effort en français est souhaitable.
merci monsieur pour la correction.Mais pour le francais,lol,c'est parce que j'etais un peu pressé.Entout cas merci four all.big up!
En anglais, c'est pas mieux...
Puisque tu es pressé pour le français, je vais freiner des 4 fers pour te répondre.
pas lol du tout !