Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
On parle des Pics, sans rapport avec le langage ou la programmation

Modérateur : Jérémy

un petit plus dans la presentation de(source) programme
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#1 Message par paulfjujo » sam. 9 sept. 2017 18:41

Bonjour à tous,

Je propose, suggere une amelioration de presentation de programme source

Je me suis aperçu au fil du temps, qu'il devenait hazardeux de reprendre un vieux programme , ecrit quelques mois ou annnees
auparavant , et de voir qu'il ne tourne plus correctement :mur:
à cause de l'environnement ...

Je me suis donc imposé de nouvelles regles , qui memes si elles peuvent etre contraignantes et alourdir le source
permet de ne pas patauger , perdre du temps..

En tete de programme
Ou est-il stocké,sous quel nom de projet, source ..
Fichiers annexes : pour Eeprom du PIC, la config des bits
Type de MCU, Tension alim, FOSC....
Quelques definitions usuelles
Quelques adresses I2C usuelles
Description succinte du hardware
les messages de presentation
Les declarations de fonctions

Code : Tout sélectionner



#define Directory "C:\\_MikroC\\_MesProjets_MikroC\\_Solar_system "
#define Project "18F26K22_Irrigation_UART_ADC_RTC1302.mcppi"
#define Source  "_18F26K22_Irrigation_Control_"
#define Eeprom "_18F26K22_Irrigation_Control.ihex"
#define Config "18F26K22_Fosc_interne_16MHz_PWM2_RB3.cfgsch"
 /*
CONFIG1H : $300001 : 0x0028
CONFIG2L : $300002 : 0x0019
CONFIG2H : $300003 : 0x003C
CONFIG3H : $300005 : 0x00BE
CONFIG4L : $300006 : 0x0081
CONFIG5L : $300008 : 0x000F
CONFIG5H : $300009 : 0x00C0
CONFIG6L : $30000A : 0x000F
CONFIG6H : $30000B : 0x00E0
CONFIG7L : $30000C : 0x000F
CONFIG7H : $30000D : 0x0040
*/

#define PROCESSOR "18F26K22"
#define OSCILLATEUR_INTERNE
#define POWER_SUPPLY  " 5V"
#define FOSC "16.0"  // MHz
#define BAUD 19200  // UART1
#define CLS 12
#define CR 0x0D
#define LF 10
#define TAB 9
#define BACK 8
#define Beep 7
#define Separator 0x20   // space
#define LCD4x20_I2

 // cde relais inversée
 #define ON 0
 #define OFF 1

#ifndef Byte
#define Byte unsigned char
#endif

#ifndef Word
#define Word unsigned int
#endif

#define LCD_ADDR 0x4E     // PCF8574 on pigboard YwRobot back located  on LCD4x20
#define PCF8574_2_ADDR 0x46   // PCF8574 on breadboard drives  8 leds --R--- +5V
#define DS1307_ADDR 0xD0 // RTC DS1307
#define EEPROM_32K_ADR 0xA0 // EEPROM 24LC256
#define DHT22_Pin  PORTC     //pin 0


const code char mesg1[]=" Directory :"Directory"\r\n";
const code char mesg2[]=" MikroC pro 7.10 \n\r";
const code char mesg3[] =" Projet :"Project"\r\n";
const code char mesg4[]=" Irrigation Control System \r\n";
const char char mesg5[]=" Config bit : "Config"\r\n";
const char char mesg6[]=" Eeprom: "Eeprom"\r\n";
const char char mesg7[]=" Source : "Source"_"Version".c\r\n";
const char char mesg8[]=" Utilise Tiny_RTC_DS1307.inc et _Lcd_4x20_I2C.inc\r\n";
const char char mesg9[]=" Module HC06 pour BlueTooth Application \r\n";
const code char * Messages[]={mesg0,mesg1,mesg2,mesg3,mesg4,mesg5,mesg6,mesg7,mesg8,mesg9};

// Hardware
 /*
 Pin 28 RB7  -----------------ICSP Data
 Pin 27 RB6  -----------------ICSP Clock
 Pin 26 RB5  BP5
 Pin 25 RB4  BP4
 Pin 24 RB3  ------------------------------------> PWM Output CCP3
 Pin 23 RB2  BP2
 Pin 22 RB1  BP1
 Pin 21 RB0  Interrupt pin for 5 BP keyboard <--- OR function for5 BP
 Pin 20      VDD --------+5V
 Pin 19      Vss ---------Gnd
 Pin 18  RC7  RX UART  <-- Keyboard   * mettre pull up de 2,7K si alim 3,6V et cordon Prolic 5V
 Pin 17  RC6  TX UART  --> Display    * mettre une pull up de 2.7 si RX non utilisée
 Pin 16  RC5
 Pin 15  RC4 SDA <-----------> RTC 1307   --- EEPROM 24C32 ---- LCD 4x20

 Pin 14 RC3  SCL  -->-------- RTC 1307  -----EEPROM 24C32
 Pin 13 RC2
 Pin 12 RC1
 Pin 11 RC0
 Pin 10 RA6
 Pin  9 RA7
 Pin  8 VSS ---------  Gnd
 Pin  7 RA5  <------- Forcage RTC
 Pin  6 RA4  Output --Pump Relay--+Vcc
 Pin  5 RA3
 Pin  4 RA2  Analog Input
 Pin  3 RA1  Analog input EA1
 Pin  2 RA0  Analog Input EA0
 Pin  1 RE3 MCLR  Reset --------ICSP PGRM
*/


