AT90S2313 i zewnętrzny EEPROM

Tutaj mozesz poruszać tematy ogólne powiązane z elektroniką, np. dyskusje na temat podzespołów, układów, zasad ich działania. Czyli można pisać o wszystkim czego nie da się przyporządkować do innych działów.
Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

AT90S2313 i zewnętrzny EEPROM

Post autor: Tranzystor » 11 wrz 2005, 16:43

Czy jest możliwość współpracy AT90S2313 i zewnętrznej pamięci EPROM 16kB????
W BASCOM chyba się nie da!!!


Pomocy!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Ostatnio zmieniony 16 wrz 2005, 17:05 przez Tranzystor, łącznie zmieniany 1 raz.

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 11 wrz 2005, 17:39

Jaką konkretnie pamieć masz na myśli? EPROM czy może EEPROM? Jaką magistralę posiada ta pamięć? Jeśli to EEPROM na I2C to nawet w Bascomie da sie to obsłużyć.
A tak na marginesie to zainteresuj się językiem C - tam możesz zrobić wiele więcej niż w Bascomie.

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 11 wrz 2005, 17:42

EEPROM AT24C16

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 11 wrz 2005, 17:47

No to jak najbardziej sie da obsłyżyc w bascomie. Korzystasz z poleceń : i2cstart, i2cwbyte, i2crbyte, i2cstop. Zobacz w nocie katalogowej pamięci jak przebiega transmisja, jaki układ ma adres i na podstawie tego co pisze w helpie od bascoma spróbuj coś sklecić.

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 11 wrz 2005, 19:21

A najlepiej ściągnij jakiś gotowy przykład albo zajrzyj do kursu bascom w edw - tam to było chyba razem z zegarem pcf8583.

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Re: AT90S2313 i zewnętrzny EPROM

Post autor: gaweł » 11 wrz 2005, 19:44

Tranzystor pisze:Czy jest możliwość współpracy AT90S2313 i zewnętrznej pamięci EPROM 16kB????....
Na przyszłość to może podawaj symbole układów, które chcesz dołączać do mikrokontrolerów (nie będzie wtedy nieporozumień), bo początkowo mowa była o EPROM a w efekcie okazało się, że to EEPROM. Różnica niby niewielka, o jedną literkę, a dyskusja poszłyby całkiem w innym kierunku.

e-11
-
Posty: 12
Rejestracja: 20 wrz 2005, 20:52

Post autor: e-11 » 27 wrz 2005, 22:57

Jak można sprawdzić w Bascomie pisząc program ile będzie zajmował pamięci w procesorze i czy można sprawdzić ile pamięci zajmie dana komenda , funkcja, fragment programu. Podpowiedzcie czym kierować się i jakich zasad przestrzegać aby program był jak najmniej pamieciożerny. :?
Dziękuje i Pozdrawiam

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 27 wrz 2005, 23:13

e-11 pisze:Jak można sprawdzić w Bascomie pisząc program ile będzie zajmował pamięci w procesorze i czy można sprawdzić ile pamięci zajmie dana komenda , funkcja, fragment programu.
Tego nie da się określić przed napisaniem programu. Napisz program i kompilator ci poda jego wielkość.
e-11 pisze:...Podpowiedzcie czym kierować się i jakich zasad przestrzegać aby program był jak najmniej pamieciożerny. :?
Cóż, można powiedzieć w ten sposób: ... nie używać BASCOMA (on jest bardzo pamięciochłonny).

K_o_n_r_a_d
Użytkownik
Posty: 123
Rejestracja: 29 lip 2005, 10:21
Lokalizacja: Lublin

Post autor: K_o_n_r_a_d » 27 wrz 2005, 23:58

