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 ---
Tout ce qui n'a pas de catégorie !
Bluetooth Electronics et envoi de texte
pspic
Passioné
Passioné
Messages : 357
Âge : 77
Enregistré en : septembre 2017
Localisation : 68

#61 Message par pspic » mar. 26 mai 2020 07:10

Exacte.

Bluetooth Electronics et envoi de texte
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#62 Message par Gérard » mar. 26 mai 2020 09:36

pspic a écrit :Exacte.


Ouf! J'ai compris, il était temps. :-D
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Bluetooth Electronics et envoi de texte
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#63 Message par Gérard » mar. 2 juin 2020 21:26

Bonjour à tous,

La suite des évènements : je suis en train de transférer de Proton vers MikroBasic.
J'ai créé un fichier include avec les valeurs des constantes et le compilateur est d'accord.
J'avance. 8-)
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Bluetooth Electronics et envoi de texte
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#64 Message par venom » mar. 2 juin 2020 21:45

Good job Gérard :lol:
:bravo: Bonne continuation.







@++
Mon site web
Mon discord : venom#4888

Bluetooth Electronics et envoi de texte
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#65 Message par Gérard » mar. 2 juin 2020 22:09

Fin de l'euphorie, l'I2C ne veut pas. :mur:

Code : Tout sélectionner


SUB PROCEDURE INIT_RTC
()

    I2C_Start()
    I2C2_Wr(%11010000)                 'adr RTC
    I2C2_Wr(14)                        '
CTRL
    I2C2_Wr
(0)
    I2C2_Wr(0)
    I2C2_Stop
    Delay_ms 
(100)
    
end sub



C'est simple mais ne fonctionne pas.

Dans le main :

Code : Tout sélectionner


  I2C2_INIT
(100000)                     '
  INIT_RTC()
...

Quand je compile, il m'ouvre un fichier de plus de 2300 lignes qui s'appelle : module __Lib_TFT_16bit_Defs
C'est quoi ce truc?
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Bluetooth Electronics et envoi de texte
pspic
Passioné
Passioné
Messages : 357
Âge : 77
Enregistré en : septembre 2017
Localisation : 68

#66 Message par pspic » mer. 3 juin 2020 08:40

Bonjour Gérard,
Dans Library manager, décoche toute les lignes TFT.

Un exemple comment je lis le module RTC DS3231 en MikroBasic avec un PIC 18F2520 en Soft I2C:

1/ Je commence par déclarer l'I2C:

Code : Tout sélectionner

‘Déclaration Soft_I2C
dim Soft_I2C_Scl  as sbit at RC3_bit
    Soft_I2C_Sda  as sbit at RC4_bit
    Soft_I2C_Scl_Direction as sbit at TRISC3_bit
    Soft_I2C_Sda_Direction as sbit at TRISC4_bit


Dans le Main on fait l'init.

Code : Tout sélectionner

I2C1_Init(100000)        'Init Soft I2C (dans le Main)


Exemple de lecture dans la RTC:

Code : Tout sélectionner

sub procedure Lecture_Date_Heure()
  I2C1_Start()                    ' Issue start signal
  I2C1_Wr(0xD0)                  ' Addresse RTC                    ' RTC DS3231
  I2C1_wr(0)                       ' Start à l'adresse 0
  I2C1_Start()                      ' start
  I2C1_wr(0xD1)                 ' Addresse de lecture
  seconds = I2C1_Rd(1)            ' Read seconde byte
  minutes = I2C1_Rd(1)            ' Read minute byte
  hours = I2C1_Rd(1)              ' Read heure byte
  Njs  = I2C1_Rd(1)                ' Read N° jour byte
  _day = I2C1_Rd(1)              ' Read jour
  _month = I2C1_Rd(1)         ' Read N° jour/mois byte}
  Yb = I2C1_Rd(0)                  ' Read dizaine unité année byte
  Yh = 32                               'Millier et centaine année ( 32 = $20)
  I2C1_Stop()                       ' Issue stop signal}
end sub

