Mikrobasic, nybörjarfrågor...

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Lidning
Inlägg: 111
Blev medlem: 23 april 2005, 18:52:44
Ort: Falkenberg

Mikrobasic, nybörjarfrågor...

Inlägg av Lidning »

Har köpt mig easypic2 från mikroelektronika.
Har blinkat lite med dioder och vill nu lära mig att styra dom via
knapparna, har suttit halva dagen utan att få pic´n att reagera på knapptryckingar.
Någon som har ett enkelt exempel som funkar i mikrobasic?
vill alltså kunna läsa av någon av ingångarna...

Kanske verkar busenkelt, men jag får inte det att fungera...
:oops:

//Dan
Användarvisningsbild
$tiff
Inlägg: 4941
Blev medlem: 31 maj 2003, 19:47:52
Ort: Göteborg
Kontakt:

Inlägg av $tiff »

Har du konsulterat den stora manualen till att börja med?

Principen är att du sätter den pinne som knappen är inkopplad till som ingång, sedan läser du av pinnen i en programloop och hoppar till olika programsnuttar beroende på om pinnen är hög eller låg. När du kopplar inte en knapp måste detta kombineras med ett pullup/-down-motstånd för att definiera ett spänningstillstånd när knappen inte är nedtryckt.

Berätta/visa hur du kopplat och vilken kod du försökt använda så kan vi försöka rätta till det som är fel!

Vill du läsa på egen hand så verkar den här boken väldigt bra.
Lidning
Inlägg: 111
Blev medlem: 23 april 2005, 18:52:44
Ort: Falkenberg

Inlägg av Lidning »

Detta är en variant jag provat, men det blinkar hela tiden...
Uppkopplingen är ju redan klar, använder Easypic2, pull down motstånden aktiverade.


program Led_blinking

main:
TRISA = 255
TRISB = 0
clearbit (PORTA,1)
IF testbit (PORTA,1) =1 THen GOTO blink
goto main
end if
blink:

PORTB = %11111111 ' turn ON diodes on portb
delay_ms(1000) ' wait for 1 second
PORTB = %00000000 ' turn OFF diodes on portb
delay_ms(1000) ' wait for 1 second
goto main ' endless loop
end.
Robert Nielsen
Inlägg: 700
Blev medlem: 23 augusti 2003, 20:42:38

Inlägg av Robert Nielsen »

Så här hade jag nog gjort:

Kod: Markera allt


TRISA = 255 
TRISB = 0 
cmcon = 7     ' Stäng av komparator om du har en pic med inbyg komparator.

main: 
IF PortA.1 = 1 Then
Goto blink 
Else 
Goto main
end if 

blink: 
PORTB = %11111111
delay_ms(1000) ' wait for 1 second 
PORTB = %00000000
delay_ms(1000) ' wait for 1 second 
goto main
end.
Lidning
Inlägg: 111
Blev medlem: 23 april 2005, 18:52:44
Ort: Falkenberg

Inlägg av Lidning »

Provade detta, och det fungerade inte, alla dioder lyser på utgång B, utan att blinka. reagerar inte på knapptryckningar på ingång A. hmm. måste man ändra nåt på kortet, eller är det min 16F877A som gett sig? alla exemplen som följer med i Mikrobasic fungerar. Så detta borde ju fungera...

//Dan
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Har du ställt in vilken frekvens du kör PIC:en på?
Lidning
Inlägg: 111
Blev medlem: 23 april 2005, 18:52:44
Ort: Falkenberg

Inlägg av Lidning »

hmm.. :? när jag bränner programet,så väljer jag HS på Oscillatorn, antar att den snurrar på i 4 Mhz på extern kristall.

Eftersom alla färdiga exempel fungear som dom ska så borde det inte vara
problemet eller??

Eller är det något jag missat??

//Dan
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

delay-rutiner kräver att frekvensen är korrekt inställd för att fungera. Om frekvensen inte är korrekt inställd så kan det hända att delay-rutinerna avslutas så snabbt att man inte hinner se att lysdioderna blinkar. Jag är nästan säker på att du måste ange klockfrekvensen i siffror på något sätt.
Lidning
Inlägg: 111
Blev medlem: 23 april 2005, 18:52:44
Ort: Falkenberg

Inlägg av Lidning »

Ok, tror jag förstår vad du menar....

Tar jag bort input delen och kör "blink delen" för sig så fungerar det som det ska, det är bara det att jag inte kan få den att reagera på knapptryckningar...

//Dan
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Nu vet jag inget om mikrobasic, men däremot har jag för mig att PORTA.1 även är en analog ingång, och är konfigurerad så som standard. Om du inte ändrat det (eller om mikrobasic gör det automatiskt) så kommer du inte att kunna använda pinnen som vanlig ingång...
Lidning
Inlägg: 111
Blev medlem: 23 april 2005, 18:52:44
Ort: Falkenberg

Inlägg av Lidning »

hittade en snutt som fungerar som på/av, men jag fattar inte riktigt hur det
fungerar....

Får mixtra lite till å se vad som händer...

program Test

dim oldstate as byte

main:

TRISB = 255
TRISD = 0

while true
if Button(PORTB, 0, 1, 1) then
oldstate = 255
end if
if oldstate and Button(PORTB, 0, 1, 0) then
PORTD = not(PORTD)
oldstate = 0
end if
wend
goto main
End.

//Dan
Skriv svar