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

[bascom]Zapisanie single w eepromie

_Robak_ 29 Wrz 2009 19:50 2409 18
REKLAMA
  • #1 7072108
    _Robak_
    Poziom 33  
    Witam serdecznie,
    Jako ze musze cos w bascomie zrobic mam taki problemik :) Jak zapisac singla w eepromie, badz tez zrzutowac singla na byte i go zapisac. Teraz zrobilem tak (program obrazowy)
    
    dim a as single
    dim b as byte
    b=a
    Writeeeprom b , 1
    Readeeprom a , 1
    


    Ale zapisuje mi 255;/
  • REKLAMA
  • Pomocny post
    #2 7072137
    pixel7
    Poziom 23  
    Najprościej to użyć overlay w sram. Single to 4 bajty w pamięci.

    dim zmienna_single as single
    dim bajt1 as byte at zmienna_single overlay
    dim bajt2 as byte at zmienna_single+1 overlay
    dim bajt3 as byte at zmienna_single+2 overlay
    dim bajt4 as byte at zmienna_single+3 overlay
    
    


    Potem zapisujesz bajty do eeprom, odczytujesz kiedy chcesz i masz wynik w single.
  • #3 7072228
    _Robak_
    Poziom 33  
    Ok zrobilem tak:
    
    Dim Temperatura_zadana As Single
    Dim Bajt1 As Byte At Temperatura_zadana Overlay
    Dim Bajt2 As Byte At Temperatura_zadana + 1 Overlay
    Dim Bajt3 As Byte At Temperatura_zadana + 2 Overlay
    Dim Bajt4 As Byte At Temperatura_zadana + 3 Overlay
    
    Writeeeprom Bajt1 , 1
    Writeeeprom Bajt2 , 2
    Writeeeprom Bajt3 , 3
    Writeeeprom Bajt4 , 4
    
    .... wylaczam sprzet......
    
    Readeeprom Bajt4 , 4
    Readeeprom Bajt3 , 3
    Readeeprom Bajt2 , 2
    Readeeprom Bajt1 , 1
    

    I nie dziala ;) Otrzymuje -0 :(
  • #4 7072293
    pixel7
    Poziom 23  
    Zapisując bajty użyj realnych wartości ze zmiennej single. Np:
          
    Writeeeprom Bajt1 , 128
          Writeeeprom Bajt2 , 121
          Writeeeprom Bajt3 , 240
          Writeeeprom Bajt4 , 71 
  • #5 7072319
    _Robak_
    Poziom 33  
    Ale czym sie rozni adres 128 od 1 ?
  • REKLAMA
  • #7 7072347
    _Robak_
    Poziom 33  
    Podstawic jako wartosci bajtow czyli ? ;) Sorki za byc moze glupie pytanie, ale w bascomie jeszcze nic nie robilem, a jest jak dla mnie koszmarnie toporny ;/
  • #8 7072365
    pixel7
    Poziom 23  
    O tak:

    Writeeeprom 128 , 1
    Writeeeprom 121 , 2
    Writeeeprom 240 , 3
    Writeeeprom 71 , 4
    


    Po restarcie powinieneś w single mieć 123123
  • REKLAMA
  • #9 7072389
    _Robak_
    Poziom 33  
    No ale problem w tym, ze j potrzbuje zapisac ZMIENNA ;) Tak to moge sobie na poczatku programu przypisac do zmiennej stala wartosc. Chodzi o to ze ona jest modyfikowana i musi zostac zapamietana, moze byc jako byte.
  • #10 7072437
    pixel7
    Poziom 23  
    Nie można zapisać zmiennej single (aż 4 bajty) do jednego bajtu. Poza tym zapisuj do eeprom co jakiś czas tylko uważaj na ilość zapisów, eepromy są ograniczone. Nie musisz przypisywać wartości zmiennej na początku. Dałem taki przykład bo coś musiało być zapisane inaczej miałbyś 0 w eepromie.
  • #11 7072463
    _Robak_
    Poziom 33  
    No oczywiscie ze nie mozna zapisac singla w byte, ale mozna go zrzutowac na byte tracac wartosc po przecinku. Tylko jak sie to robi w tym wspanialym programie ;)? Albo podzielic na 4 bajty i je zapisac i potem zlozyc w single, tylko jak to zrobic ? ;)
  • REKLAMA
  • #12 7072591
    pixel7
    Poziom 23  
    Pod warunkiem, że wartość nie przekroczy 255. Podział na bajty składowe singla w pamięci masz przedstawiony! Część całkowita?

    Cytat:


    Funkcja INT()
    Przeznaczenie:

    Zwraca całkowitą cześć podanej liczby.

    Składnia:

    zmienna = INT( wartość )

    gdzie:

    zmienna dowolna zmienna, do której wpisana będzie całkowita część podanej liczby,
    wartość liczba której całkowita część powinna być zwrócona.
    Opis:

    Część ułamkowa to wszystkie liczby znajdujące się po kropce z prawej strony. Część całkowita to ta znajdująca się przed kropką.
    Dla przykładu liczba 1234.567 posiada część całkowitą: 1234 i ułamkową: 567.

    (c) Zbigniew Gibek, 2002-2005 (c) MCS Electronics, 1999-2005


    Będziesz miał 2 bajty i zapisujesz ten niższy.
  • Pomocny post
    #13 7072596
    zumek
    Poziom 39  
    O jakim rzutowaniu Wy tu mówicie :?:
    Potrzebujesz zmienną w EEPROM, to ją sobie tam zadeklaruj, a nie wymyślasz cuda :-P
  • #15 7072859
    zumek
    Poziom 39  
    _Robak_ napisał:
    W takim razie...

    Odpalam pierwszy program
    ...
    Potem drugi
    ...
    I nic... Dostaje zero

    Chłopie pisz jaśniej , bo wróżki wyginęły przed dinozaurami :-P
    Wgrywasz i uruchamiasz 2 oddzielne programy :?:
    Zero dostajesz gdzie ... na LCD, terminalu, czy może w kartoniku :?:
  • #16 7072900
    _Robak_
    Poziom 33  
    No wiec.. ;) Nie wiem co tu jasniej pisac ;) Mam dwie zmienne, dwa programy, w pierwszym chce tylk zapisac wartosc 5 w eepromie poprzez przypisanie


    potem zmieniam program i chce ta wartosc z eepromu wpisac do zmiennej b, czyli


    Wyswietlam ja sobie na lcdku i poki co to mam zero ;/ Tak swoja droga to jak tak zadeklaruje zmienna eram to pod jakim adresem on ja zapisze ? zawsze pod tym samym ?
  • Pomocny post
    #17 7072949
    mirekk36
    Poziom 42  
    _Robak_ napisał:
    ...potem zmieniam program i chce ta wartosc z eepromu wpisac do zmiennej b, czyli...


    a co to znaczy zmieniam program u ciebie ???? wgrywasz nowy skompilowany wsad do procka? czy co????

    a jeśli wgrywasz drugi - to czy zadbałeś o to aby przy tej okazji nie był kasowany eeprom ?

    czy nie dasz rady dokonać takich testów za pomocą jednego programu w procku ????

    zapiszesz sobie zmienną - wyłączysz procka - a po włączeniu odczytasz ją z eeprom - czy to ciebie nie przekona, że ona tam jest zapisana? - chyba że coś nie rozumiem w tym twoim sposobie polegającym na uruchamianiu 2 programów
  • #18 7072997
    zumek
    Poziom 39  
    Wgraj taki kod
    Dim A As Eram Single At 1
    
    A = 1
    
    Stop
    
    

    Po uruchomieniu programu sprawdź przez odczytanie eepromu przez programator, czy w eepromie od adresu 1 znajdują się takie wartości &H00,&H00,&H80,&H3F.
    ...
    Poczytaj o bicie EESAVE w fusebitach.
  • #19 7073021
    _Robak_
    Poziom 33  
    Dzieki za pomoc chlopaki :) Mirekk36 trafil w sedno ;) Kasowalem sobie eeprom przy wgraniu programu. Temat zamkniety :)
REKLAMA