www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT91SAM7X256-EK Hardware I2C Display Probleme


Autor: Pepade (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich will vom AT91SAM7X256-EK die Hardware I2C verwenden. Aber wenn ich 
es zyklisch beschreibe um eine Laufschrift/ einen Ticker zu realisieren, 
dann  funktioniert das groeßten Teils einwandfrei. Doch dann faengt das 
Display an zu flackern und die Schrift an anderen Stellen loest sich 
langsam auf. Ich hab schon die Frequenzen variiert(50-95kHz). Der 
Display Controller ist ein Philips PCF8558 mit 96*40 Dots. Bei einem 
rein statischen Text ist alles wunderbar. Der Fehler tritt sogar auf, 
wenn ich einen statischen Text ganz oft an die selbe Stelle 
schreibe...Ich hoffe, ich habe nichts veregssen :)

Hier einmal die GLCD Routinen, vielleicht hab ich ja etwas uebersehen. 
Vielen Dank fuer eure hilfe schon einmal...

Initialisierung:
void initDisplay(){
//...
AT91PS_AIC pAic;

  /* Load System pAic Base address */
  pAic = AT91C_BASE_AIC;

  /* Enable User Reset and set its minimal assertion to 960 us */
  AT91C_BASE_RSTC->RSTC_RMR = AT91C_RSTC_URSTEN | (0x4<<8) | (unsigned int)(0xA5<<24);

  /* TWI intialization @ TWI_BUS_CLOCK for all TWI devices connected on the bus */
  AT91F_TWI_Open(TWI_BUS_CLOCK);
  /* First, enable the clock of the PIOA */
  AT91C_BASE_PMC->PMC_PCER = ( (U32) 1 << AT91C_ID_PIOA);

//...

}
/*-----------------------------------------------------------------------------
 This Function writes one charactere in a lcd page (LcdPage) and at the specific
 column address (X_Address).
 This function uses the TWI in Master write mode with multiple data.
-----------------------------------------------------------------------------*/
void AT91F_Glcd_PutChar(unsigned char c,
                        unsigned char LcdPage,
                        unsigned char X_Address)
{
   int i;
   unsigned int status;

   /* Enable Master Mode of the TWI */
    AT91C_BASE_TWI->TWI_CR = AT91C_TWI_MSEN ;

    /* Set the TWI Master Mode Register */
    AT91C_BASE_TWI->TWI_MMR =  AT91C_GLCD_I2C_ADDRESS & ~AT91C_TWI_MREAD;

    /* Send the command + the Page Address */
    AT91C_BASE_TWI->TWI_THR = Normal+LcdPage;

    /* Wait until TXRDY is high to transmit the next data */
    status = AT91C_BASE_TWI->TWI_SR;
       while (!(status & AT91C_TWI_TXRDY))
        status = AT91C_BASE_TWI->TWI_SR;

      /* Send X address (column address) */
      AT91C_BASE_TWI->TWI_THR = X_START+X_Address;

   /* Send bit to display a character by using the charset table */
   for ( i=0; i<5; i++ )
   {
     /* Wait for the Transmit ready is set to send the next data */
     status = AT91C_BASE_TWI->TWI_SR;
      while (!(status & AT91C_TWI_TXRDY))
        status = AT91C_BASE_TWI->TWI_SR;
     /* Send the data to turn on the right pixels to display the character */
     AT91C_BASE_TWI->TWI_THR = charset[(c-32)][i];
   }


   /* Wait for the Transmit complete is set */
   status = AT91C_BASE_TWI->TWI_SR;
   while (!(status & AT91C_TWI_TXCOMP))
     status = AT91C_BASE_TWI->TWI_SR;

}


Gruß

Pepade

Autor: Pepade (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke fuer die antworten ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.