ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
s_black
Мучитель микросхем
Сообщения: 411
Зарегистрирован: Вс авг 10, 2008 19:35:49
Откуда: Евпатория
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение s_black »

Что-то я не понимаю... По фотке видно, что подсветка у Вас запитана. Только не видно откуда она запитана?
Johnson
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт мар 05, 2009 08:15:25
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение Johnson »

На этом фото да, подсветка запитана. Проверял, что будет если подключить её...
Запитана от +5в.
Аватара пользователя
s_black
Мучитель микросхем
Сообщения: 411
Зарегистрирован: Вс авг 10, 2008 19:35:49
Откуда: Евпатория
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение s_black »

Johnson писал(а):Запитана от +5в.

Многовато... А источник насколько мощный?
Johnson
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт мар 05, 2009 08:15:25
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение Johnson »

Где-то 200мА, от USB запитан.
Но, как я уже писал, если отключить 19 и 20 выводы - подсветка не пропадет.
А сам дисплей рассчитан на работу от +5в.
Аватара пользователя
s_black
Мучитель микросхем
Сообщения: 411
Зарегистрирован: Вс авг 10, 2008 19:35:49
Откуда: Евпатория
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение s_black »

USB потянет... Ищите ошибку сначала в монтаже, а потом (возможно) в программе. Понимаю, что Вы делали это сто раз, но , к сожалению, ничего другого посоветовать не могу.
Johnson
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт мар 05, 2009 08:15:25
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение Johnson »

В монтаже ошибок 100% нет. Проверял уже неоднократно... И напарник проверял.

В программе. Есть в программе ошибка, но я не знаю где. Делал инит и из ДШ, и из примеров разных...

Буду ждать и надеяться, что уважаемый shurikss123 выложит свой проект...
Аватара пользователя
s_black
Мучитель микросхем
Сообщения: 411
Зарегистрирован: Вс авг 10, 2008 19:35:49
Откуда: Евпатория
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение s_black »

Попробуйте так. Подключите к дисплею только питание, корпус, контраст и 2 кГц. Покрутите движок подстроечника контраста. Что меняется?
Аватара пользователя
shurikss123
Грызет канифоль
Сообщения: 271
Зарегистрирован: Пн окт 25, 2010 20:47:04
Откуда: Казахстан, Астана

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение shurikss123 »

не помню откуда но тоже спер. написано для atmega168
Скачать WG12232SED1520.tgz
Изображение
Мастер на все руки, кручу, кручу, кручу и матерюсь
Повелитель паяльной станции, лома, и пинцета!!!
Johnson
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт мар 05, 2009 08:15:25
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение Johnson »

Спасибо огромное!
Буду мучать, надеюсь хотя бы эта инициализация заработает...
Johnson
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт мар 05, 2009 08:15:25
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение Johnson »

Не выходит...
У тебя другой дисплей. У моего один вход стробоимпульса и два входа выбора чипа.
У тебя два стробоимпульса и нет выбора чипа.
Попробовал инит по аналогии сделать - тот же результат...
Начинаю уже думать, что дисплей мертв...

Пытаюсь после резета читать ReadStatus в цикле и отображать его биты диодами.
После резета загорается RESET, через секунду одновременно ADC и BUSY, потом DISP_OFF.
И так остаются гореть постоянно...
Ерунда какая-то... Бесит уже этот дисплей.
Аватара пользователя
shurikss123
Грызет канифоль
Сообщения: 271
Зарегистрирован: Пн окт 25, 2010 20:47:04
Откуда: Казахстан, Астана

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение shurikss123 »

Johnson писал(а):Не выходит...
У тебя другой дисплей. У моего один вход стробоимпульса и два входа выбора чипа.
У тебя два стробоимпульса и нет выбора чипа.
Попробовал инит по аналогии сделать - тот же результат...
Начинаю уже думать, что дисплей мертв...

Пытаюсь после резета читать ReadStatus в цикле и отображать его биты диодами.
После резета загорается RESET, через секунду одновременно ADC и BUSY, потом DISP_OFF.
И так остаются гореть постоянно...
Ерунда какая-то... Бесит уже этот дисплей.


