logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Atmega128][C] problem z gh44780

kojjjot 14 Lut 2010 22:55 892 2
REKLAMA
  • #1 7695707
    kojjjot
    Poziom 9  
    Witam wszystkich :). Jestem dośc początkujący jeżeli chodzi o uC dlatego proszę o wyrozumiałość. Mam problem z inicjalizacją wyświetlacza LCD hd44780 wydaje mi się, że robię wszsytko poprawnie a nie chce mi to ruszyć. Mógłby ktoś wrzucić ten kod do siebie na procka i zobaczyć czy działa inicjalizacja ?:) Ewentualnie byłbym wdzięczny za wszelkie nasuwające sie sugestie.

    #include <avr/io.h>
    #include <util/delay.h>
    
    
    
    #define DB4 0x1 		//PA.0
    #define DB5	0x2 		//PA.1
    #define DB6 0x4 		//PA.2
    #define DB7 0x8 		//PA.3
    #define E   0x10 		//PA.4
    #define RS  0x20 		//PA.5
    #define RW	0x40 		//PA.6
    
    void Dana (int dat);
    void Initialize();
    void delayMs(double cykle);
    void Instrukcja (int ins);
    
    int main(void) 
    {
    Initialize();
    return 0;
    }
    
    void Dana (int dat)
    {
      PORTA |=RS;
      
      PORTA |=E;  //E stan wysoki	   
      PORTA |=dat;
      	
      _delay_us(1);
      PORTA &=~E;
      _delay_us(1);
      PORTA &=~dat;
    
      PORTA &=~RS;
     
    }
    
    void Instrukcja (int ins)
    {
        PORTA |=ins;
       PORTA |=E;	   //E stan wysoki
    _delay_us(1);
      
     // _delay_us(1);
     
      PORTA &=~E;
     // _delay_us(1);
      //PORTA &=~ins;
     
     PORTA &= 0x00;
    }
    void Initialize()
    {
    _delay_ms(50);
    DDRA |= DB4 + DB5 + DB6 + DB7 + RW + RS + E;	   
    PORTA &= 0x00;
    
    Instrukcja(DB4+DB5);
     _delay_ms(10);
    Instrukcja(DB4+DB5);
    _delay_ms(5);
    Instrukcja(DB4+DB5);
    _delay_ms(2);
    Instrukcja(DB5);
    _delay_ms(2);
    Instrukcja(DB5);
    Instrukcja(DB7);
    
    _delay_ms(2);
    
    Instrukcja(0);    
    Instrukcja(DB7);
    
    _delay_ms(2);
    
    Instrukcja(0);  
    Instrukcja(DB4);
    _delay_ms(2);
    
    Instrukcja(0);  
    Instrukcja(DB5+DB6);
    _delay_ms(2);
    }
  • REKLAMA
  • #2 7699031
    kojjjot
    Poziom 9  
    Wrzucił to ktoś na Atmege ?
    Jaki powinien być stan linii danych D0 do D7 po podłączeniu zasilania ? Nie wiem dlaczego ale ma na nich po ok 5V (linie danych nie są podłączone do pinów uC przy tym pomiarze).
  • #3 7728110
    Cersunited
    Poziom 16  
    Witam.

    Mam podobny problem tez z At128 i właśnie z portem A . Inicjalizacja się nie powodzi i do tego albo sa kwadraciki albo nic niema. Czasem nawet kursor się pokaże ale nic nie reaguje na komendy. Wie juz wiesz co było u Ciebie przyczyną? Ja dziś sprawdze jak mi ktoś poradził tu własnie na forum by zmienić bit konfiguracyjny kompatybilności z Atmega103 - czyli M103C wyłączyć. I ja jade na wewnętrznym oscylatorze wiec zostawiam konfiguracje dla 1 Mhz.
REKLAMA