Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Data-Flash AT45DB041B + BASCOM = Problem

mcv
-
-
Posty:5
Rejestracja:14 lut 2004, o 15:57
Lokalizacja:Kraków
Kontaktowanie:
Data-Flash AT45DB041B + BASCOM = Problem

Postautor: mcv » 1 maja 2006, o 10:23

Witam!

Próbuję uruchomić Data-Flash AT45DB041B pod Basomem, niestety nic nie chce działać.
Na podstawie materiałow znalezionych w sieci poskładałem taki program:

Kod: Zaznacz cały

$crystal = 14745900 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config Pinb.0 = Output Config Spi = Soft , Din = Pinb.3 , Dout = Portb.2 , Ss = None , Clock = Portb.1 'konfiguracja interfejsu SPI Declare Sub Zap_eeprom(byval Adres As Long , Byval Dana As Byte) 'procedura zapisu danej do pamieci Declare Sub Odc_eeprom(byval Adres As Long , Dana As Byte) 'procedura odczytu danej z pamieci Dim Adres As Long 'zmienna adresu komorki pamieci Dim Dana As Byte 'zmienna zmienna na odczytana lub zapisana dana do pamieci Dim I As Long 'zmienna licznikowa Dim Temp As Byte 'zmienna pomocnicza Dim Temp1 As Byte 'zmienna pomocnicza Dim Temp2 As Byte 'zmienna pomocnicza Dim Temp3 As Byte 'zmienna pomocnicza Dim Zm_pom As Word 'zmienna pomocnicza Dim Temp4 As Long 'zmienna pomocnicza Dim J As Byte 'zmienna licznikowa Dim Adres2 As Long Dim Danemoje As Byte Dim Danemoje2 As Byte Sck Alias Portb.1 Cs Alias Portb.0 Danemoje2 = 0 Do Spiinit 'inicjacja interfejsu SPI Set Cs 'ustawienie linii Cs Reset Sck Waitms 200 Adres2 = 1000 Danemoje = 123 'zerowanie linii Sck Call Zap_eeprom(adres2 , Danemoje) Wait 2 Call Odc_eeprom(adres2 , Dana) Lcd Dana Wait 2 Cls 'koniec programu Loop Sub Zap_eeprom(byval Adres As Long , Byval Dana As Byte) 'procedura zapisu danej do EEPROM Temp4 = Adres / 264 'obliczenie adresu strony Zm_pom = Temp4 'przepisanie adresu strony Temp1 = 0 'wyzerowanie Temp1 Temp1.1 = Zm_pom.8 'zapis do bitu 1 zmiennej Temp1 bitu 8 zmiennej Zm_pom Temp1.0 = Zm_pom.7 'zapis do bitu 0 zmiennej Temp1 bitu 7 zmiennej Zm_pom Adres = Adres Mod 264 'obliczenie adresu w stronie Shift Zm_pom , Left , 1 'przesuniecie wartosci w zm_pom o jedna pozycje w lewo (mnozenie przez 2) Temp2 = Low(zm_pom) 'przepisanie do Temp2 mniej znaczacej wartosci zmiennej zm_pom Temp2.0 = Adres.8 'zapis do bitu 0 zmiennej Temp2 bitu 8 zmiennej Adres Zm_pom = Adres 'przepisanie wartosci z Adres do Zm_pom Temp3 = Zm_pom 'przepisanie wartosci z zm_pom do Temp3 Set Sck 'ustawienie linii Sck Reset Cs 'zerowanie linii Cs Temp = &H53 'kod rozkazu odczytu strony do bufora pamieci Spiout Temp , 1 'wyslanie rozkazu Spiout Temp1 , 1 'wyslanie adresu Spiout Temp2 , 1 'wyslanie adresu Spiout Temp3 , 1 'wyslanie adresu Set Cs 'ustawienie linii Cs Delay 'opoznienie Set Sck 'ustawienie linii Sck Reset Cs 'zerowanie linii Cs Temp = &H82 'kod rozkazu zapisu strony do pamieci EEPROM (poprzez bufor) Spiout Temp , 1 'wyslanie rozkazu Spiout Temp1 , 1 'wyslanie adresu Spiout Temp2 , 1 'wyslanie adresu Spiout Temp3 , 1 'wyslanie adresu Spiout Dana , 1 'wyslanie zapisywanej danej Set Cs 'ustawienie linii Cs Waitms 28 'opoznienie 28 ms End Sub 'koniec procedury Sub Odc_eeprom(byval Adres As Long , Dana As Byte) 'procedura odczytu danej do EEPROM Temp4 = Adres / 264 'obliczenie adresu strony Zm_pom = Temp4 'przepisanie adresu strony Temp1 = 0 'wyzerowanie Temp1 Temp1.1 = Zm_pom.8 'zapis do bitu 1 zmiennej Temp1 bitu 8 zmiennej Zm_pom Temp1.0 = Zm_pom.7 'zapis do bitu 0 zmiennej Temp1 bitu 7 zmiennej Zm_pom Adres = Adres Mod 264 'obliczenie adresu w stronie Shift Zm_pom , Left , 1 'przesuniecie wartosci w zm_pom o jedna pozycje w lewo (mnozenie przez 2) Temp2 = Low(zm_pom) 'przepisanie do Temp2 mniej znaczacej wartosci zmiennej zm_pom Temp2.0 = Adres.8 'zapis do bitu 0 zmiennej Temp2 bitu 8 zmiennej Adres Zm_pom = Adres 'przepisanie wartosci z Adres do Zm_pom Temp3 = Zm_pom 'przepisanie wartosci z zm_pom do Temp3 Reset Sck 'zerowanie linii Sck Reset Cs 'zerowanie linii Cs Temp = &H52 'kod rozkazu odczytania danej z pamieci pod wybranym adresem Spiout Temp , 1 'wyslanie rozkazu Spiout Temp1 , 1 'wyslanie adresu Spiout Temp2 , 1 'wyslanie adresu Spiout Temp3 , 1 'wyslanie adresu Temp = 0 'zrowanie wartosci Temp Spiout Temp , 4 'wyslanie 4 bajtow o wartosci 0 Spiin Dana , 1 'odczyt danej z pamieci EEPROM Set Cs 'ustawienie linii Cs End Sub


