AT90S2313 i zewnętrzny EEPROM
- Tranzystor
- Użytkownik
- Posty: 889
- Rejestracja: 28 sie 2005, 19:19
- Lokalizacja: Świętochłowice
- Kontakt:
AT90S2313 i zewnętrzny EEPROM
Czy jest możliwość współpracy AT90S2313 i zewnętrznej pamięci EPROM 16kB????
W BASCOM chyba się nie da!!!
Pomocy!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
W BASCOM chyba się nie da!!!
Pomocy!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Ostatnio zmieniony 16 wrz 2005, 17:05 przez Tranzystor, łącznie zmieniany 1 raz.
- Tranzystor
- Użytkownik
- Posty: 889
- Rejestracja: 28 sie 2005, 19:19
- Lokalizacja: Świętochłowice
- Kontakt:
Re: AT90S2313 i zewnętrzny EPROM
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.Tranzystor pisze:Czy jest możliwość współpracy AT90S2313 i zewnętrznej pamięci EPROM 16kB????....
Tego nie da się określić przed napisaniem programu. Napisz program i kompilator ci poda jego wielkość.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.
Cóż, można powiedzieć w ten sposób: ... nie używać BASCOMA (on jest bardzo pamięciochłonny).e-11 pisze:...Podpowiedzcie czym kierować się i jakich zasad przestrzegać aby program był jak najmniej pamieciożerny.![]()
-
K_o_n_r_a_d
- Użytkownik
- Posty: 123
- Rejestracja: 29 lip 2005, 10:21
- Lokalizacja: Lublin
Po skompilowaniu programu klikasz na: Show compile result i tam masz taką pozycję: ROMIMAGE - to jest wielkość zajmowanego programu.e-11 pisze:Jak można sprawdzić w Bascomie pisząc program ile będzie zajmował pamięci w procesorze
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:i czy można sprawdzić ile pamięci zajmie dana komenda , funkcja, fragment programu.
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).e-11 pisze:Podpowiedzcie czym kierować się i jakich zasad przestrzegać aby program był jak najmniej pamieciożerny.
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
'################################################Długo można pisać. Najlepiej sam poeksperymentuj i wtedy najlepiej poznasz różne sposoby na optymalizację.
Masz rację, ale troszeczkę kombinujęc można uzyskać niewiele gorszy efekt (nawet przy dużych programach) niż w C.gaweł pisze:Cóż, można powiedzieć w ten sposób: ... nie używać BASCOMA (on jest bardzo pamięciochłonny).
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.
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ę).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.
Tak jak Gaweł : nie pisać w Bascomie. "Albo rybka albo akwarium" - albo zwarty i mały kod albo bezmyslne przepisywanie poleceń bascoma.e-11 pisze:Podpowiedzcie czym kierować się i jakich zasad przestrzegać aby program był jak najmniej pamieciożerny
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
Konrad jeszcze raz dzięki
-
K_o_n_r_a_d
- Użytkownik
- Posty: 123
- Rejestracja: 29 lip 2005, 10:21
- Lokalizacja: Lublin
Teraz przeglądając mój poprzedni przykład zauważyłem jeszcze jedną możliwość uproszczenia:
Można zamienić na:
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. 
Kod: Zaznacz cały
If Kl_dat = 1 Then
Set Klawisz.i
End If Kod: Zaznacz cały
Klawisz.i=Kl_dat
- Tranzystor
- Użytkownik
- Posty: 889
- Rejestracja: 28 sie 2005, 19:19
- Lokalizacja: Świętochłowice
- Kontakt: