www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Migracija Bascom8051 -> BascomAVR - težave začetnika

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Apr 19, 2007 9:49 am    Naslov sporočila:  Migracija Bascom8051 -> BascomAVR - težave začetnika Odgovori s citatom

Migracija Bascom8051 -> BascomAVR - težave začetnika

Bascom8051 uporabljam že kar nekaj časa z zadovoljstvom naredim praktično vse, kar potrebujem. Uporabniki AVR mi svetujejo migracijo. Tako sem instaliral BASCOM AVR DEMO in na hitro vidim, da je tam res veliko več. In poizkušam najprej prenesti svoje obstoječe znanje iz 8051 na AVR. Seveda naletim na težave, to sem pričakoval. Pričakujem pomoč tudi od Vas. Pričakujem preveč? Upam, da ne.

STACK: (Sklad)

Pri 8051 je mikro uporabil ves neuporabljeni RAM za stack, kar se mi zdi logično in sem stack tudi pridno in uspešno uporabljal sam. AVR pa ima loči dve vrsti sklada, hardwarestack in software stack. Iz imena si ne znam razlagati, kako mikro uporablja prvega in kako drugega. Poleg tega mi ni logično, da se velikost stacka omejuje z ukazi:

Koda:
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack


V knjigi, ki sem jo bral, (John Morton: AVR An introductory course - knjigo odsvetujem), pa bi moral razumeti, za kaj gre, nisem zakapiral, kako se uporablja eno in kako drugo vrsto Stacka. Mi lahko, prosim, nekdo, preprosto razloži to?

UPORABA STACKA Z PUSH IN POP UKAZI:

Pri programiranju sem često uporabljal iste spremenljivke v glavnem programu in v podprogramih (8051 ima malo RAMa), kot razložim na primeru:


Koda:
' Splošno uporabljane spremenljivke:
Dim I As Byte
Dim J As Byte
Dim K As Byte
Dim L As Byte
Dim M As Word


'  V glavnem programu uporabljam spremenljivke:
I = 11
J = 12
K = 13
L = 14
Print I ; J ; K ; L
' Potem kličem podprogram:
Gosub Podprogram1
' Ko se vrnem, morajo imeti splošno uporabljane spremenljivke iste vrednosti kot prej
Print I ; J ; K ; L
End

Podprogram1:
' Pridem v podprogram in želim uporabiti iste spremenljivke, seveda le začasno
' zato spravim stare vrednosti spremenljivk na stack:
push {i}
push {j}
push {k}
push {l}
' uporabim spremenljivke po svoje
I = 211
J = 212
K = 213
L = 214
Print I ; J ; K ; L
'  in predno se vrnmem v glavni program vrnem vrednosti spremenljivk nazaj:
pop {l}
pop {k}
pop {j}
pop {i}
Return


Pri 8051 je to delovalo, pri AVR pa dobim sledeče napake pri prevajanju:

Koda:
Error : 200 Line : 23 .def Not Found [$0060 [adddr]] , In File : D : \ Iko \ Elektronika \ Basavr \ Sola1.bas
Error : 200 Line : 24 .def Not Found [$0061 [adddr]] , In File : D : \ Iko \ Elektronika \ Basavr \ Sola1.bas
Error : 200 Line : 25 .def Not Found [$0062 [adddr]] , In File : D : \ Iko \ Elektronika \ Basavr \ Sola1.bas
Error : 200 Line : 26 .def Not Found [$0063 [adddr]] , In File : D : \ Iko \ Elektronika \ Basavr \ Sola1.bas
Error : 200 Line : 34 .def Not Found [$0063 [adddr]] , In File : D : \ Iko \ Elektronika \ Basavr \ Sola1.bas
Error : 200 Line : 35 .def Not Found [$0062 [adddr]] , In File : D : \ Iko \ Elektronika \ Basavr \ Sola1.bas
Error : 200 Line : 36 .def Not Found [$0061 [adddr]] , In File : D : \ Iko \ Elektronika \ Basavr \ Sola1.bas
Error : 200 Line : 37 .def Not Found [$0060 [adddr]] , In File : D : \ Iko \ Elektronika \ Basavr \ Sola1.bas


Prepričan sem, da se tak način dela da uporabiti tudi v AVR-u, le nekaj je treba vedeti, kar jaz ne vem. Mi lahko kdo pove?

Pozdrav in hvala za pomoč
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Apr 19, 2007 6:58 pm    Naslov sporočila:  Nič odgovorov? Odgovori s citatom

Nič odgovorov?
No kar se stacka tiče sem dobil informacijo na
http://www.mcselec.com/index2.php?option=com_forum&Itemid=59&page=viewtopic&t=3220

Še vedno pa mi tudi tam ne vedo pomagati z ukazi push in pop.