void Init_Hardware(void) ;
void CRLF(void) ;
void Raz_Buffer(void) ;
void UART1_Write_CText(const char *txt);
void strConstRamCpy(unsigned char *dest, const code char *source);
void Float2Ascii (float x, unsigned char *chaine,char precision) ;

//---- EEPROM PIC  bytes  ================
void Save_Msg_To_EEPROM(unsigned char * adrx, unsigned char *ptr1);
void Print_Msg_Eeprom( int debut);
void  Arme_Timer0_100mS(void);
void Arme_Timer0_250mS(void);
void Decompile_byte(unsigned char PORT_Buttons);
void My_Init_ADC(void);
unsigned int Lecture_ADC(unsigned char ch);
void My_UART1_Write(unsigned char c);
void My_UART1_Write_Text(unsigned char *t);
void My_UART1_Write_CText(const unsigned char *t)



J'utilise quasiment tout le temps , L'UART comme outil de suivi de programme et debugging ..
Cà mange pas de pain, 1 pin UART TX en sortie ..

La presentation dans le main du programme, en 6 lignes

[i] UART1_Init(19200);
UART1_Write(CLS); // Erase screen terminal :it is an option on Vbray Terminal!
Delay_ms(500);
CRLF();
UART1_Write_CText(" Presentation : \r\n");
for (i=1;i<9;i++) UART1_Write_CText(Messages[i]);
[/i]

...... le maximum de renseignements dans le code source ......

en fond de listing source
La copie de la fenetre de compilation Messages ... obtenue apres le "Build"

MAIS MikroC ne connait pas la mise en forme .. la 1ere ligne pouvant depasser 700 caracteres !
Je copie donc d'abord le contenu de cette fenetre dans mon editeur de texte prefére NotePad+
Notepad++_avatar.png


dans lequel j'ai fait une petite macro pour intercaler un saut de ligne Avant chaque debut d'emplacement de fichier (C:\)
et avant chaque decalaration de Librairie (__lib)

Cette macro , nommée "Arange_Tout" est stockée dans le fichier shortcuts.xml (dans le dossier où est installé NotePad++)
plus d'infos sur ce Tuto NotePad++

Code : Tout sélectionner

-<Macro Key="0" Shift="no" Alt="no" Ctrl="no" name="Arrange_Tout">
<
Action sParam="" lParam="0" wParam="0" message="1700" type="3"/>
<
Action sParam="C:\" lParam="0" wParam="0" message="1601" type="3"/>
<Action sParam="" lParam="
1" wParam="0" message="1625" type="3"/>
<Action sParam="
\nC:\" lParam="0" wParam="0" message="1602" type="3"/>
<Action sParam="" lParam="
512" wParam="0" message="1702" type="3"/>
<Action sParam="" lParam="
1609" wParam="0" message="1701" type="3"/>
<Action sParam="" lParam="
0" wParam="0" message="1700" type="3"/>
<Action sParam="
__lib" lParam="0" wParam="0" message="1601" type="3"/>
<Action sParam="" lParam="
1" wParam="0" message="1625" type="3"/>
<Action sParam="
\n_lib" lParam="0" wParam="0" message="1602" type="3"/>
<Action sParam="" lParam="
512" wParam="0" message="1702" type="3"/>
<Action sParam="" lParam="
1609" wParam="0" message="1701" type="3"/>
</Macro>


la 1ere ligne originale (qui tient sur 1 seule ligne dans Message window !)
0 1 mikroCPIC1618.exe -MSF -DBG -pP18F26K22 -RA -C -O11111114 -fo16 -N"C:\_MikroC\_MesProjets_MikroC\_Solar_system\18F26K22_Irrigation_UART_ADC_RTC1307.mcppi" -EH"C:\_MikroC\_MesProjets_MikroC\_Solar_system\18F26K22_Irrigation_UART_ADC_RTC1302.ihex" -SP"C:\_MikroC\mikroC PRO for PIC\Defs\" -SP"C:\_MikroC\mikroC PRO for PIC\uses\P18\" -SP"C:\_MikroC\_MesProjets_MikroC\_Solar_system\" -SP"C:\_MikroC\_MesProjets_MikroC\common\" -SP"C:\_MikroC\_PICKIT2\" "_18F26K22_Irrigation_Control_170908.c" "__Lib_Math.mcl" "__Lib_MathDouble.mcl" "__Lib_System.mcl" "__Lib_Delays.mcl" "__Lib_CType.mcl" "__Lib_CString.mcl" "__Lib_CStdlib.mcl" "__Lib_CMath.mcl" "__Lib_Conversions.mcl" "__Lib_OneWire.mcl" "__Lib_ADC_K22_B.mcl" "__Lib_EEPROM_1024.mcl" "__Lib_I2C_c34b12.mcl" "__Lib_UART_c67b67.mcl"


