salut frank,
je pouvais bien le faire mais comme je suis aprentis dans la programmation des AVR je me restraint au forum pour avoir des reponses plus simples et detaillés.
-----
salut frank,
je pouvais bien le faire mais comme je suis aprentis dans la programmation des AVR je me restraint au forum pour avoir des reponses plus simples et detaillés.
aide toi et le forum t'aidera. Mais le forum ne te machera pas tout le travail, ce qui serait un bien mauvais service a te rendre...
Donc cherche sur google des exmples, des trucs a comprendre, commence ton projet, et apres on t'aidera là ou tu bloque.
MAIS HORS DE QUESTION DE FAIRE LE TRAVAIL A TA PLACE... Apprenti ou pas...
Bonjour à vous !! Je me tourne vrs vous car je misère avec la RTC 1307 de Dallas, en fait plus particulièrement avec le protocole i2c...
Je m'explique : Je travaille sous MPlab v8.66 , Hitech C , pic18f887 , pickit3 et picdem 2 plus(version verte)
Aprés avoir pas éprouvé moult difficultés pour juste interfacer le LCD de la carte PICDEM2+ (avant je travaillais le plus souvent sur la version rouge...) je me suis lancé dans l'utilisation de la DS1307 et l'i2c ...
Mon niveau en programmation n'est pas terrible, mais je suis plutôt têtu et volontaire !!
Les routines i2c dans les exemples Hitech me posent problème car on y trouve un i2c_open() qui, me semble t-il, devrait correspondre a i2c_init() plus courant :
unsigned char i2c_Open(unsigned char address, unsigned char mode)
{
i2c_Start();
i2c_SendAddress(address, mode);
if(i2c_ReadAcknowledge())
return TRUE;
return FALSE;
}
D'une j'ai du mal a savoir quoi mettre dans les parenthèses... l'adresse du ds1307 (0xd0) mais alors dans mode : lecture ou écriture ?
Ensuite...
unsigned char i2c_SendAddress(unsigned char address, unsigned char rw)
{
return i2c_SendByte(address | (rw?1:0));
}
Cette fonction correspond a i2c_write si je ne m'abuse... donc lors de l’écriture sur ds1307 je devrai mettre i2c_SendAddress(0xd0,0) ??
mais en ce qui concerne l'adresse du registre (0x04) qu'on est censé envoyer après accusé de réception ... je mets quoi dans i2c_sendAddress ??
Mouarf je sais pas si je suis clair dans mes propos...
En gros need some help... Parce que je me perds dans tout çà !!![]()
Bonjour !! Up du matin !!![]()
nobody ?? -_-'
Allez, juste sur la question des langages SMS, une petite image pour detendre l'atmosphère, j'espere que les modos accepteront![]()
EPIC FAIL... dois je me cacher faisant moi même partie de la génération qui entre dans la vie active.... ??
Bon après quelques heures d’acharnement , je suis venu à bout de cette f**** horloge , elle fonctionne à merveille !! Et tout seul en plus ... NA !!! j'aime quand c'est moi qui décide et pas la machine !!![]()
désolé pour le double post...
mon but à présent est de pouvoir régler l'horloge en utilisant les boutons poussoirs présents sur ma PICDEM2+, j'ai vu qu'on pouvait utiliser la pinoche SQWOUT de DS1307 directement sur RB0 du pic pour servir d'interruption toutes les 1sec... le problème qui se pose devant moi est que les timer je n'y connais strictement rien... j'ai fouillé un peu partout et je suis tombé sur un tuto vraiment bien expliqué http://fabrice.sincere.pagesperso-or...DS1631_I2C.htm, j'ai vu qu'il avait mis les sources de son projet et je me suis dit chouette je vais pouvoir décortiquer le tout et m'en sortir... Code en assembleur... autant dire que je n'y comprend rien et me plonger dans les cours de Mr Bigonoff me prendrait beaucoup trop de temps... Donc est ce que vous pourriez me traduire le code assembl...... (humour bien sur....) !!! Non bien évidemment que non , j'aime comprendre par moi même !! Donc si une âme charitable faisait un petit détour sur ce topic pour me donner un petit coup de pouce ...!! Je ne veux pas de code tout fait que ce soit bien clair , je vous vois vous insurger derrière vos petits claviers ... !!!
Salut
------
Je l'ai toujours dit: utiliser un langage de haut niveau comme le C ne dispense pas de comprendre comment fonctionne le micro.le problème qui se pose devant moi est que les timer je n'y connais strictement rien.
Mes cours, c'est 5% de langage et 95% d'explication des fonctionnalités des PIC.je n'y comprend rien et me plonger dans les cours de Mr Bigonoff me prendrait beaucoup trop de temps
Sinon, il existe plein d'autres tutoriaux sur les PIC, suffit de chercher un peu.
Egalement, il me semble que vouloir utiliser un composant sans au minimum lire son datasheet, c'est foncer droit dans le mur.
Dire que ça te prendrait trop de temps, ce n'est pas un argument valide en électronique: on doit prendre le temps qu'il faut pour l'apprentissage de ce qu'on utilise, c'est la base, ou alors on en est réduit à crier "help" sur les forums pour des choses qui ne sont pas des incompréhensions mais un défaut d'apprentissage. Au final ça prend encore beaucoup plus de temps, et ça semble irriter passablement certains membres de ces forums, LOL.
Donc, mon conseil: commence par étudier les composants que tu veux utiliser, et seulement ensuite travaille à leur mise en oeuvre. En dehors de ça, point de salut.
A+
Bigonoff
Vive l'Internet libre
Merci pour les conseilsJe sais bien tout cela, l'apprentissage ne doit pas se faire à la hâte !! Je ne suis pas spécialement pressé .
J'ai commencé vos cours, le problème est que je suis stagiaire et que je ne dispose pas de carte de Démo chez moi et que je ne peux rien tester chez moi , du coup je lis, je lis, beaucoup même mais c'est clairement de pratique que je manque et du coup je peine à me rappeler de tout !!
Je me débrouille par mes propres moyens pour avancer autant que je le peux dans le projet qui m'a été confié en début de ce stage !
Quant à commencer par étudier les composants que j'utilise , c'est bien ce que j'ai fait, éplucher la doc du DS1307 et au final j'en suis venu à bout ce matin , mon horloge fonctionne parfaitement ! La doc du Pic16f887 , je la prend par petits bouts , là je sais que je vais devoir me pencher sur les interruptions donc voilà !!
Comme je l'ai dit je ne cherche pas de solutions toutes prêtes , aucun intérêt , aucun bénéfice à en tirer , je veux apprendre et je suis le seul à "programmer" dans l'entreprise donc aucune aide de l'entourage proche !! Ma formation en DUT GEII concernant les PIC se résume à 16h de cours en fin de 1ère année... dérisoire... ! Je planchais tout seul dès que j'avais un moment à l'IUT où le matériel me permettait de m'exercer ! Ce dont je ne dispose pas actuellement en dehors de mon entreprise... ! Voilà pourquoi je me suis tourné vers ce forum ! Pour "accélérer" un peu ma cadence tout en essayant de maintenir un peu d'efficacité .
Dans un autre contexte je ne me serai adressé sur le forum que si j'étais vraiment coincé et que si j'avais épuisé toutes les ressources !
Enfin bref, le but n'étant pas non plus de me justifier mais de clarifier la situation ! Je m'arrêtes là !
Concernant le projet, je m'attèles à la réalisation d'un menu déroulant assez ramifié en utilisant 3 boutons : Droite(++) , Gauche(--) et OK, ce qui me semble être la meilleure configuration .
Je remet donc à plus tard le réglage de l'heure car l'élaboration du menu me permettra d'élaguer et ainsi clarifier la chose tellement il est ramifié...
Si toutefois vous avez des liens à me faire partager ,je suis preneur ! encore une fois je ne demande pas de solution toute faite, je n'en veux pas !
Merci![]()
Bonjour à tous (tes) !!
J'ai un petit souci avec mon affichage d'horloge... Depuis que j'ai fait mon menu contextuel , dès que je retourne sur l'affichage horloge , cet affichage reste figé...
l'horloge tourne bien parce que des que je fais un tour complet dans le menu en revenant , l'horloge s'est bien incrémentée ....
J'ai trouvé d'où venais le problème mais je ne sais pas comment le résoudre... le pic reste en attente de pression sur RA4 et du coup l'affichage ne se met pas a jour... mais comment pourrai je tourner çà pour avoir et la mise à jour de l'affichage heure et l'attente de pression sur RA4...?? Ci dessous ma boucle while contenue dans le main...
PS 1: Ne pas faire attention au menu à proprement parlé , il ne s'agit là que d'une ébauche de menu pour tester l'action des boutons poussoirs...
PS 2:Pour ceux que ça intéresse, je suis tombé sur une transcription du code assembleur livré avec la carte PIC2DEM+ ici:------>> http://www.sourceboost.com/Products/...lusDemo.c.html
Merci de votre aide !
Code:while(1) { read_time(); display(b); __delay_ms(150); __delay_ms(150); while( RA4 == 1); lcd_clear(); lcd_goto(0x00); lcd_puts("Choix langue"); lcd_goto(0x40); lcd_puts("RA4=Next RB0=OK"); while( RA4 == 0); while( RA4 == 1) { __delay_ms(30); while( RA4 == 1) { if (RB0==0) { __delay_ms(30); if(RB0==0) { lcd_clear(); lcd_goto(0x00); lcd_puts("français"); } } } } lcd_clear(); lcd_goto(0x00); lcd_puts("Reglage heure"); lcd_goto(0x40); lcd_puts("RA4=Next RB0=OK"); while( RA4 == 0); while( RA4 == 1) { __delay_ms(30); while( RA4 == 1) { if (RB0==0) { __delay_ms(30); if(RB0==0) { lcd_clear(); lcd_goto(0x00); lcd_puts("heure reglee"); } } } } }
problème résolu !
Désolé du triple post ...
Bonjour !
Je m'attaques à présent au réglage de l'horloge via les boutons poussoirs, et je me trouve confronté à un petit problème : dans la librairie du LCD en mode 4 bits je ne trouve que puts et putc , alors comment est ce que je peux faire pour incrémenter une variable et visualiser sa valeur sur le lcd... ?Il me faudrait quelque chose du genre printf je suppose ... Any idea ?
si tu as la fonction itoa(), le problème est résolu.
Sinon, tu dois avoir sprintf(), mais attention, ça génère beaucoup de code machine.
A+
merci beaucoupje vais me pencher sur itoa donc
![]()