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

Jak przesłać całą tablicę string do pamięci EEPROM w Bascom?

raven000 20 Lip 2006 11:22 1079 7
REKLAMA
  • #1 2836131
    raven000
    Poziom 12  
    Posty: 24
    Pomógł: 3
    witam

    mam taki maly problemik
    chcialbym przeslac zdeklarowana tablice zmiennych typu string do pamieci seregowej eeprom

    z transmisja pojedynczych bajtow nie ma problemu ale sie zastanawiam jak przeslac ja cala tablice na raz

    licze ze ktos z sznownych kolegow podsunie mi pomysl a moze gotowe rozwiazanie

    pozdrawiam
  • REKLAMA
  • #2 2836610
    GienekS
    Poziom 32  
    Posty: 1971
    Pomógł: 139
    Ocena: 15
    Zawsze będzie się to sprowadzało do przesyłania pojedynczych bajtów a w przypadku programowego I2C kolejnych bitów. Tego nie przeskoczysz.
  • REKLAMA
  • #3 2836802
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    GienekS napisał:
    Zawsze będzie się to sprowadzało do przesyłania pojedynczych bajtów a w przypadku programowego I2C kolejnych bitów. Tego nie przeskoczysz.


    Oczywiście nie ma innej możliwości jak wysyłanie danych na szynę I2C bajt po bajcie.
    Mimo to większość (jesli nie wszystkie) pamięci opartych o I2C ma możliwość zapisania/odczytania danych szeregowo.
    Jest możliwość zapisu takiej pamięci, za pomocą ciągu danych, nie koniecznie adresując każdą komórkę osobno. Podobnie jest z odczytem.

    I chyba o to chodziło koledze raven000-owi.
  • REKLAMA
  • #4 2836848
    raven000
    Poziom 12  
    Posty: 24
    Pomógł: 3
    dziekuje ale o tym wiedzialem
    chcialem wyslac cala tablice na raz ale widze ze sie nie da wymyslilem sobie mala procedure jesli kogos to interesuje moge ja wstawic
  • #5 2839204
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Pokaż co tam wykoncypowałeś :)
  • #6 2841602
    raven000
    Poziom 12  
    Posty: 24
    Pomógł: 3
    Tablica = 1

    Adresh = High(961)
    Adresl = Low(961)

    I2cstart
    I2cwbyte &H4A
    I2cwbyte Adresh
    I2cwbyte Adresl

    Do

    For A = 1 To 21



    T(1) = Mid(kod(tablica) , 1 , 1)
    Ta(1) = Asc(t(1))
    I2cwbyte Ta(1)

    T(2) = Mid(kod(tablica) , 2 , 1)
    Ta(2) = Asc(t(2))
    I2cwbyte Ta(2)

    T(3) = Mid(kod(tablica) , 3 , 1)
    Ta(3) = Asc(t(3))
    I2cwbyte Ta(3)

    T(4) = Mid(kod(tablica) , 4 , 1)
    Ta(4) = Asc(t(4))
    I2cwbyte Ta(4)

    T(5) = Mid(kod(tablica) , 5 , 1)
    Ta(5) = Asc(t(5))
    I2cwbyte Ta(5)

    T(6) = Mid(kod(tablica) , 6 , 1)
    Ta(6) = Asc(t(6))
    I2cwbyte Ta(6)

    Incr Tablica


    If Tablica = 160 Then

    Exit For

    Else
    End If

    Next A

    Waitms 10



    Loop Until Tablica = 160

    I2cstop

    tablica ma taka declaracje kod(160) as string * 7 gdzie sa zapisywane elementy 6 znakowe
  • REKLAMA
  • #7 2842323
    Samuraj
    Poziom 35  
    Posty: 2792
    Pomógł: 286
    Ocena: 618
    Dlaczego tego w pętle nie dałeś, choć by for next. Wtedy cały listing zajmował by 5 linijek, no może 10 a nie taki tasiemiec
  • #8 2843067
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    Samuraj napisał:
    Dlaczego tego w pętle nie dałeś, choć by for next. Wtedy cały listing zajmował by 5 linijek, no może 10 a nie taki tasiemiec

    Na dokładkę , to kol. raven000 chyba zapomniał ,że eepromy buforują dane do zapisu i trzeba kontrolować adres , żeby się bufor nie "przekręcił" ;)
    Ta procedurka , raczej nie zadziała :(

    Piotrek

    PS
    Co to za tajemnicza "kostka" :?:
    Po co kod(160) As String *7 , skoro elementy są 6-znakowe :?:

Podsumowanie tematu

✨ Dyskusja dotyczy przesyłania całej tablicy typu string do pamięci EEPROM za pomocą Bascoma i interfejsu I2C. Podkreślono, że fizycznie dane muszą być przesyłane bajt po bajcie, co jest nieuniknione przy komunikacji szeregowej. Jednak wiele pamięci EEPROM z interfejsem I2C umożliwia zapis i odczyt danych w trybie szeregowym, co pozwala na przesłanie ciągłego bloku danych bez konieczności adresowania każdej komórki osobno. Autor przedstawił własną procedurę, która iteruje po elementach tablicy i wysyła kolejne znaki jako bajty do EEPROM, wykorzystując pętle i funkcje Mid oraz Asc do konwersji znaków na wartości ASCII. Wskazano, że kod można uprościć stosując pętle zamiast powtarzających się instrukcji. Zwrócono uwagę na konieczność kontrolowania adresu zapisu w EEPROM, aby uniknąć przepełnienia bufora zapisu. Pojawiły się pytania o szczegóły deklaracji tablicy i rozmiar elementów string, co ma wpływ na poprawność działania procedury.
Wygenerowane przez model językowy.
REKLAMA