Bascom basic och Mega48

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
ncc1701d
Inlägg: 150
Blev medlem: 12 augusti 2005, 19:08:07
Kontakt:

Bascom basic och Mega48

Inlägg 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..
Användarvisningsbild
anlamotte
Inlägg: 859
Blev medlem: 5 augusti 2003, 15:54:34
Ort: Stockholm
Kontakt:

Inlägg 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
ncc1701d
Inlägg: 150
Blev medlem: 12 augusti 2005, 19:08:07
Kontakt:

självklart

Inlägg 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)
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1652
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg 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?
ncc1701d
Inlägg: 150
Blev medlem: 12 augusti 2005, 19:08:07
Kontakt:

funkar inte här

Inlägg 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.
Användarvisningsbild
anlamotte
Inlägg: 859
Blev medlem: 5 augusti 2003, 15:54:34
Ort: Stockholm
Kontakt:

Inlägg 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) ??
ncc1701d
Inlägg: 150
Blev medlem: 12 augusti 2005, 19:08:07
Kontakt:

jag har provat ja..

Inlägg 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.
Användarvisningsbild
anlamotte
Inlägg: 859
Blev medlem: 5 augusti 2003, 15:54:34
Ort: Stockholm
Kontakt:

Inlägg av anlamotte »

vad jag kan se skickar programet ut datan på serieporten.. eller har du lagt in nån kod som blinkar lysdioder?
ncc1701d
Inlägg: 150
Blev medlem: 12 augusti 2005, 19:08:07
Kontakt:

serieporten??

Inlägg 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.
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1652
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg 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.
ncc1701d
Inlägg: 150
Blev medlem: 12 augusti 2005, 19:08:07
Kontakt:

skumt

Inlägg 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?
Användarvisningsbild
anlamotte
Inlägg: 859
Blev medlem: 5 augusti 2003, 15:54:34
Ort: Stockholm
Kontakt:

Inlägg av anlamotte »

har jag missat nått?

vad är det för dioder du har kopplat in... och var i koden styrs den
blinkningen??
ncc1701d
Inlägg: 150
Blev medlem: 12 augusti 2005, 19:08:07
Kontakt:

Inlägg 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.
Användarvisningsbild
anlamotte
Inlägg: 859
Blev medlem: 5 augusti 2003, 15:54:34
Ort: Stockholm
Kontakt:

Inlägg av anlamotte »

känns som det måste vara något fel i reg filen för mega48...
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1652
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg 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.
Skriv svar