дисплеи абсолютно идентичны по распиновке разница только в размерах по этому подключи так как у меня написано только всесто е1-cs1, e2-cs2
Изображение
Мастер на все руки, кручу, кручу, кручу и матерюсь
Повелитель паяльной станции, лома, и пинцета!!!
Johnson
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт мар 05, 2009 08:15:25
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение Johnson »

Погоди... У тебя в коде Е1 и Е2 - это стробировка же.
А, судя по ДШ, у меня CS1 и CS2 - это выбор кристала, а стробировка это EN (/RD)...

Хотя, твою идею понял, попробую сегодня.
Johnson
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт мар 05, 2009 08:15:25
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение Johnson »

Вобщем, транслировал код в CVAVR.
Из функции LCD_WaitForStatus не выходит...

Спойлер

Код: Выделить всё

#include <mega8535.h>
#include <i2c.h>
#include <delay.h>
#include "main.h"
#include "encoder.c"


// I2C Bus functions
#asm
   .equ __i2c_port=0x15 ;PORTC
   .equ __sda_bit=1
   .equ __scl_bit=0
#endasm

    int tmp2 = 2;
    unsigned char lcd_x = 0, lcd_y = 0;

interrupt [TIM0_OVF] void timer0_ovf_isr(void){
    unsigned char tmp1 = 0;
    PORTD.7= ~PORTD.7;
   
    ENC_PollEncoder();
    tmp1 = ENC_GetStateEncoder();
    if (tmp1 == RIGHT_SPIN) tmp2++;
    if (tmp1 == LEFT_SPIN)  tmp2--;
    if (tmp2 > 3) tmp2 = 0;
    if (tmp2 < 0) tmp2 = 3;
   
    TCNT0= 0xC2;
}

// Функция ждет, пока не пропадет указанный бит из статуса.
void LCD_WaitForStatus(unsigned char status, unsigned char controller){
   char tmp =0;
   DDRA = 0x00;
   PORTA = 0xff;
   A0=0;
   RW=1;
   
   do{
      if(controller == 0){
         CS1=1;
            NOP;NOP;
         tmp = PINA;
         CS1=0;
      }else{
         CS2=1;
         NOP;NOP;
         tmp = PINA;
         CS2=0;
      }
   }
   while(tmp & status);
   RW=0;
   PORTA = 0x00;
   DDRA = 0xFF;
}

void LCD_WriteCommand(unsigned char commandToWrite,unsigned char ctrl){
   LCD_WaitForStatus(0x80, ctrl);
   DDRA = 0xff;
   A0=0;
   RW=0;
   PORTA = commandToWrite;


   if(ctrl == 0){
      CS1=1;
      NOP;NOP;NOP;
      CS1=0;
   }else{
      CS2=1;
      NOP;NOP;NOP;
      CS2=0;
   }
   PORTA = 0x00;
}

void LCD_WriteData(unsigned char dataToWrite){
    LCD_WaitForStatus(0x80, 0);
    LCD_WaitForStatus(0x80, 1);
    A0=1;
    RW=0;
    PORTA = dataToWrite;
    if(lcd_x < 61){
        CS1=1;
        NOP;NOP;
        CS1=0;
    }else{
        CS2=1;
        NOP;NOP;
        CS2=0;
    }
    lcd_x++;
    if(lcd_x >= SCREEN_WIDTH)
       lcd_x = 0;
}

void LCD_GoTo(unsigned char x,unsigned char y){
    lcd_x = x;
    lcd_y = y;

    if(x < (SCREEN_WIDTH/2)){
        LCD_WriteCommand(COLUMN_ADDRESS_SET | lcd_x, 0);
        LCD_WriteCommand(PAGE_ADDRESS_SET | lcd_y, 0);
        LCD_WriteCommand(COLUMN_ADDRESS_SET | 0, 1);
        LCD_WriteCommand(PAGE_ADDRESS_SET | lcd_y, 1);
    }else{
        LCD_WriteCommand(COLUMN_ADDRESS_SET | (lcd_x - (SCREEN_WIDTH/2)), 1);
        LCD_WriteCommand(PAGE_ADDRESS_SET | lcd_y, 1);
    }
}