un petit coup de macro, et hop, la meme ligne

0 1 mikroCPIC1618.exe -MSF -DBG -pP18F26K22 -RA -C -O11111114 -fo16 -N"
C:\_MikroC\_MesProjets_MikroC\_Solar_system\18F26K22_Irrigation_UART_ADC_RTC1307.mcppi" -EH"
C:\_MikroC\_MesProjets_MikroC\_Solar_system\18F26K22_Irrigation_UART_ADC_RTC1302.ihex" -SP"
C:\_MikroC\mikroC PRO for PIC\Defs\" -SP"
C:\_MikroC\mikroC PRO for PIC\uses\P18\" -SP"
C:\_MikroC\_MesProjets_MikroC\_Solar_system\" -SP"
C:\_MikroC\_MesProjets_MikroC\common\" -SP"
C:\_MikroC\_PICKIT2\" "_18F26K22_Irrigation_Control_170908.c" "
_lib_Math.mcl" "
_lib_MathDouble.mcl" "
_lib_System.mcl" "
_lib_Delays.mcl" "
_lib_CType.mcl" "
_lib_CString.mcl" "
_lib_CStdlib.mcl" "
_lib_CMath.mcl" "
_lib_Conversions.mcl" "
_lib_OneWire.mcl" "
_lib_ADC_K22_B.mcl" "
_lib_EEPROM_1024.mcl" "
_lib_I2C_c34b12.mcl" "
_lib_UART_c67b67.mcl"



et on colle cette ligne en fin de source dans un commentaire delimité par /* ..... */

on peut aussi y rajouter l'execution du programme
qui apparaitra sur le terminal, pour avoir une meilleur idee,
meme si au final on utilisera un LCD seulement.

Presentation :
Directory :C:\_MikroC\_MesProjets_MikroC\_Solar_system
MikroC pro 7.10
Projet :18F26K22_Irrigation_UART_ADC_RTC1302.mcppi
Irrigation Control System
Config bit : 18F26K22_Fosc_interne_16MHz_PWM2_RB3.cfgsch
Eeprom: _18F26K22_Irrigation_Control.ihex
Source : _18F26K22_Irrigation_Control__170908.c
Utilise Tiny_RTC_DS1307.inc et _Lcd_4x20_I2C.inc




:cry:
Vous allez me dire .. c'est TROP ... t' exagéres !
oui, mais ...
:!!:

La macro NotePad++

NotePadpp_Arange_Tout.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par paulfjujo le ven. 15 sept. 2017 12:15, modifié 2 fois.
Aide toi, le ciel ou FantasPic t'aidera

un petit plus dans la presentation de(source) programme
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#2 Message par Jérémy » dim. 10 sept. 2017 09:15

Bonjour Paul,

Ton initiative est bonne, mais c'est vrai que c'est dur à mettre en œuvre et surtout d'harmoniser !

Les plus jeunes ne verront pas l’intérêt...
C'est avec l’expérience qu'on s'en rend compte humour!!

Pour ma part j'utilise un schéma pour le HARD
Je gère mes dossiers en cloud, un dossier par projet, et dedans je classe tout bien . Schema , programme , sauvegarde, impression 3D, ameliorations a faire, a venir etc ...
C'est en faisant des erreurs, que l'on apprend le mieux !!!

un petit plus dans la presentation de(source) programme
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#3 Message par paulfjujo » dim. 10 sept. 2017 16:19

bonjour Jeremy et tous,

Les plus jeunes ne verront pas l’intérêt...


Cela explique pourquoi il ne peuvent pas, dans certain cas, avoir de réponse à leur questions ou probleme.

J'utilise aussi bien sur des schema ( Isis, Diptrace ou simple dessin Manuel)
qu'on peut mettre , apres transformation en jpg ou gif
sous des
ACTIVE Comment
via la fenetre
Active Comment editor
il suffit ensuite de passer la souris dessus le lien (ex: Ac: schem ) pour voir ledit schema ...

L'inconvenient est que les liens sur ces "Actives Comments ont tendance à se "dissoudre "
avec les mise à jours du source ou renomage .. meme si les fichier images sont toujours dans le meme dossier ..
on peut aussi mettre un lien sur une datashett (pdf)

Ton Cloud est-il externe ? ou sur ton propre reseau intra-muraux , independant du Web ?
j'hesite à en utiliser un ..
pour l'instant j'ai une clé USB 64Go dédiée pour.
Aide toi, le ciel ou FantasPic t'aidera


Retourner vers « Généralités sur les PICs »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 40 invités