Ve kdo, kako se tej stvari streže v BascomAVR-u? Ali v assemblerju za AVR?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
smatjaz
Član
Član



Pridružen-a: Pon 10 Nov 2003 16:33
Prispevkov: 846
Aktiv.: 3.57

PrispevekObjavljeno: Čet Apr 19, 2007 9:12 pm    Naslov sporočila:   Odgovori s citatom

Migracija z vidika Bascoma je sorazmerno preprosta, ker je to produkt istega proizvajalca. Glede na to da dobro obvladaš 8051 je to preprosto. Nekaj razlik je, ki jih lahko prebereš v AVR Helpu.

Jaz sem imel največ težav z nastavitvijo izhodov, vhodov (DDRX) in ukazom mislim da Rotate (8051) in Shift (AVR). Razlika je tudi v delu s serijskim vmesnikom, kjer (8051) scon0 bita ne moreš kontrolirat. Je pa res, da so tu drugi registri z "več možnostmi".Assemblerja v veliki meri (AVR) nisem uporabljal, čeprav sem z 8051 kar nekaj delal. Priznam, da pa svojih knjižnic tudi nisem izdeloval.

Vse aplikacije iz sveta 8051 en boš mogel kar direktno konvertirati in bo potebno popraviti nekaj kozmetičnih malenkosti.

Razlike:
Changes compared to BASCOM-8051

The design goal was to make BASCOM-AVR compatible with BASCOM-8051.
For the AVR compiler some statements had to be removed.
New statements were also added. And some statements were changed.
They need specific attention, but the changes to the syntax will be made available to BASCOM-8051 too in the future.
Statements that were removed
STATEMENT
DESCRIPTION
$LARGE
Not needed anymore.

$ROMSTART
Code always starts at address 0 for the AVR. Added again in 1.11.6.2

$LCDHEX
Use LCD Hex(var) instead.

$NOINIT
Not needed anymore. Added in 1.11.6.2

$NOSP
Not needed anymore

$NOBREAK
Can't be used anymore because there is no object code that can be used for it.

$OBJ
Removed.

BREAK
Can't be used anymore because there is no object code that can be used for it.

PRIORITY
AVR does no allow setting priority of interrupts

PRINTHEX
You can use Print Hex(var) now

LCDHEX
You can use Lcd Hex(var) now

Statements that were added

STATEMENT
DESCRIPTION

FUNCTION
You can define your own user FUNCTIONS.

LOCAL
You can have LOCAL variables in SUB routines or FUNCTIONS.

^
New math statement. Var = 2 ^ 3 will return 2*2*2

SHIFT
Because ROTATE was changed, I added the SHIFT statement. SHIFT works just like ROTATE, but when shifted left, the LS BIT is cleared and the carry doesn't go to the LS BIT.

LTRIM
LTRIM, trims the leftmost spaces of a string.

RTRIM
RTRIM, trims the rightmost spaces of a string.

TRIM
TRIM, trims both the leftmost and rightmost spaces of a string.

Statements that behave differently

STATEMENT
DESCRIPTION

ROTATE
Rotate now behaves like the ASM rotate, this means that the carry will go to the most significant bit of a variable or the least significant bit of a variable.

CONST
String were added to the CONST statement. I also changed it to be compatible with QB.

DECLARE
BYVAL has been added since real subprograms are now supported.

DIM
You can now specify the location in memory of the variable.

Dim v as byte AT 100, will use memory location 100.

LP M.

_________________
Električni aparati delujejo na dim ... ko dim iz njih uide ... ne delujejo več!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Apr 19, 2007 9:30 pm    Naslov sporočila:  Zakaj mi dela cca 10krat prepočasi? Odgovori s citatom

Hvala Matjaž,

Ker sem tehniko reševanja variabel uporabljal push/pop ukaze, le teh za bajte rama AVR očitno nima več. Zato bom moral vse podprograme preprogramirati, definirati nove spremenljivke, ker obstoječe ne smem definirati local z istim imenom, to pa pomeni spremembe skoraj v vsakem bascom ukazu v pdoprogramu in posledično vgrajevanje in odstranjevanje na novo vgrajenih napak. Nisem prepričan, ali se bom le tega lotil.

To seveda niso kozmetične malenkosti.

Pa tudi sicer se mi dogajajo stvari, ki si jih ne znam razložiti. Na primer:
Prižiganje in ugašanje ledice na portc.0:



Koda:
$regfile = "m16def.dat"                                     ' specify the used micro
'$crystal = 11059200                                         ' used crystal frequency
$crystal = 8000000                                          ' used crystal frequency
$baud = 19200                                               ' use baud rate
$hwstack = 32                                               ' default use 32 for the hardware stack
$swstack = 10                                               ' default use 10 for the SW stack
$framesize = 40                                             ' default use 40 for the frame space

