Sida 1 av 2

Bascom basic och Mega48

Postat: 22 september 2005, 02:14:29
av ncc1701d
Skulle börjaleka med en av ADC'erna i meg48'an o håller på att försöka lära mig bascom basicen...

tända o fadea massa lysdioder var ju inga problem..

nu tänkte jag ha en potentiometer för att reglera hastigheten på dom.

men så innan jag börjar löda så tänkte jag göra ett testprogram för att köra i simulatorn i bascom.

den kod som finns med som demo "kör" ju fint i simulatorn med "m163def.dat" definitionen.. men om jag ändrar till: "m48def.dat" för mega48 så fungerar inte koden längre utan den stannar på "getadc (channel)" i följande kod:

$regfile = "m48def.dat"

Config Adc = Single , Prescaler = Auto
Start Adc

Dim W As Word , Channel As Byte

Channel = 0
Do
W = Getadc(channel) <--- här stannar koden
Print "Channel " ; Channel ; " value " ; W
Incr Channel
If Channel > 7 Then Channel = 0
Loop



En simulering utan hårdvara SKA ju fungera..

Postat: 22 september 2005, 08:45:02
av anlamotte
kanske ska lägga till en

$crystal = 8000000

eller vad du nu använder för hastighet..

hmm.. ska man inte ange vilken referens som används?

tex:

Kod: Markera allt

Config Adc = Single , Prescaler = Auto , Reference = Internal 
dessutom verkar det som man bara kommer åt ADC 0-5 på DIP versionen
av mega48

självklart

Postat: 22 september 2005, 11:21:12
av ncc1701d
Ja ok jag skulle väl skrivit det också.. Jo jag använder $crystal = 8000000

Men crystal kommandot verkar inte spela så stor roll.. det ställer bara in så bascom vet timing på looopar å så.. den påverkar inte alls frekvensen på chipet.. som är 1mhz o-fusead.

Referens fungarar (finns) bara i vissa AVR'er..
om det finns i 48'an vet jag inte än, men det spelar ingen roll för koden funkar inte ändå.

och att bara 0-5 kan kommas åt spelar heller igen roll eftersom koden aldrig hinner komma så långt så den ökar upp channel.

den stannar alltså DIREKT på w= getaadc (x)

Postat: 22 september 2005, 21:19:31
av RDX*
Om man ändrar dat-filen till "m8def.dat" så fungerar det i simulatorn. Antagligen finns det någon bugg i dat-filer eller i simulatorn.

Har du testat om den fungerar i verkligheten?

funkar inte här

Postat: 22 september 2005, 23:41:41
av ncc1701d
eftersom jag kör mega48'an's pwm kanaler så funkar det inte.
För med "m8def.dat" får jag fel på de rader som har med pwm'en att göra.


fungerar i verkligheten? chipet menar du? chipet funkar ja (den blinkar leds just nu) . men eftersom jag inte kan få igång ADC'n (ens i simulering) så kan jag inte testa mitt bygge heller.

Postat: 23 september 2005, 00:22:54
av anlamotte
äsch.. jag har aldrig gillat simulatorn i bascom.

enklast är väl att hoppa över den helt... har du provat om ditt program funkar i verkligheten.. (i 48'n) ??

jag har provat ja..

Postat: 23 september 2005, 00:57:51
av ncc1701d
helt dött.. om adc'n funka så borde ju dioderna blinka som fan eller inte alls (0,255 eller vilket värde som helst) när där inte är nån pot inkopplad.

Postat: 23 september 2005, 08:20:41
av anlamotte
vad jag kan se skickar programet ut datan på serieporten.. eller har du lagt in nån kod som blinkar lysdioder?

serieporten??

Postat: 23 september 2005, 13:12:41
av ncc1701d
öhh?

koden däruppe läser bara in värdena från adc'n till ett print kommando.
print kommandot syns ju barai emulatorn.. o kör jag med den def filen i exemplet fungerar det ju.. det är så fort jag ärndrar till mega48'ans def fil som det slutar fungera.

hårdvaran är ju inte inkopplad alls så jag kan ju inte egentligen mäta några värden ;) men om koden körs i emulatorn så ska den ju loopa o visa "0" i värdet precis som exemplet gör.

kan inte någon ladda in någon av adc demona o kolla? kör det först med default def fil.. prova sen o ändra till m48def.dat istället.

Postat: 23 september 2005, 16:08:07
av RDX*
Jag har testat din kod och får samma fel. Jag har postat ett inlägg på bascoms forum om buggen och dom skulle titta på det.

Angående printkommandot så fungerar den i verkligheten också :wink: , om man kopplar RXD/TXD till serieporten (via buffert) så kan man få texten i realtid. Mycket användbart för debuging.

Man kan även reglera ADC:n i simulatorn. Där finns en "rullista" och en väljare för adc-kanal.

skumt

Postat: 23 september 2005, 17:44:44
av ncc1701d
haah hmm så jag har hittat en bugg som ingen annan gjort än? låter ju otroligt. jag som bara lekt med avr o bascom i en knapp vecka.


prövade kompilera o flasha i chipet med adc koden.. stendött.. jag hoppar från mainloopen till de raderna med adc koden.. inte ett skit händer.. OM programmet funka så ska ju programmet bara gå förbi o fortsätta blinka dioder.. men inget händer. inte ett blink ens.


så jag tänkte kanske en signal MÅSTE finna på adc porten.. så jag
kopplat in 1 pot nu.. på pin 21,22,23 .. om det nu är rätt för adc 0 (aref, gnd, adc0).

fortfarande inget liv..

kan det vara så att bascom inte funkar alls med adc'n?

Postat: 23 september 2005, 17:48:35
av anlamotte
har jag missat nått?

vad är det för dioder du har kopplat in... och var i koden styrs den
blinkningen??

Postat: 23 september 2005, 18:20:57
av ncc1701d
jag har en basic-kod som bara fadear upp o ner lysdioder..

i den koden vill jag ha en avläsning av ADC'n där värdet anger hur lång en
fördröjning ska vara.

typ förenklat:

do
fade'a upp o ner lysdioder
läs av adc'n (värdet ska användas i fördröjningen)
gosub fördröjning
loop

fördröjning:
waitms (adc värdet)
(ELLER en vanlig for,next loop istället för waitms)
return

tyvärr funkar ju inte "waitus" med variabler :(

men bry er inte om vad jag gör i programmet, ADC koden funkar ju inte ens i bascom utan hårdvara.

Postat: 23 september 2005, 18:26:17
av anlamotte
känns som det måste vara något fel i reg filen för mega48...

Postat: 23 september 2005, 18:33:05
av RDX*
Jo, jag har använt adc:n ofta och den har alltid fungerat felfritt. Men jag har bara använt adc:n med 2313 och mega8. Så anlamottes slutsats verkar vara rimlig att felet är kopplat till mega48:an.