Program najpierw zapisuje do pamięci wartość a potem odczytuje, lecz mi zawsze zwraca 0.

Czy ktoś próbował obsłużyć tą pamieć w BASOMIE?
Ostatnio zmieniony 27 mar 2007, o 20:19 przez mcv, łącznie zmieniany 1 raz.

Luki
-
-
Posty:15
Rejestracja:22 lip 2004, o 18:39

Postautor: Luki » 2 maja 2006, o 21:22

Kiedyś znalazłem taki link, bo też się przymierzałem do uruchowienia tej cholernej pamięci
Może ci coś pomoże
http://www.grote.net/bascom/msg08023.html

Twój program za każdym razem odczytuje 0,gdyby odczytał komórkę nie zapisaną powinien wywalić FF czyli 256, tak mi się wydaje.

jacynka84
-
-
Posty:150
Rejestracja:17 maja 2006, o 22:50
Lokalizacja:Sulejówek

Postautor: jacynka84 » 16 paź 2006, o 16:24

Nie jestem pewny ,ale ja bym zmienił pinologie LCD dokładnie na odwrót .
RS-PB0 -----DB.7-PB5

mw
-
-
Posty:242
Rejestracja:23 lut 2003, o 23:22
Lokalizacja:Busko Zdrój
Kontaktowanie:

Postautor: mw » 16 paź 2006, o 17:31

Mam jeszcze jeden plik obslugi pamieci Flash. Podesle jak znajde.
Moze problemy z zapisem do pamieci sa w zle dobranych czasach potrzebnych na wykonanie instrukcji.

Fredy
-
-
Posty:141
Rejestracja:27 mar 2005, o 21:45
Lokalizacja:Małopolska

Postautor: Fredy » 16 paź 2006, o 20:49

U mnie ten programik zadziałał - ale tez miałem problemy na początku. Dopiero podłączenie kondensatorka na zasilaniu poprawiło sytuacje teraz hula super.

elektrofil
-
-
Posty:6
Rejestracja:15 cze 2006, o 17:21
Lokalizacja:poznan
Kontaktowanie:

Postautor: elektrofil » 24 lut 2007, o 17:16

witam.
obsługa tej pamieci z bascoma jest bardzo dziwna.
napisałem własne biblioteki do jej obsługi.
mają jednak pewne ograniczenia:
-zapis całych stron bez możliwości mniejszych ilości
-zmienne uzywane do komunikacji muszą być zadeklarowane jako pierwsze
-ważna jest kolejność deklaracji tych zmiennych
-kod jest duzy bo bascom niezbyt rozumie rozkaz BREQ w jednej z petli, chociaż wcześniej kilka razy widzi go normalnie.

bascom nie mogł obsłuzyć tej pamieci poprawnie chociaż robiłem to dokładnie według noty i w asm działało bez problemu. w bascomie musiałem nielogicznie odczytywać w pewnych miejscach coś z pamieci flash aby następnie dostac prawidłowe dane. nie działało ani sprzetowo ani programowo.

szymel
-
-
Posty:212
Rejestracja:16 sty 2005, o 16:42
Lokalizacja:Włocławek

Postautor: szymel » 24 lut 2007, o 18:45

... chociaż robiłem to dokładnie według noty i w asm działało bez problemu. ..
A wspomniane biblioteki , to w jakim języku napisałeś , nie w asemblerze :?:

Piotrek

elektrofil
-
-
Posty:6
Rejestracja:15 cze 2006, o 17:21
Lokalizacja:poznan
Kontaktowanie:

Postautor: elektrofil » 7 mar 2007, o 11:34

tak w asemblerze, ale debilny kompilator asm w bascom nie do konca dobrze kompiluje asm. asm pisane pod bascom tak aby sie skompilowało jest spuchniete dwukrotnie, bo nagle kompilator w pewnym momecie przestaje rozpoznawać instrukcje breq
kilkanaście breq jest ok, ale to jedno jest mu nie znaną komendą. niestety program działający w asm (avr studio) nie daje sie skompilowac do konca w bascomie.
dzieki temu wiel szybkich bibliotek nie bedzie dostępnych dla bascom'owców, bo nie bede się użerał z bascomem z powodu jego nierozumności kodu asm. jak ktoś chce zrobic biblio pod bascom to moge dać pliki asm, niestety stosuje sztuczki skracające kod przez co modyfikacja staje sie b.trudna.
mam chociażby prawie ukończone obsługe myszy i touch pad'a (obsługę, nie emulowanie) ale nie daje sie kompilować bez poprawek, więc sory, nie mam czasu na pisanie pod czyjeś widzimisie. jak coś nie działa dobrze to dla mnie po prostu nie działa wcale.
nie jest mi potrzebny samochód który skręca tylko w prawo, chociaż można nim dojechać wszędzie to trzeba jeżdzić na około. szkoda mi na to czasu.

szymel
-
-
Posty:212
Rejestracja:16 sty 2005, o 16:42
Lokalizacja:Włocławek

Postautor: szymel » 7 mar 2007, o 13:27

Jeśli możesz , to wrzuć co tam masz ;)
Zaciekawiło mnie bardzo , to oporne breq .

Piotrek

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 0 gości