Bluetooth Electronics et envoi de texte
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#67 Message par Gérard » mer. 3 juin 2020 11:03

Pierre, une fois de plus, tu as la solution. Merci ! Merci ! Merci !

Et ça sert à quoi ces librairies TFT?
Je vais aussi garder la solution du soft I2C.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Bluetooth Electronics et envoi de texte
pspic
Passioné
Passioné
Messages : 357
Âge : 77
Enregistré en : septembre 2017
Localisation : 68

#68 Message par pspic » mer. 3 juin 2020 11:25


Et ça sert à quoi ces librairies TFT?

Concerne les TFT Displays.
https://www.mikroe.com/accessories/disp ... t-displays

Tu peux t'inspirer du programme ci-dessous.
Pour l'utiliser il faut:
Mettre à jour cette ligne: Rec = "---03-06-20-11-04-00-4" 'Mise à jour RTC
Une fois la mise à jour effectuée, tu peux commenter cette ligne: SetRtc()

Code : Tout sélectionner

program TestRtc_DS3231
'PIC 18F2520 Q=8MHz
dim Rec as string[22]
    secondStr, minuteStr, hourStr, dayStr, monthStr, YbStr as string[3]
    Sj,Sm,Sh,Sn,Sx,Sa,Snj,_Yh11,_Yb11, Ver , Btp as byte
    seconds, minutes, hours, _day, _month, year, Yb,Yh, _Yh, _Yb,Njs as byte

dim Soft_I2C_Scl  as sbit at RC3_bit
    Soft_I2C_Sda  as sbit at RC4_bit
    Soft_I2C_Scl_Direction as sbit at TRISC3_bit
    Soft_I2C_Sda_Direction as sbit at TRISC4_bit

'Lcd module connections
dim LCD_RS as sbit at RB4_bit
    LCD_EN as sbit at RB5_bit
    LCD_D4 as sbit at RB0_bit
    LCD_D5 as sbit at RB1_bit
    LCD_D6 as sbit at RB2_bit
    LCD_D7 as sbit at RB3_bit
    LCD_RS_Direction as sbit at TRISB4_bit
    LCD_EN_Direction as sbit at TRISB5_bit
    LCD_D4_Direction as sbit at TRISB0_bit
    LCD_D5_Direction as sbit at TRISB1_bit
    LCD_D6_Direction as sbit at TRISB2_bit
    LCD_D7_Direction as sbit at TRISB3_bit
'_______________________________________________________________________________
 sub procedure SetRtc()
 Lcd_Cmd(_LCD_CLEAR)
'Decode trame de mise à jour reçue
  Sj = Dec2Bcd(Strtoword(Rec[3]+Rec[4]))      'Jour
  Sm = Dec2Bcd(Strtoword(Rec[6]+Rec[7]))      'Mois
  Sh = Dec2Bcd(Strtoword(Rec[12]+Rec[13]))     'Heure
  Sn = Dec2Bcd(Strtoword(Rec[15]+Rec[16]))    'Minute
  Sx = Dec2Bcd(Strtoword(Rec[18]+Rec[19]))    'Seconde
  Snj=Dec2Bcd(Strtoword(" "+Rec[21]))         'N° jour
  _Yb11= Dec2Bcd(Strtoword(Rec[9]+Rec[10]))    'An DU adr $11
  _Yh11= Dec2Bcd(Strtoword("   20"))           'An MC adr $10
  Delay_ms(100)
  I2C1_Start()              ' Start
  I2C1_wr(0xD0)             ' Addresse écriture RTC
  I2C1_wr(0)                ' Start addresse 0
  I2C1_wr(Sx)               '  Write Ss à l'adresse 2 contenant les secondes
  I2C1_wr(Sn)               '  Write Sn à l'adresse 3 contenant les minutes
  I2C1_wr(Sh)               '  Write Sh à l'adresse 4 contenant les heures
  I2C1_wr(Snj)              '  Write N° jour
  I2C1_wr(Sj)               '  Write Sj à l'adresse 5 contenant les Jour
  I2C1_wr(Sm)               '  Write Sm à l'adresse 6 contenant les mois
  I2C1_wr(_Yb11)            '  Write An (dizaine unité)
  I2C1_wr($90)              '
  I2C1_Stop()               ' stop signal
  delay_ms(500)