e-11 pisze:Jak można sprawdzić w Bascomie pisząc program ile będzie zajmował pamięci w procesorze
Po skompilowaniu programu klikasz na: Show compile result i tam masz taką pozycję: ROMIMAGE - to jest wielkość zajmowanego programu.
e-11 pisze:i czy można sprawdzić ile pamięci zajmie dana komenda , funkcja, fragment programu.
Ja to robię tak: sprawdzam ile zajmuje wersja programu (skompilowanego) z daną funkcją (fragmentem programu) i bez tej funkcji (fragmentu programu) no i wiem ile zajmuje. Trzeba pamiętać jeszcze o tym, że miejsce zajmuje również wywołanie funkcji, itp. Najlepiej wszystko sprawdzić.
e-11 pisze:Podpowiedzcie czym kierować się i jakich zasad przestrzegać aby program był jak najmniej pamieciożerny. :?
Jeżeli chodzi o pamięć RAM to, np. możesz wykożystywać jedną zmnienną do różnych celów zamiast delkarować kilka oddzielnych, ale trzeba wiedzieć co się robi, trzeba być pewnym, że zmiana wart. zmiennej nie wpłynie na inne obliczenia (np. do lokalnych obliczeń, które wykonuje się w różnych częściach programu i nie są ze sobą połączone zadeklarować jakąś zmienną TEMP a nie kilka oddzielnych).

Jeżeli chodzi o pamięć programu to... (wszystko z doświadczenia):
1. ogólnie nie opłaca się robić funkcji, lepiej umiejętnie skonstruowane i przemyślane podprogramy, zajmuje to mniej miejsca, ale ma trochę inne znaczenie,
2. Łatwo można sprawdzić, że wywołanie podprogramu (poprzez Gosub nazwa_podprogramu) zajmuje 2B w pamięci, więc jeśli mamy kilkakrotne (wystarczy dwukrotne) wywołanie jakiegoś polecenia Bascoma, które zajmuje więcej niż 2B to opłaca się zrobić podprogram, np:

Kod: Zaznacz cały

Dim Klawisz As Byte
Dim I As Byte

Kl_dat Alias Pind.3
Kl_clk Alias Pind.2

Do
Loop
End
'#################################################
Odczyt_klawiatury:
Klawisz = 0
Bitwait Kl_clk , Reset
For I = 0 To 7
  Bitwait Kl_clk , Set
  Bitwait Kl_clk , Reset
  If Kl_dat = 1 Then
    Set Klawisz.i
  End If
Next I
  Bitwait Kl_clk , Set
  Bitwait Kl_clk , Reset
  Bitwait Kl_clk , Set
  Bitwait Kl_clk , Reset
Return
'################################################

Kod: Zaznacz cały

Dim Klawisz As Byte
Dim I As Byte

Kl_dat Alias Pind.3
Kl_clk Alias Pind.2

Do
Loop
End
'#################################################
Odczyt_klawiatury:
Klawisz = 0
Gosub Czekaj_na_0_na_clock
For I = 0 To 7
  Gosub Czekaj_na_1_na_clock
  Gosub Czekaj_na_0_na_clock
  If Kl_dat = 1 Then
    Set Klawisz.i
  End If
Next I
  Gosub Czekaj_na_1_na_clock
  Gosub Czekaj_na_0_na_clock
  Gosub Czekaj_na_1_na_clock
  Gosub Czekaj_na_0_na_clock
Return

Czekaj_na_1_na_clock:
Bitwait Kl_clk , Set
Return

Czekaj_na_0_na_clock:
Bitwait Kl_clk , Reset
Return
'################################################
pierwsza wersja zajmuje 232B a druga 210B. Oczywiście taka oszczędność ma też swoje wady. Skoki do podprogramów kilka taktów zegara (2-4?) trawają, no ale albo rybka, albo akwarium :)

Długo można pisać. Najlepiej sam poeksperymentuj i wtedy najlepiej poznasz różne sposoby na optymalizację.
gaweł pisze:Cóż, można powiedzieć w ten sposób: ... nie używać BASCOMA (on jest bardzo pamięciochłonny).
Masz rację, ale troszeczkę kombinujęc można uzyskać niewiele gorszy efekt (nawet przy dużych programach) niż w C.
A widzę, chociażby po znajomych, że C jest dla niektórych za trudne (?) a Bascoma można się nauczyć w... można się w ogóle nie uczyć a pisząc program czytać na bieżąco pomoc i napisać działający program.