void LCD_ClearScreen(void){
    char j, i;
    for(j = 0; j < 4; j++){
        LCD_GoTo(0, j);
        for(i = 0; i < SCREEN_WIDTH; i++){
           LCD_WriteData(0);
       }
    }
    LCD_GoTo(0, 0);
}



void main(void){
    char i; 
   
    DDRA=0b11111111;
    DDRB=0b00000000;
    DDRC=0b11111100;
    DDRD=0b10111100;   //0,1 - Encoder; 2,3,4,5 - LED; 6 - IrDA; 7 - LCD Clock;

    PORTA=0b00000000;
    PORTB=0b00010000;
    PORTC=0b10001100; // RES=1,CS1=1,CS2=1,EN=0,RW=1,A0=1  ||  SDA=0,SCL=0
    PORTD=0b01000011;

    TCCR0=0b00000011;
    TIMSK=0b00000001;
    ACSR =0b10000000;

    i2c_init();

    #asm("sei");
   
    RES=0;
    delay_ms(10);
    RES=1;
    delay_ms(10);   
   
    LCD_WriteCommand(RESET, 0);
    LCD_WriteCommand(RESET, 1);

    LCD_WaitForStatus(0x10, 0);

    LCD_WaitForStatus(0x10, 1);

    LCD_WriteCommand(DISPLAY_ON, 0);
    LCD_WriteCommand(DISPLAY_ON, 1);

    LCD_WriteCommand(DISPLAY_START_LINE | 0, 0);
    LCD_WriteCommand(DISPLAY_START_LINE | 0, 1);
   
    delay_ms(100);
   
    LCD_ClearScreen();
   
   
    for(i = 0; i < 5; i++)
        LCD_WriteData(0xAA);
    LCD_WriteData(0x00);

    while (1){
        PORTD.2 = ~PORTD.2;
        delay_ms(200);   
    }

}


Посмотрите логику, может где напутал?..

PS: У меня уже лапы опускаются...
Johnson
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт мар 05, 2009 08:15:25
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение Johnson »

Я - идиот...
Я посчитал, что нумерация выводов будет как в арабском счете - слева на право...
Всё так и есть, только вот я его вверх ногами держал...
Аватара пользователя
s_black
Мучитель микросхем
Сообщения: 411
Зарегистрирован: Вс авг 10, 2008 19:35:49
Откуда: Евпатория
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение s_black »

Ну, так запустил, наконец?
Johnson
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт мар 05, 2009 08:15:25
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение Johnson »

Да я на работе сижу... Не всегда есть время.
Щас вот только перепаял соединения все.
Напишу демо-код - обязательно выложу.

PS: да, дисплей завелся, инициализацию проходит и уже отрисовывает произвольные данные...
Осталось разобраться с управлением и оформить код...
Аватара пользователя
shurikss123
Грызет канифоль
Сообщения: 271
Зарегистрирован: Пн окт 25, 2010 20:47:04
Откуда: Казахстан, Астана

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение shurikss123 »

Johnson писал(а):Да я на работе сижу... Не всегда есть время.
Щас вот только перепаял соединения все.
Напишу демо-код - обязательно выложу.

PS: да, дисплей завелся, инициализацию проходит и уже отрисовывает произвольные данные...
Осталось разобраться с управлением и оформить код...


Пыгодь, ты че дисплей к верх нагами включал??
Изображение
Мастер на все руки, кручу, кручу, кручу и матерюсь
Повелитель паяльной станции, лома, и пинцета!!!
Johnson
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт мар 05, 2009 08:15:25
Контактная информация:

Re: ATmega8535 + LCD WG12232 = светящийся кирпич (?)

Сообщение Johnson »

shurikss123 писал(а):
Johnson писал(а):Да я на работе сижу... Не всегда есть время.
Щас вот только перепаял соединения все.
Напишу демо-код - обязательно выложу.

PS: да, дисплей завелся, инициализацию проходит и уже отрисовывает произвольные данные...
Осталось разобраться с управлением и оформить код...


Пыгодь, ты че дисплей к верх нагами включал??


Ага :)

Разработчики по-умолчанию посчитали, что пользователь будет идиотом, и прасположили выводы питания так, что включение наоборот не вызовет повреждений...
Ответить

Вернуться в «AVR»