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

Odczyt danych z EEPROM a skok do odprogramu - BASCOM

jackone 08 Paź 2010 17:09 1742 2
REKLAMA
  • #1 8597266
    jackone
    Poziom 14  
    Witam, przeszukałem już cały portal i nie znalazłem odpowiedzi.
    mam kod obsługi 3 x DS18X20 z numerami układów zapisanymi w EEPROM i jeżeli chcę odczytać właściwy ROM to muszę użyć sekwencji jak w kodzie w sekcji 1 (bez skoku do podprogramu)

    'program odczytujący obecność układów 1WIRE i sprawdzający ROMy z EEPROM
    
    $regfile = "attiny2313.dat"
    $crystal = 12000000
    $hwstack = 40                                     
    $swstack = 20                                     
    $framesize = 40
    
    '$sim
    $lib "LCD4.LBX"
    Rom_adres(8) As Byte
    '**************************************************************************************************************************
    $eeprom                                           ' zapis adresów ROM układów 1WIRE do EEPROM
    Data 255                                          ' zapis blokujący komórkę 00. Możliwe błędy odczytu po resecie
    '**********************
    Ds_pokoj:
    'Data 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8
    Data &H28 , &H0A , &HDE , &HBC , &H02 , &H00 , &H00 , &HE1       ' czujnik podłączony na kablu
    '**********************
    Ds_pokoj2:
    Data &H28 , &H6E , &HB0 , &HBC , &H02 , &H00 , &H00 , &H4D       ' czujnik z białą plamką
    '**********************
    Ds_ext:
    Data &H10 , &H79 , &HF7 , &H98 , &H01 , &H08 , &H00 , &H22       ' czujnik DS1820, rozdzielczość 0,5 na zewnątrz
    '***************************************************
    $data                                             ' odwołanie zapisu Data do EEPROM
    '**********************
    
    Main:
    Do
    '************************************************************
    'SEKCJA 1
    ' odczyt pierwszego ROM-u
      Readeeprom Rom_adres(1) , Ds_pokoj                ' odczyt 1 bajtu adresu z   EEPROM, kolejne 7 odczytywane z makra
      'Readeeprom Rom_adres(2)
      'Readeeprom Rom_adres(3)
      'Readeeprom Rom_adres(4)
      'Readeeprom Rom_adres(5)
      'Readeeprom Rom_adres(6)
      'Readeeprom Rom_adres(7)
      'Readeeprom Rom_adres(8)
    GoSub Odczyt_rom
     Loop
    End
    '***********************************************************
    Odczyt_rom:
    Readeeprom Rom_adres(2)
    Readeeprom Rom_adres(3)
    Readeeprom Rom_adres(4)
    Readeeprom Rom_adres(5)
    Readeeprom Rom_adres(6)
    Readeeprom Rom_adres(7)
    Readeeprom Rom_adres(8)
    Return



    w przypadku gdy uruchomię z odremowanymi komendami odczytu z EEPROM w sekcji 1 z zaremowanym skokiem do podprogramu to wszystko działa. Program po kolei
    odczytuje kolejne bajty adresu DSa a następnie wysyła je komendą 1wverify.
    Ale gdy chcę to zrobić poprzez wywołanie jak w w/w kodzie to zaczyna czytać kolejne bajty z pamięci RAM a nie EEPROM uC. Jako że jestem początkujący w temacie BASCOMa więc proszę o pomoc.
    ps. próbowałem z Funkcją i SUBem ale nic mi nie wyszło

    zmieniłem post. Wyciąłem zbędne fragmenty.
    Ktoś mi pomoże?
  • REKLAMA
  • #3 8680944
    jackone
    Poziom 14  
    J_Bravo napisał:
    A może zmienną rom_adres zainicjujesz jako
    Dim rom_adres(8) As Eram Byte.
    


    Dzięki za odpowiedź. Sprawdzę przy okazji. Na razie przeszedłem na AT89S4051 ze względu na rozrost kodu. Pełny program zajął mi ~4kB!, a mam kilka sztuk tych układów w zapasach więc trzeba je zużyć :D
REKLAMA