Pozdrawiam, Konrad.

Awatar użytkownika
radzio
Użytkownik
Posty: 573
Rejestracja: 07 gru 2004, 23:06
Lokalizacja: Sosnowiec
Kontakt:

Post autor: radzio » 28 wrz 2005, 7:14

K_o_n_r_a_d pisze:A widzę, chociażby po znajomych, że C jest dla niektórych za trudne (?) a Bascoma można się nauczyć w... można się w ogóle nie uczyć a pisząc program czytać na bieżąco pomoc i napisać działający program.
Bzdury. C nie jest trudne tylko nie jest tak podawane na tacy przez EdW jak Bascom (mam nadzieję że kurs który istatnio jest w EdW trochę zmieni tą dziwną sytuację).
e-11 pisze:Podpowiedzcie czym kierować się i jakich zasad przestrzegać aby program był jak najmniej pamieciożerny
Tak jak Gaweł : nie pisać w Bascomie. "Albo rybka albo akwarium" - albo zwarty i mały kod albo bezmyslne przepisywanie poleceń bascoma.

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 29 wrz 2005, 12:06

e-11 pisze:Podpowiedzcie czym kierować się i jakich zasad przestrzegać aby program był jak najmniej pamieciożerny.
Może asemblar.

e-11
-
Posty: 12
Rejestracja: 20 wrz 2005, 20:52

Post autor: e-11 » 29 wrz 2005, 18:29

Przede wszystkim podziękowania dla Konrada to co napisałeś bardzo mi pomogło . Ale włączając się do dyskusji wszyscy po trochę macie racje. Gaweł i Radzio macie dużo racji pisząc że w Bascomie bezmyślnie przepisuje się instrukcje ja szkołe skończyłem bardzo dawno temu mam sporo siwych włosów ale zainteresował mnie temat programowania mikrokontrolerów, znalazłem Bascoma , wydrukowałem Helpa i napisałem swój pierwszy program który działa i nie był to program typu naciśnij tu to zaświeci się dioda itd. Oczywiście był to program toporny, duży i nie jeden z was napisał by go w kilku linijkach ale ten program był mój i działał , nie mogę o sobie powiedzieć - znam się na mikrokontrolerach- bo nie jest to prawda ,staram się , a jak mam problem to pytam. Nie mam za wiele już czasu aby uczyć się, wziąłem Bascoma bo dla mnie był najprostszy i tak jak napisaliście podany na tacy. Pisze ten tekst i zastanawiam się może spróbować C , bylibyście tak uprzejmi i podpowiedzieli skąd wziąć narzędzia do C jakich programów używać tak na spróbowanie i jakiegoś Helpa najlepiej oczywiście po Polsku. Może coś na prywatną.
Konrad jeszcze raz dzięki :D

K_o_n_r_a_d
Użytkownik
Posty: 123
Rejestracja: 29 lip 2005, 10:21
Lokalizacja: Lublin

Post autor: K_o_n_r_a_d » 29 wrz 2005, 21:52

Teraz przeglądając mój poprzedni przykład zauważyłem jeszcze jedną możliwość uproszczenia:

Kod: Zaznacz cały

  If Kl_dat = 1 Then
    Set Klawisz.i
  End If 
Można zamienić na:

Kod: Zaznacz cały

  Klawisz.i=Kl_dat
Oba przykłady dadzą ten sam efekt (wcześniej jest klawisz=0, dlatego da ten sam efekt) a na pewno drugi zajmuje mniej miejsca i czasu. :)

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 02 paź 2005, 17:02

...nie, bo jak klawisz już jest 1 to możesz dać na nim 0
coś długo mnie nie było.

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 21 gru 2005, 19:18

Ja wróce jeszcze do tego tematu. Chciałbym się dowiedzieć jak wysłać do EEPROMa przez I2C bajty bo nie wiem, należy podać miejsce w pamięci, ale jak pamięć ma 16kB to niestety jest aż 16000 miejsc, a wysłać przez I2C można tylko 255.

ODPOWIEDZ