je suis intéressé par ton projet.
- Que penses-tu d'adapter le moteur nuke-clan pour présenter du contenu ?
- je connais cette mouture de site et déja adapter des versions pour des copains : je connais (modestement) en html, dhtml et php.....
Dj@MDjem
Dj@MDjem.
Que la force avec vous soit.
je connais pas ce site.
je voulais faire un site complet à partir de rien, programmé correctement en php pour les besoins de la chose, je trouve que c'est mieux que d'adapter un truc existant et pas forcément fait pour. il suffit de trouver des gfx et le site je sais le faire en php.
au fait, j'ai vu que tu avais fais une interface i2c ?
les librairies qui circulent sur le net sont de toi ?
si oui, tu pourrais m'expliquer leur fonctionnement (pas l'i2c, les librairies) : mode maitre, esclave....
Dj@MDjem
Dj@MDjem.
Que la force avec vous soit.
il y en a qui sont de moi oui
mais c pas les seules
voici ma lib I²C je l'ai retrouvée sur mon site ifrance.
On peut encore l'optimiser en vitesse en remplaçant les pokeIO par de l'assembleur.
/*************************************************************************\
| IIIIII 222 CCCC 2-WIRES SERIAL BUS |
| II 22 C Generic Library v1.0 |
| II 222 C By Mathieu ALLORY aka Hiddenfiles |
| IIIIII 22222 CCCC hiddenfiles@online.fr |
\*************************************************************************/
// Allow to control every I2C chip in standard mode (7-bit addressing, 100kbauds).
// See documentation for help
// It has been tested and debugged on several circuits but if you find errors,
// send a mail to : hiddenfiles@online.fr
// Copyright 2001 by Hiddenfiles
// You are not allowed to modify the library without the authorization
// of the author.
// C Header File with TIGCC IDE
// Created 19/02/01; 22:27:26
//anciens noms gardés pour la compatibilité
#define I2CDRV_Ver I2C_DRV_Ver
#define InitI2C I2C_Init
#define CloseI2C I2C_Close
#define SendStart I2C_SendStart
#define SendStop I2C_SendStop
#define SendByte I2C_SendByte
#define WaitACK I2C_WaitACK
#define ReadByte I2C_ReadByte
#define I2CDRV_Ver I2C_Version
// Définition des constantes d'information
#define VERSION 0x0001
#define I2C_ENABLED
// Configuration de la librairie
// Définition de SCL et SDA
// Au choix SDA ou SCL. Toute autre valeur provoque une erreur. - You can choose SDA or SCL, another value causes an error
#assert red (SDA) // Assignation de la ligne rouge - What the red line is
#assert wht (SCL) // Assignation de la ligne blanche - What the white line is
// Définition des timers
#define WAIT_FOR_ACK 20 // X*50 ms
// Macro de vérification de la bonne assignation des lignes
#if ((!(#red(SDA))&&(!(#red(SCL))))||((!(#wht(SDA)))&&(!(#wht(SCL))))||(#red(SDA)&&#wht(SDA))||(#red(SCL)&&#wht(SCL)))
#error "Mauvaise initialisation des constantes de lignes."
#error "Bad init of the wire-identifying constants."
#endif
// Définition des macros d'écriture bas niveau
#if #red(SDA)
#define RstSDA pokeIO(0x60000E,peekIO(0x60000E)|1);
#define SetSDA pokeIO(0x60000E,peekIO(0x60000E)&254);
#else
#define RstSCL pokeIO(0x60000E,peekIO(0x60000E)|1);
#define SetSCL pokeIO(0x60000E,peekIO(0x60000E)&254);
#endif
#if #wht(SDA)
#define RstSDA pokeIO(0x60000E,peekIO(0x60000E)|2);
#define SetSDA pokeIO(0x60000E,peekIO(0x60000E)&253);
#else
#define RstSCL pokeIO(0x60000E,peekIO(0x60000E)|2);
#define SetSCL pokeIO(0x60000E,peekIO(0x60000E)&253);
#endif
#define DELAY 50
// Routines d'initialisation et de nettoyage
void I2C_Init(void)
{
asm("bset.b #6,0x60000C");
SetSDA
SetSCL
}
void I2C_Close(void)
{
SetSDA
SetSCL
poke(0x60000C,0x8D);
}
// Routines d'envoi des drapeaux
void I2C_SendStart(void)
{
int t;
RstSCL
RstSDA
//l'envoi de bits normaux nécessite que SDA soit stable quand on applique l'horloge.
//pour le start c'est l'inverse. On a une transition de SDA quand SCL est stable.
for(t=0;t!=DELAY;t++);
}
void I2C_SendStop(void)
{
RstSDA
SetSCL
SetSDA
}
// Routines de lecture bas niveau interne à la librairie
#if #red(SDA)
int ReadSDA(void)
#else
int ReadSCL(void)
#endif
{
#if 0 //version 2
unsigned char i=0;
i=peekIO(0x60000E)&4;
return 1-(i>>2);
if(i==0) return 1;
if(i==4) return 0;
#else
return 1-((peekIO(0x60000E)&4)>>2);
#endif
}
#if #wht(SDA)
int ReadSDA(void)
#else
int ReadSCL(void)
#endif
{
#if 0 //version 2
unsigned char i=0;
i=peekIO(0x60000E)&2;
return 1-(i>>2);
if(i==0) return 1;
if(i==2) return 0;
#else
return 1-((peekIO(0x60000E)&2)>>1);
#endif
}
// Routines d'envoi de données
int I2C_SendByte(unsigned char byte)
{
int i,t;
#if 0 //version 2
unsigned char buff;
#else
unsigned char buff=byte;
#endif
RstSCL
for(i=0;i<8;i++)
{
#if 0 //version 2
buff=byte<<i;
#else
buff=buff<<1;
#endif
#if 0 //version 2
if((buff&128)==128) SetSDA
if((buff&128)==0) RstSDA
#else
if((buff&128)){ SetSDA } else { RstSDA };
#endif
SetSCL
//attente de l'esclave
for(t=0;t<DELAY;t++);
RstSCL
}
return TRUE;
}
int I2C_WaitACK(void)
{
OSFreeTimer(USER_TIMER);
OSRegisterTimer(USER_TIMER, WAIT_FOR_ACK);
SetSDA
OSTimerRestart(USER_TIMER);
SetSCL
while(!OSTimerExpired(USER_TIMER))
{
#if 0 //version 2
if(ReadSDA()==0){RstSCL return TRUE;}
#else
if(!ReadSDA()){RstSCL return TRUE;}
#endif
}
RstSCL
return FALSE;
}
//Routines de reception
unsigned char I2C_ReadByte(void)
{
unsigned char byte=0;
int i;
RstSCL
for(i=0;i<8;i++)
{
byte=byte<<1;
SetSCL
if(ReadSDA()) byte++;
RstSCL
}
RstSDA
SetSCL
RstSCL
return byte;
}
// Routines diverses
int I2C_Version(void)
{
return (VERSION);
}
int I2C_SendWait(unsigned char byte)
{
I2C_SendByte(byte);
return I2C_WaitACK();
}
/******************* END OF FILE *** 28/02/2001;22:05 *********************/
/*
Historique
---------------------------------------------------------------------------------------
6/3/2003: version 2
* Remplacement de peek et poke par peekIO et pokeIO, selon les instructions données
dans la documentation de peekpoke.h
* Optimisation de l'envoi de bits. 5 lignes de code -> une ligne. En fait c'est aussi rapide.
E: 43.2 kbps, L:48.5 kbps
* Optimisation de l'envoi d'octets. Au lieu de calculer un shift variable, on fait un
shift avec une constante. D'où:
E: 46.8 kbps au lieu de 43.2. L: 48.5 (idem)
* Séparation de l'envoi d'octet et de l'attente d'acknowledge, pour pouvoir faire des tests
de vitesse théorique.
* Modification des noms de procédures, avec des #define pour maintenir la compatibilité.
Voir la liste de #define pour les d&tails.
* Ajout de la fonction I2C_SendWait(uchar) qui correspond à l'ancienne version
de 'SendByte'. Cette nouvelle fonction attend l'ACK de l'esclave, alors
que I2C_SendByte n'attend pas.
* Déplacement des lignes d'allocation de timer de la fonction 'send' vers la fonction 'ack'.
C'était un oubli important en effet maintenant les débits sont:
E: 65.5 kbps; L: 48.5. La lecture sera plus difficile à optimiser...
---------------------------------------------------------------------------------------
* Le débit théorique du port i/o est de 50 kbps.
* Test du débit de données en écriture: 8192 octets en 1800 ms soit un débit de 4.6 ko/s ou 36.4 kbps,
* Test du débit de données en écriture: 8192 octets en 1350 ms soit un débit de 6.1 ko/s ou 48.5 kbps,
* Avec un délai de 50 au lieu de 100, on a écriture à 42.3 kbps et lecture à 48.5 kbps
*/
(je viens de me rendre compte que j'ai même pas mis mon nom dedans!)
Un maitre I²C c un système qui peut générer des conditions de start/stop et des adresses pour commander un ou des esclaves.
Un esclave I²C c un système qui sait répondre au commandes du maitre et envoyer/recevoir les données qu'on lui demande/donne. C'est plus difficile à programmer qu'un maitre.
la librairie que j'ai fait est un maitre I²C qui sait gérer 127 périphs au max selon les normes I²C.
Note que l'I²C est un protocole qui supporte le multi-maitre si on rajoute un système de détection d'activité du bus.
c'est justement à ce dernier cas de figure auquel je pensais. en effet, j'ai des routines qui tournent sur pic pour la gestion d'eeprom et me demande dans quelle mesure le multi-maitre peut fonctionner avec une TI. Apparemment ce n'est pas le cas de ta librairie ?
Dj@MDjem.
Que la force avec vous soit.
Tu veux connecter la TI et le PIC en même temps?
Ben tu peux faire en sorte que la TI scrute le bus pdt une demi-seconde et en prenne le contrôle uniquement si elle n'a détecté aucun changement d'état dans le laps de temps.
Idem pour le pic.
ceci dit, je te déconseille le multi-maitre. ca peut marcher, mais en cas de double maitrise simultanée du bus, les résultats sont improbables.
j'va y réfléchir et faire quelques essais, merci squalyl.
Dj@MDjem.
Que la force avec vous soit.
t'en es où de ton site hardware ?
Dj@MDjem.
Que la force avec vous soit.
j'suis pret à y mettre mon projet mp3:
1/ faut y intégrer un pilotage par TI (ce serait cool) : d'où mes questions sur les liaisons pic<->ti et pilotage d'une ti par un le port i/o....
2/ les personnes intégressées par un stockage sur disque dur pourront trouver une base intéressante (j'étudie en ce moment l'implémentation des fonctions classique d'ouverture, écriture, de fichiers (equivalent de commandes open, write....sur pc). Le blem avec ces commandes est la taille des programmes pic reproduisant ces fonctionnalités comparée à la mémoire dispo sur pic !
Dj@MDjem
Dj@MDjem.
Que la force avec vous soit.
quels pics utilise tu?
si le 877 te limite, on peut tenter le 18f yen a qui ont 64 kwords de FLASH, avec un jeu d'instructions compatibles bien sur. le pb c que c des chips CMS en QFP64 donc faut un adapteur. mais c un pb relatif.
et je sais pas vous mais:
-des routines de communication rapide
-des codes PIC de gestion disque dur
-des électroniciens qui ont du matos
ca semble bien parti pour le stockage dur externe sur ti, non?
mettons nos ressources en commun!
a ce propos, je sais que c pas bien, mais est ce que vous auriez des compilos C pour PIC en version non limitées?
je pense que le stockage sur dur extrerne sur TI est tout a fait accessible !
le +gros blem sera sans doute la vitesse du port i/o de la ti.
sinon, j'utilise effectivement le 877.
l'adaptation des fonctions de gestion de fichier pourrait s'inspirer de 2 projets :
1/ des routines de Rob@robriglar faites pour Atmega128 (avec tout de meme 1M RAM attaché)
2/ CFRW Compact Flash Reader Writer (quasi-similaire à un disque dur dans la gestion ATA)
Dj@MDjem.
Que la force avec vous soit.
Miles 2004-01-05 at 05:15pm Il y a des compilo C pour PIC qui circulent sur certains P2Ps.
hwti 2004-01-05 at 08:03pm l'idéal est le PIC18F458
on a 32Ko (16384 instructions), et il est dispo en DIP pour les tests et en PLCC pour des platines plus compactes mais pas trop dure à faire
mes routines TI<->PIC utilisent le MSSP ou l'USART au choix, avec de légères différences de soft côté TI
la version MSSP est potentiellement légèrement plus rapide, car sur la TI add.b d0,d0 est plus rapide que lsr.b #1,d0
je dis potentiellement car je n'ai pas encore réussi à avoir des transmissions fiables sans temps d'attente du côté TI (les signaux du port link sont horribles quand on dépasse 100 kHz)
j'écris les routines pour PIC18, mais elles peuvent fonctionner sur un 16F87x moyennant quelques modifications
on a intérêt à prendre un PIC18, avec la taille du code dispo on pourrait faire une interface complête (stockage, son, link vers PC, E/S numériques et analogiques)
tant que microchip fait des samples, ça va
je n'ai pas trouvé de compilo C pour PIC qui me donne un code satisfaisant (en général c'est 2 fois trop gros : checks de retenue inutiles, optimisation quasi inexistante, gestion bizarre des variables locales, ...)
hwti 2004-01-05 at 08:15pm sinon très intéressant (cache de la FAT, mémoire externe) : BQ4017 de chez TI
dispo en sample (heureusement, car sinon à 50$ l'unité par 1000, c'est trop cher)
NVSRAM de 2Mo
ha ha tu connais aussi le bq4017! terrible cui la!
hwti 2004-01-05 at 11:00pm j'ai pas trouvé plus gros en sample (en plus chez TI ils envoient, alors que dallas/maxim qui ont le même genre de samples n'envoient pas)
dommage TI n'a pas de bon microcontroleur (les DSP c'est pas très adapté aux petites réalisations)
t'as déja réussi à choper des samples de dsp? j'ai un copain que ça intéresserait.
hwti 2004-01-06 at 04:55pm j'ai jamais essayé car je n'ai pas le matos pour faire des circuits imprimés de qualité suffisante pour souder des QFP ou pire
il n'y a qu'un seul DSP à la fois en sample et en boitier utilisable : le TMS320F241
Commande de cafetière avec Einstein.
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 :
www.ti-fr.com.
Quelques idées personnelles
ici.
bien sûr.
t'as des images?
au fait relis le premier post de la page pour ta culture...