| Author |
Message
|
mirekk36 Poziom 25

Joined: 17 Jun 2006 Posts: 8674 Location: Szczecin
|
#1
13 Aug 2008 12:42 Re: [AVR][BASCOM] - własna biblioteka może być w Bascomie? |
|
|
|
Witam,
takie małe pytanko, czy zawartość biblioteki Bascoma może być napisana w Bascomie?
kombinuję z czymś takim już:
| Code: |
[mk_lcd_cls(i2c_tx_buf As Byte , Byval Amode As Byte]
I2c_tx_buf(1) = _lcd
I2c_tx_buf(2) = 1
I2c_tx_buf(3) = Amode
I2creceive _uvga_slave_adr , I2c_tx_buf(1) , 3 , 1
[end] |
pomijam już że nie wiem jak zdefiniować tu stałe, które tam widać jak:
"_lcd" to narazie mniejszy pikuś bo może tak się w ogóle nie da? czy w bibliotece zapis typu:
jest poprawny? bo oczywiście przy kompilacji same błędziory z tym wyskakują. Czy trzeba na żywca napisać wszystko w asm ???
a jeśli tak? to jak do tego podejść w asm? zakładając, że chcę jak widać powyżej zrealizować to co widać w tej mojej pseudo bibliotecznej procedurze, czyli załadować do bufora kilka różnych bajtów podanych w parametrze do procedury jako tenże bufor, a następnie wysłać je przez I2C i na końcu odebrać 1 bajt??? może jakieś sugestie naprowadzające mnie na ten trop? byłbym wdzięczny
Dodano po 3 [godziny] 4 [minuty]:
no dobra już się poprawiam, powyższa funkcja w bibliotece powinna wyglądać tak chyba:
| Code: |
[_mk_lcd_cls]
... tutaj wczytanie parametrów ze stosu (już wiem jak)
I2creceive _uvga_slave_adr , I2c_tx_buf(1) , 3 , 1
[end]
|
ale jak dobrać się do funkcji I2creceive w asemblerze i jak przekazać do niej parametry ??
|
|
| Back to top |
|
 |
Google

|
#
13 Aug 2008 12:42 |
|
|
|
|
|
| Back to top |
|
 |
mirekk36 Poziom 25

Joined: 17 Jun 2006 Posts: 8674 Location: Szczecin
|
#2
13 Aug 2008 21:08 Re: [AVR][BASCOM] - własna biblioteka może być w Bascomie? |
|
|
|
ok, idąc dalej samemu doszedłem już, że jest taka procedura jak _i2c_rbytes, której trzeba podać:
r17 - adres slave układu
r24 - ilość bajtów do wysłania
r25 - ilość bajtów do odebrania
X - bufor tychże bajtów
więc próbuję ją wywołać --- rcall _i2c-rbytes i NIC !
nic nie wysyła ;( a jak zrobię wysłanie pojedyńczego bajtu za pomocą procedurek:
_i2c_start
ldi r17, slave_adr
rcall _i2c_write
_i2c_stop
to ładnie działa. Przeanalizowałem już od deski do deski tą procedurę _i2c_rbytes i ona też powinna cokolwiek wysłać - a ona NIC ! - kurczę co się może dziać czy nadal czegoś nie wiem?
|
|
| Back to top |
|
 |
ZbeeGin Poziom 23

Joined: 22 Apr 2002 Posts: 2624 Location: 50°19'N 18°55'E
|
#3
13 Aug 2008 21:27 Re: [AVR][BASCOM] - własna biblioteka może być w Bascomie? |
|
|
|
Po pierwsze - użyte procedury z innych bibliotek powinny się znaleźć w lini $EXTERNAL:
| Code: |
[_I2C_RBYTES]
$EXTERNAL _I2C_READ
_I2C_RBYTES:
Mov R17,R18 ; copy slave address
Cpi R24,0 ; bytes to send |
Po drugie można wplatać instrukcje BASCOM tylko trzeba to zrobić z prefixem:
Po trzecie chcesz coś wysłać, a zatem nie _i2c_rbytes tylko _i2c_wbytes.
ps. Nie zapominaj o procedurze _i2c_init, która ustawia stany na portach. Aby poprawnie wywołać procedurę _i2c_rbytes powinieneś przeanalizować kod jaki tworzy kompilator podczas kompilacji normalnego programu z wykorzystaniem I2C. To jest najlepsza droga.
|
|
| Back to top |
|
 |
Google

|
#
13 Aug 2008 21:27 |
|
|
|
|
|
| Back to top |
|
 |
mirekk36 Poziom 25

Joined: 17 Jun 2006 Posts: 8674 Location: Szczecin
|
#4
13 Aug 2008 23:28 Re: [AVR][BASCOM] - własna biblioteka może być w Bascomie? |
|
|
|
No jasne - kurczę ale zonka zrobiłem , na wejsciu do _i2c_rbytes podajemy adres Slave nie w R17 jak pisałem wcześniej tylko w R18 !!! kurczę teraz działa :)
ja dlatego używam _i2c_rbytes ponieważ zawsze muszę do swojego układu SLAVE najpierw coś zapisać, żeby coś odczytać a do tego jest jak w sam raz i2creceive lub właśnie jej odpowiednik _i2c_rbytes
hmmm odnośnie tego $external to nie wiedziałem i nawet nie stosowałem a działa teraz. Ale skoro tak trzeba to będę tak robił , dzięki za uwagę.
... aha pisząc abym analizował kod jaki kompilator tworzy podczas kompilacji - to masz na myśli - wrzucenie pliku OBJ do AvrStudio ??? czy może jeszcze jakiś inny sposób?
pozdrawiam
Dodano po 1 [godziny] 19 [minuty]:
halo halo - jeszcze jedno -----> może ktoś mi jeszcze wyjaśnić dlaczego edytor Bascomowski dla biblitek tak durnie się zachowuje ???? jak piszę np *BASIC: bo jak się okazuje jest to duża różnica w porównianiu do * Basic :, to okazuje się że jak kliknę kursorem gdzie indziej to napis *BASIC: zamienia się na * Basic : no i kicha??? trzeba jakiegoś innego edytora używać ???
Dodano po 17 [minuty]:
dobra już sobie wyłączyłem tą durną opcję REFORMAT CODE w opcjach kompilatora
ale jednak napisanie najprostszej biblioteki graniczy z cudem, bo np właśnie w tej jednej narazie procedurze w mojej bibliotece korzystam z _i2c_rbytes no i w związku z tym koniecznie po nagłówku nazwy funkcjidałem
| Code: |
[Mk_lcd_cls]
$external _i2c_rbytes
Mk_lcd_cls: |
kurdę no i oczywiście przy kompilacji mojego już programu w Bascomie gdzie mam wszystko zdeklarowane ładnie dostaję setki komunikatów o błędach nt. _SDA, _SCL, _SDADDR, _SCLDDR itp itd
tzn rozumiem, że używa ch gdzieś tam w czeluściach _i2c_rbytes no ale co z tym zrobić dalej. Normalnie załamka. A oczywiście w programie dałem $lib "i2c_TWI.lib"
ale może to trzeba gdzieś dać jeszcze w bibliotece??? w tym PDFie jest napisane żeby dać $lib przed $external ale oczywiście dodanie $lib w bibliotece kończy się efektem że kompilator drze się , że nie zna polecenia asm o nazwie $lib
a taka ma być narazie prosta ta biblioteka:
| Code: |
'Declare Sub Mk_led_cls(byval Amode As Byte)
[mk_lcd_cls]
$EXTERNAL _i2c_rbytes
Mk_lcd_cls:
Ldd R26, Y + 0
Ldd R27, Y + 1
Ld R24, X
*BASIC: Loadadr I2c_tx_buf(1) , X
* Ldi R16 , _lcd
st X+, R16
ldi R16,1
st X+, R16
st X+, R24
* Ldi R18 , _uvga_slave_adr
*BASIC: Loadadr I2c_tx_buf(1) , X
ldi R24, 3
ldi R25, 1
rcall _i2c_rbytes
ret
[end] |
|
|
| Back to top |
|
 |
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 7263 Location: Zawiercie
|
#5
13 Aug 2008 23:52 Re: [AVR][BASCOM] - własna biblioteka może być w Bascomie? |
|
|
|
a czemu juz nie bawisz sie w C? jakos jednak laczenie C (gcc) z ASM wydaje mi sie prostsze... zaczales walke z nauka C - czyzbys skonczyl?
4\/3!!
|
|
| Back to top |
|
 |
Google

|
#
13 Aug 2008 23:52 |
|
|
|
|
|
| Back to top |
|
 |
mirekk36 Poziom 25

Joined: 17 Jun 2006 Posts: 8674 Location: Szczecin
|
#6
14 Aug 2008 00:13 Re: [AVR][BASCOM] - własna biblioteka może być w Bascomie? |
|
|
|
nie nie, na 100% nie skończyłem, tylko czas mnie goni a muszę ukończyć pewien projekcik i dlatego łatwiej mi jeszcze idzie z Bascomem.
w C jak już wiesz napisałem sobie sam własną i ślicznie działającą bibliotekę do obsługi LCD. Ale jak się okazuje, w ten sam sposób muszę "przewalczyć" obsługę wszystkich modułów jak RS232/485, I2C, 1Wire itp ... a nauka pochłania jednak sporo czasu. Nie chcę natomiast wciąż szukać po necie jakichś bibliotek do C i łatać program jak frankensztajna.
poza tym jestem zafascynowany C i wrócę do niego :)
a narazie b.szybko mi idzie zrobienie tego co chcę uzyskać z Bascomem i sporą ilością wstawek asemblerowych. Tylko też już kurczę 2 gi dzień walczę z tworzeniem biblioteki żeby już zamknąć całość pod klucz. Tzn i bez bibliteki sobie bym poradził - ale jeszcze daję sobie ostatecznie kilka dni. Proste funkcje już umiem wsadzać do biblioteki ale takie, które korzystają z innych bibliotek to już masakra jak narazie
|
|
| Back to top |
|
 |
Freddie Chopin Poziom 25

Joined: 12 Dec 2005 Posts: 7263 Location: Zawiercie
|
#7
14 Aug 2008 00:14 Re: [AVR][BASCOM] - własna biblioteka może być w Bascomie? |
|
|
|
no to powodzenia w dalszej walce <:
4\/3!!
|
|
| Back to top |
|
 |
mirekk36 Poziom 25

Joined: 17 Jun 2006 Posts: 8674 Location: Szczecin
|
#8
14 Aug 2008 11:51 Re: [AVR][BASCOM] - własna biblioteka może być w Bascomie? |
|
|
|
dobra już mam! - wszystko działa :) dziękuję wszystkim za pomoc (no to teraz pisanie bibliotek dla Bascoma nie jest dla mnie takie straszne)
|
|
| Back to top |
|
 |