FAQ | Points | Add... | Recent posts | Search | Register | Log in


[AVR][BASCOM] - własna biblioteka może być w Bascomie?


Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> [AVR][BASCOM] - własna biblioteka może być w Bascomie?
Author
Message
mirekk36
Poziom 25
Poziom 25


Joined: 17 Jun 2006
Posts: 8674
Location: Szczecin

Post#1 Post from the author of the topic 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:

Code:
I2c_tx_buf(2) = 1


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

Google Adsense


Post# Post from the author of the topic 13 Aug 2008 12:42   





Back to top
   
mirekk36
Poziom 25
Poziom 25


Joined: 17 Jun 2006
Posts: 8674
Location: Szczecin

Post#2 Post from the author of the topic 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
Poziom 23


Joined: 22 Apr 2002
Posts: 2624
Location: 50°19'N 18°55'E

Post#3 13 Aug 2008 21:27helpful post - solution   

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:
Code:
*BASIC: waitms 1


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

Google Adsense


Post# 13 Aug 2008 21:27helpful post - solution   





Back to top
   
mirekk36
Poziom 25
Poziom 25


Joined: 17 Jun 2006
Posts: 8674
Location: Szczecin

Post#4 Post from the author of the topic 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
Poziom 25


Joined: 12 Dec 2005
Posts: 7263
Location: Zawiercie

Post#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

Google Adsense


Post# 13 Aug 2008 23:52   





Back to top
   
mirekk36
Poziom 25
Poziom 25


Joined: 17 Jun 2006
Posts: 8674
Location: Szczecin

Post#6 Post from the author of the topic 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
Poziom 25


Joined: 12 Dec 2005
Posts: 7263
Location: Zawiercie

Post#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
Poziom 25


Joined: 17 Jun 2006
Posts: 8674
Location: Szczecin

Post#8 Post from the author of the topic 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
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> AVR Microcontrollers -> [AVR][BASCOM] - własna biblioteka może być w Bascomie?
Page 1 of 1
Similar topics
Protel - footprint - własna biblioteka. (2)
Własna biblioteka w C++ Builder (14)
Przewód do Bascom AVR. Czy to ma być RS232? (5)
[AVR/BASCOM]Własna płytka testowa - prośba o spr PCB (58)
Poszukiwana biblioteka BASCOM-AVR ,GLCDEADOGEM128X6.LIB (1)
[BASCOM] [avr] strony z kodem źródłowym w Bascomie (3)
biblioteka do bascom-avr ds1307clock.lib (2)
[AVR][Bascom] własna biblioteka a parametry (2)
Własna biblioteka USB[HID] (3)
LCD, Atmega8 i Bascom. Zakłócenia. Co może być nie tak? (3)

Page generation time: 0.073 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed