Erreur Mikroc: Ram Not enough
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Erreur Mikroc: Ram Not enough



  1. #1
    Abdelilah96

    Erreur Mikroc: Ram Not enough


    ------

    bonjour,
    j'ai eu un probléme lors de la compilation d'un programme pour un pic16f628a et j'obtiens toujour Ram Not Enough malgré que j'ai supprimé les commentaire et malgres le programme n'est pas trops long
    Code:
    sbit LCD_RS at RB0_bit;
    sbit LCD_EN at RB1_bit;
    sbit LCD_D7 at RB2_bit;
    sbit LCD_D6 at RB3_bit;
    sbit LCD_D5 at RB4_bit;
    sbit LCD_D4 at RB5_bit;
    
    sbit LCD_RS_Direction at TRISB0_bit;
    sbit LCD_EN_Direction at TRISB1_bit;
    sbit LCD_D7_Direction at TRISB2_bit;
    sbit LCD_D6_Direction at TRISB3_bit;
    sbit LCD_D5_Direction at TRISB4_bit;
    sbit LCD_D4_Direction at TRISB5_bit;
    
     Lcd_Init();
    
    void main() {
    
     TRISB = 0;
     TRISA = 1;
    
    switch (PORTA) {
      case 0:
      {(PORTB.f6=0) ;
      Lcd_Cmd(_LCD_CLEAR);
      Lcd_Cmd(_LCD_CURSOR_OFF);
      Lcd_Out(1,1,"   Auto-moteur  ");
      Lcd_Out(2,1,"      OK !      ");
      };
      case 1:
      { (PORTB.f6=1)   ;
      Lcd_Cmd(_LCD_CLEAR);
      Lcd_Cmd(_LCD_CURSOR_OFF);
      Lcd_Out(1,1,"ERR. évolution");
      Lcd_Out(2,1,"codeur avant");
      };
      case 2:
      {
     (PORTB.f6=1) ;
      Lcd_Cmd(_LCD_CLEAR);
      Lcd_Cmd(_LCD_CURSOR_OFF);
      Lcd_Out(1,1,"ERR. évolution");
      Lcd_Out(2,1,"codeur arrière");
      };
      case 3:
      {
     (PORTB.f6=1)     ;
      Lcd_Cmd(_LCD_CLEAR);
      Lcd_Cmd(_LCD_CURSOR_OFF);
      Lcd_Out(1,1,"ERR. codeur");
      Lcd_Out(2,1,"plage avant");
      };
      case 4:
      {
     (PORTB.f6=1)   ;
      Lcd_Cmd(_LCD_CLEAR);
      Lcd_Cmd(_LCD_CURSOR_OFF);
      Lcd_Out(1,1,"ERR. codeur");
      Lcd_Out(2,1,"plage arrière");
      };
      case 5:
      {
     (PORTB.f6=1)    ;
     Lcd_Cmd(_LCD_CLEAR);
      Lcd_Cmd(_LCD_CURSOR_OFF);
      Lcd_Out(1,1,"ERR. évolution");
      Lcd_Out(2,1,"cptr codeur av.");
      } ;
      case 6:
      {
     (PORTB.f6=1)  ;
      Lcd_Cmd(_LCD_CLEAR);
      Lcd_Cmd(_LCD_CURSOR_OFF);
      Lcd_Out(1,1,"ERR. évolution");
      Lcd_Out(2,1,"cptr codeur arr");
      } ;
      case 7:
      if (PORTA==7)
      {
     (PORTB.f6=1)    ;
      Lcd_Cmd(_LCD_CLEAR);
      Lcd_Cmd(_LCD_CURSOR_OFF);
      Lcd_Out(1,1,"ERR. disjoncteur");
      Lcd_Out(2,1,"gener ou arr urg");
      } ;
    
    }
    }
    Quelqu'un peut me proposer une solution pour ce problème ?
    Merci d'avance

    -----

  2. #2
    antek

    Re : Erreur Mikroc: Ram Not enough

    Citation Envoyé par Abdelilah96 Voir le message
    j'ai eu un probléme lors de la compilation d'un programme pour un pic16f628a et j'obtiens toujour Ram Not Enough malgré que j'ai supprimé les commentaire et malgres le programme n'est pas trops long
    Quelle quantité de ram utilise ton programme et combien en propose le 16f828a ?
    Les commentaires sont présents uniquement dans l'éditeur de texte, rien à voir avec l'utilisation de la ram.

  3. #3
    paulfjujo

    Re : Erreur Mikroc: Ram Not enough

    bonsoir,

    Probleme classique avec les PIC qui ont tres peu de RAM..

    l'ecriture directe de texte sur le LCD consomme de la RAM !
    soit mettre les texte à afficher en FLASH
    via const char ....
    ou utiliser une table en RAM
    que l'on remplit avec les textes via
    void strConstRamCpy(unsigned char *dest, const code char *source)

    exemple avec UART ,mais à transposer avec LCD


    Code:
    Probleme :
    avec ceci, le texte consomme de la RAM 
     UART1_Write_Text("TEXTE EN RAM !!\r\n");
    ----------
    Contre-mesure:
    const char txt[] = "Hello World";      // string in ROM
    
    void UART1_Write_CText(const char *txt)
     {
       while (*txt)
          UART1_Write(*txt++);
     }
    ------------------
    ou
    
    void strConstRamCpy(unsigned char *dest, const code char *source) {
      while (*source)*dest++ = *source++ ;
      *dest = 0 ;    // terminateur
    }
    CRLF();
      strConstRamCpy(txt, "TEXT1 EN DUR en ROM\r\n");
      UART1_Write_Text( txt);
      strConstRamCpy(txt, "TEXT2 EN DUR en ROM\r\n");
      UART1_Write_Text(txt);
      strConstRamCpy(txt, "TEXT3 EN DUR en ROM\r\n");
      UART1_Write_Text( txt);
      CRLF();

  4. #4
    Abdelilah96

    Re : Erreur Mikroc: Ram Not enough

    Merci @paulfjujo ça a bien marché

  5. A voir en vidéo sur Futura

Discussions similaires

  1. MikroC et CDC USB
    Par mirachou dans le forum Électronique
    Réponses: 31
    Dernier message: 05/06/2015, 13h55
  2. Erreur de compilation pour PIC16F628 sous MikroC
    Par nour174 dans le forum Électronique
    Réponses: 2
    Dernier message: 06/03/2015, 11h20
  3. Mikroc pro
    Par IHCAAMEL dans le forum Électronique
    Réponses: 0
    Dernier message: 06/06/2011, 07h07
  4. Erreur de raisonnement, erreur logique ou erreur tout court?
    Par babybirdhitz dans le forum Epistémologie et Logique (archives)
    Réponses: 7
    Dernier message: 03/02/2010, 12h32
  5. Bug de MikroC PRO?????
    Par VIIV dans le forum Électronique
    Réponses: 2
    Dernier message: 12/07/2009, 15h30
Découvrez nos comparatifs produits sur l'informatique et les technologies.