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

Problem z Tid-em Vectra B i BASCOM AVR

heniek256 28 Lut 2009 21:31 2782 4
  • #1 6218959
    heniek256
    Poziom 11  
    Witam!
    Przeglądając forum znalazłem komputery samochodowe wykorzystujące oryginalne wyświetlacze opla i postanowiłem zrobić taki do mojej Vectry B na uC mega8538 (projekt AVT 2550), a program napisać w BASCOM AVR bo tylko w nim coś potrafię. Niestety mój wyświetlacz dotmatrix 10 znaków nic nie wyświetla. Proszę o pomoc!!!
    Oto listing programu:
    
    $regfile = "m8535.dat"
    $crystal = 8000000
    $eeprom
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portd.7 , Db7 = Porta.7 , E = Portc.3 , Rs = Portc.2
    Config Scl = Portd.4                                        ' wyprowadzenie pinu 4 portu D jako SCL
    Config Sda = Portd.5                                        'wyprowadzenie pinu 5 portu D jako SDA
    Config Portc.0 = Output                                     ' wyprowadzenie pinu 0 portu C jako wyjście MRQ
    Config I2cdelay = 255
     Do
      Wait 5
       Cls
       Lcd "Start TID"
       Portc.0 = 0
       Portd.4 = 0
       Portd.5 = 0
      Waitms 255
       Portc.0 = 1
      Bitwait Pind.5 , Set                                      'czeka na poziom wysoki od TID-a na lini SDA
       Cls
       Lcd "TID OK"
       Portc.2 = 0
      Waitms 450                                                'RESET wyswietlacza
       Portc.0 = 1
       Portd.4 = 1
       Portd.5 = 1
      Waitms 225
       Portc.0 = 0
      Waitms 50
       Portc.0 = 1
      Waitms 255
      I2cstart                                                  'start szyny I2C
      I2cwbyte &H9B                                             'wyslanie adresu Tid-a
       Portc.0 = 0
      I2cwbyte 1
      I2cwbyte 1
      I2cwbyte 1
      I2cwbyte 77
      I2cwbyte 78
      I2cwbyte 79
      I2cwbyte 71
      I2cwbyte 72
      I2cwbyte 73
      I2cwbyte 74
      I2cwbyte 75
      I2cwbyte 76
      I2cwbyte 77
       Portc.0 = 1                                              '
      I2cstop                                                   'zatrzymanie transmisji I2C
      Cls
      Lcd "Dane wyslane"
     Loop                                                       'powrot do poczatku programu
    

    Dodam jeszcze że Tid jest dobrze podłączony.
  • #2 6219197
    ZbeeGin
    Poziom 39  
    Config Portc.0 = Output ' wyprowadzenie pinu 0 portu C jako wyjście MRQ

    Tak się nie konfiguruje jednej linii portu w BASCOM Basic. I co linię wcześniej w Twoim programie robi dyrektywa $eeprom?

    Jak już sterujesz ręcznie liniami SCL (PD4) i SDA (PD5) to wcześniej je skonfiguruj jako wyjścia bo CONFIG SDA/SCL tego za Ciebie nie zrobi do czasu wykonania I2CSTART. Zatem dwa polecenia CONFIG PIND.4 i CONFIG PIND.5 trzeba umieścić na początku programu. A przed I2CSTART w takim przypadku warto umieścić I2CINIT by przywrócić stan spoczynkowy magistrali.
  • #4 6231619
    heniek256
    Poziom 11  
    Poprawiłem swój programik usuwając $eeprom, dodając i2cinit, zmieniłem czasy według programu Dispv09 ze strony Elke Visner i zmieniłem procedurę startu i2c na tą ze strony Elke czyli:

    1. Idle state all lines are high.
    2. Pull MRQ low for a short period and let it go high again.
    3. Send a "I2C Start"
    4. Send the address byte, 0x9B. (The 8 character display uses 0x94!!!!)
    5. Pull MRQ low.
    6. Send 13 data bytes. (The 8 character display uses 10 databytes!!!!)
    7. Let MRQ go high
    8. Send "I2C Stop"
    9. We are back in the idle state.

    No i na wyświetlaczu dalej 10 pustych pól.

    A tak w ogóle bawił się ktoś TID-em z vectry?
  • #5 6256633
    loslobos
    Poziom 11  
    Bawil sie, bawil. Tyle ze nie na AVRce a na zwyklym AT89Cx051. Na te procesorki zostala napisana dedykowana biblioteka, ktorej uzycie znaczaco ulatwia komunikacje.
    Biblioteka ma sporo wstawek assemblerowych. Niestety nie mam dostatecznej znajomosci assemblera AVRow, by podjac sie przetlumaczenia biblioteki.

    Informacyjnie: w mojej Vectrze na TIDzie wyswietlana jest temperatura wewnetrzna oraz napiecie w instalacji elektrycznej (zagoniony do roboty ADS1110). W planach dopisanie obslugi vacuometru (drugi ADS1110 podlaczony pod czujnik podcisnienia ssania) oraz sygnalizacja konca plynu do spryskiwaczy. Obecnie tez zastanawiam sie nad przepisaniem programu na ATtiny25 i wsadzeniu wszystkiego w jak najmniejsza obudowe :) Ale to bardziej dla zasady niz z realnej potrzeby.
    Pozdrawiam
REKLAMA