Sida 1 av 1

Problem med Mega32 och display..

Postat: 10 december 2005, 22:10:46
av Forsgren
Någon som har några ideer om vad som kan vara fel..
Använder lcd-liben som finns här

Blir inga fel under kompilering osv, har modifierat lcd.h så den skall passa min uppkoppling, men även om jag kör med original(dvs felaktig) lcd.h så kommer den inte ur lcd_init()..
kommenterar jag bort funktionsanropet så går allt som det ska..

Kod: Markera allt

//------------------------------------------------------------------------------------
#include <lcd.h>

void init(void)
{
    DDRD=0xFF;


    lcd_init(LCD_DISP_ON);     //Ur lcd_init kommer jag aldrig! 
    //lcd_clrscr();
    PORTD=0x00;

}

int main(void)
{

    uint32_t p;
    //p = 65000;

    init();

    while(1)
    {
        p = 10000;
        while(p--)
        PORTD=0x00;
        
        p = 20000000;
        while(p--)
        PORTD=0xFF;
    }
}

Postat: 10 december 2005, 23:52:37
av ToS
Tittade snabbt i sourcen till lib'et, och i static uint8_t lcd_waitbusy(void)
finns det en potentiell källa. Och den ser ut att anropas i init oxo...

/* wait until busy flag is cleared */
while ( (c=lcd_read(0)) & (1<<LCD_BUSY)) {}

Så du får la kolla vad du har på Busy pinnen....

/Tomas

Postat: 11 december 2005, 01:00:37
av Forsgren
Tack så mycket för tipset! Har inte fått det att funka ännu, men det verkar va nå strul där..

Postat: 11 december 2005, 02:40:09
av cykze
Du skulle kunna ta och posta inställningarna i lcd.h här också.

Postat: 11 december 2005, 06:46:27
av Forsgren
Japp, detta är vad jag gjort ändringar i..

Kod: Markera allt

#define LCD_PORT         PORTC        /**< port for the LCD lines   */
#define LCD_DATA0_PORT   LCD_PORT     /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT   LCD_PORT     /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT   LCD_PORT     /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT   LCD_PORT     /**< port for 4bit data bit 3 */
#define LCD_DATA0_PIN    4            /**< pin for 4bit data bit 0  */
#define LCD_DATA1_PIN    5            /**< pin for 4bit data bit 1  */
#define LCD_DATA2_PIN    6            /**< pin for 4bit data bit 2  */
#define LCD_DATA3_PIN    7            /**< pin for 4bit data bit 3  */
#define LCD_RS_PORT      LCD_PORT     /**< port for RS line         */
#define LCD_RS_PIN       2            /**< pin  for RS line         */
#define LCD_RW_PORT      LCD_PORT     /**< port for RW line         */
#define LCD_RW_PIN       1            /**< pin  for RW line         */
#define LCD_E_PORT       LCD_PORT     /**< port for Enable line     */
#define LCD_E_PIN        3            /**< pin  for Enable line     */

Postat: 11 december 2005, 11:35:17
av DupeS
Har du provat att avaktivera JTAG i fuses ?
När JTAG är aktiverat så ligger det pullupmotstånd på dom pinnarna som bara avaktiveras när du stänger av JTAGen..

Postat: 11 december 2005, 14:31:16
av Forsgren
Japp, dom är inaktiverade.. Men nu har jag kommit på vad det var!
Jag använder ett utvecklingskort från futurelec, och på det finns det en kontakt för anslutning av en LCD men i den har dom jordat RW pinnen som behövs bör att kolla busyflaggan... Fick koppla lite special så nu fungerar det som det ska! :)