Ddrc = &B10111111
Portc = &B01000000
Wait 1


Do
   Portc = &B01000000
   Wait 1
   Portc = &B01000001
   Wait 1
Loop


Ledica se mi prižiga in ugaša cca 10 krat počasneje kot na eno sekundo, ne glede na to, kakšnen $crystal ukaz dam.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Član
Član



Pridružen-a: Ned 19 Sep 2004 22:04
Prispevkov: 16777193
Aktiv.: 70819.70

PrispevekObjavljeno: Čet Apr 19, 2007 9:59 pm    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Apr 19, 2007 10:22 pm    Naslov sporočila:  ne pozabil Odgovori s citatom

ne pozabil nisem, a nimam pojma, kako to narediti.
enostavno kopiram sample pa kaj spremenim, kar razumem, kar ne razumem pustim na miru.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
smatjaz
Član
Član



Pridružen-a: Pon 10 Nov 2003 16:33
Prispevkov: 846
Aktiv.: 3.57

PrispevekObjavljeno: Čet Apr 19, 2007 10:31 pm    Naslov sporočila:   Odgovori s citatom

Problem imaš, ker imaš "default" nastavljeno na AVR-ju na interni kristal 1000000Hz, priključil pa si še zunajega. To zadevo zelooo upočasni. Torej F4 Lock and Fuse bits in nastavi željeno.

V kolikor to ne boš naredil je najenostavneje v tem primeru, če odlotaš qvarz, in nastaviš:

$crystal = 1000000

Poskusi, to bi moralo delati.

Lp M.

_________________
Električni aparati delujejo na dim ... ko dim iz njih uide ... ne delujejo več!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Apr 19, 2007 10:45 pm    Naslov sporočila:  ja, ce dam Odgovori s citatom

Ja, ce dam $crystal = 1000000 dela približno v redu.

Če hočem postaviti kake fuse bite na isp programatorju dobim sledečo sliko. Kaj naj odkljukam?



snap.jpg
 Opis:
 Velikost datoteke:  41.16 KB
 Pogledana:  9 krat

snap.jpg


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Član
Član



Pridružen-a: Ned 19 Sep 2004 22:04
Prispevkov: 16777193
Aktiv.: 70819.70

PrispevekObjavljeno: Čet Apr 19, 2007 10:47 pm    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
smatjaz
Član
Član



Pridružen-a: Pon 10 Nov 2003 16:33
Prispevkov: 846
Aktiv.: 3.57

PrispevekObjavljeno: Čet Apr 19, 2007 10:54 pm    Naslov sporočila:   Odgovori s citatom

Jaz uporabljam simple electronics AVR programmer in to nastavljam tukaj.

Glej prilogo.

P.S. Ker je nova verzija AVR Bascom moraš pritisniti PRG in ne tipko, kisem jo označil (Write FS)



Vilko.JPG
 Opis:
 Velikost datoteke:  74.49 KB
 Pogledana:  14 krat

Vilko.JPG



_________________
Električni aparati delujejo na dim ... ko dim iz njih uide ... ne delujejo več!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3359
Aktiv.: 14.18
Kraj: Dragomer

PrispevekObjavljeno: Čet Apr 19, 2007 11:21 pm    Naslov sporočila:  hvala Odgovori s citatom

hvala
s pomočjo Jureta (preko skypa) sva uspela postaviti cksel bite tako, da razume, da ima eksterni oscilator.
Sedaj utripa v redu...
Koliko se bo še treba učiti. Včasih imam občutek, da so si kaj izmislili iz same žlehtnobe, da se uporabniki bolj spotikamo, ko zadevo skušamo naštudirati..
Lahko noč in še enkrat hvala
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jurem
Član
Član



Pridružen-a: Tor 02 Dec 2003 15:53
Prispevkov: 408
Aktiv.: 1.72
Kraj: Ljubljana

PrispevekObjavljeno: Čet Apr 19, 2007 11:49 pm    Naslov sporočila:  Re: hvala Odgovori s citatom

vilko je napisal/a:
hvala
s pomočjo Jureta (preko skypa) sva uspela postaviti cksel bite tako, da razume, da ima eksterni oscilator.


Pravzaprav sva nastavila na zunanji kvarc, ne oscilator.

vilko je napisal/a:

Včasih imam občutek, da so si kaj izmislili iz same žlehtnobe, da se uporabniki bolj spotikamo, ko zadevo skušamo naštudirati..
Lahko noč in še enkrat hvala


Ma ja, malo je tudi splet okoliščin. Namreč nabasal si ravno na SPI programator, ki nima razloženih Fuse bitov, če bi uporabljal Sample ali recimo Proggy programator, bi ti bilo lažje nastavit fuse bite...


Lp
Jure
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group