end sub
'_______________________________________________________________________________
sub procedure Lecture_Date_Heure()
  I2C1_Start()              ' Issue start signal
  I2C1_Wr(0xD0)             ' Addresse RTC
  I2C1_wr(0)                ' Start à l'adresse 0
  I2C1_Start()              ' start
  I2C1_wr(0xD1)             ' Addresse de lecture
  seconds = I2C1_Rd(1)      ' Read seconde byte
  minutes = I2C1_Rd(1)      ' Read minute byte
  hours = I2C1_Rd(1)        ' Read heure byte
  Njs  = I2C1_Rd(1)         ' Read N° jour byte
  _day = I2C1_Rd(1)         ' Read jour
  _month = I2C1_Rd(1)       ' Read N° jour/mois byte}
  Yb = I2C1_Rd(0)           ' Read dizaine unité an byte
  Yh = 32                   ' 32 = $20
  I2C1_Stop()               ' Issue stop signal}
end sub
'_______________________________________________________________________________
sub procedure ConvByteToString()
  ByteToStr(seconds, secondStr)
  Ltrim(secondStr)
  if StrLen(secondStr) = 1 then secondStr = chr(48) + secondStr end if

   bytetostr(minutes, minuteStr)
   Ltrim(minuteStr)
   if StrLen(minuteStr) = 1 then minuteStr = chr(48) + minuteStr end if

    bytetostr(hours, hourStr)
    Ltrim(hourStr)
    if StrLen(hourStr) = 1 then hourStr = chr(48) + hourStr end if

     bytetostr(_day, dayStr)
     Ltrim(dayStr)
     if StrLen(dayStr) = 1 then dayStr = chr(48) + dayStr end if

      bytetostr(_month, monthStr)
      Ltrim(monthStr)
      if StrLen(monthStr) = 1 then monthStr = chr(48) + monthStr end if

       bytetostr(_Yb, YbStr)
       Ltrim(YbStr)
       if StrLen(YbStr) = 1 then YbStr = chr(48) + YbStr end if
    'DatTimStr = dayStr + "/" + monthStr + "/20" + YbStr + " - " + hourStr + ":" + minuteStr + ":" + secondStr
end sub
'_______________________________________________________________________________
sub procedure Formatage_Date_Heure()
  seconds  =  ((seconds and 0x70) >> 4)*10 + (seconds and 0x0F)
  minutes  =  ((minutes and 0xF0) >> 4)*10 + (minutes and 0x0F)
  hours    =  ((hours and 0x30)  >> 4)*10  + (hours and 0x0F)
   Njs = Njs  and $07  _day = ((_day and 0x30) >> 4)*10 + (_day and 0x0F)
  _month    =  ((_month and 0x10)  >> 4)*10 + (_month and 0x0F)
  _Yh = ((Yh and 0xF0)>> 4)*10 + (Yh and 0x0F )
  _Yb = ((Yb and 0xF0)>> 4)*10 + (Yb and 0x0F )
end sub
'_______________________________________________________________________________
sub procedure Affiche_Date_Heure()
  Lcd_Chr(1, 1, (_day / 10)   + 48)    'Jour dizaine
  Lcd_Chr(1, 2, (_day mod 10)   + 48)  'Jour unité
  Lcd_Out(1,3,"/")
  Lcd_Chr(1,4, (_month / 10) + 48)     'Mois dizaine
  Lcd_Chr(1,5, (_month mod 10) + 48)   'Mois unité
  Lcd_Out(1,6,"/")
  Lcd_Chr(1,7, (_Yh / 10)   + 48)      'Année millier
  Lcd_Chr(1,8, (_Yh mod 10) + 48)      'Année centaine
  Lcd_Chr(1,9, (_Yb / 10)   + 48)      'Année dizaine
  Lcd_Chr(1,10, (_Yb mod 10) + 48)     'Année unité
  Lcd_Chr(2, 1, (hours / 10)   + 48)  'Heure dizaine
  Lcd_Chr(2, 2, (hours mod 10)   + 48)'Heure unité
  Lcd_Out(2,3,":")
  Lcd_Chr(2,4, (minutes / 10) + 48)   'Minute dizaine
  Lcd_Chr(2,5, (minutes mod 10) + 48) 'Minute unité
  Lcd_Out(2,6,":")
  Lcd_Chr(2,7, (seconds / 10) + 48)   'Seconde dizaine
  Lcd_Chr(2,8, (seconds mod 10) + 48) 'Seconde unité
 Lcd_Chr(2,10, (Njs mod 10) + 48)    'N° jour
end sub
'_______________________________________________________________________________
main:
  I2C1_Init(100000)        'Init Soft I2C
  PIE1.RCIE = 1
  Adcon1 = $0F             'Configure AN pins as digital I/ 'ConfigureLocalData
  PORTA = 0
  PORTB = 0 
  PORTC = 0
  Lcd_Init()                'Init Lcd
  Lcd_Cmd(_LCD_TURN_ON)
  Lcd_Cmd(_LCD_CLEAR)       'Clear Lcd display
  Lcd_Cmd(_LCD_CURSOR_OFF)  'cursor off
  LCD_OUT(1,1,"TEST RTC DS3231 ")
  delay_ms(3000)
'        "   jj mm yy hh mn ss n"
   Rec = "---03-06-20-11-04-00-4"  'Mise à jour RTC
   SetRtc()  'commenter cette ligne après la mise à jour. <---------------------------------------------------------------
'===============================================================================
  while true
  'Lecture RTC, formatage et affichage date time______________________________
     Lecture_Date_Heure()      'Lecture dans RTC
     Formatage_Date_Heure()    'Formatage date et heure
     Affiche_Date_Heure()      'Affiche date heure
     delay_ms(500)
  wend
end.

Bluetooth Electronics et envoi de texte
pspic
Passioné
Passioné
Messages : 357
Âge : 77
Enregistré en : septembre 2017
Localisation : 68

#69 Message par pspic » mer. 3 juin 2020 11:40

Ligne à ajouter au code précédent : Lcd_Cmd(_LCD_CLEAR)

Code : Tout sélectionner

 LCD_OUT(1,1,"TEST RTC DS3231 ")
  delay_ms(3000)
  Lcd_Cmd(_LCD_CLEAR)                                             ' Ligne à ajouter.
'        "   jj mm yy hh mn ss n"
   Rec = "---03-06-20-11-32-00-4"  'Mise à jour RTC
 '  SetRtc()   'Decommenter pour mettre à jour.
'===============================================================================
  while true
.

Bluetooth Electronics et envoi de texte
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#70 Message par Gérard » mer. 3 juin 2020 17:51

Je me pose une question:

Code : Tout sélectionner


sub procedure Lecture_Date_Heure
()
  
I2C1_Start()              ' Issue start signal
  I2C1_Wr(0xD0)             ' 
Addresse RTC
  I2C1_wr
(0)                ' Start à l'adresse 0
  I2C1_Start
()              ' start
  I2C1_wr(0xD1)             ' 
Addresse de lecture
  seconds 
I2C1_Rd(1)      ' Read seconde byte
  minutes = I2C1_Rd(1)      ' 
Read minute byte
  hours 
I2C1_Rd(1)        ' Read heure byte
  Njs  = I2C1_Rd(1)         ' 
Read N° jour byte
  _day 
I2C1_Rd(1)         ' Read jour
  _month = I2C1_Rd(1)       ' 
Read N° jour/mois byte}
  
Yb I2C1_Rd(0)           ' Read dizaine unité an byte
  Yh = 32                   ' 
32 = $20
  I2C1_Stop
()               ' Issue stop signal}
end sub

pourquoi dans les lignes I2C1_Rd(1), il y a 1 entre parenthèses?
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.


Retourner vers « Coin Fourre-tout »

Qui est en ligne

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