Mikrobasic

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
weekendowel
Inlägg: 11
Blev medlem: 30 september 2005, 13:45:04

Mikrobasic

Inlägg av weekendowel »

Jag har precis börjat att programmera, och min första pic är 12f629, jag har tänkt att använda mig av mikrobasic eftersom jag kan basic hyfsat. Har googlat efter mer exempel kod till just 12f629 men ej hittat något. Jag förstår inte riktigt hur jag gör för att till exempel göra tre av benen till utgångar och resten till ingångar och sedan hur jag sätter respektive läser av benen. Det följer med lite exempel kod i mikrobasic för att blinka med utgångarna men då tänder jag ju alla utgångar på en gång:

Kod: Markera allt

main:
  TRISIO = 0          ' configure pins of gpio as output
  do                  ' beginning of a do..until loop
      GPIO = $FF      ' turn ON diodes on gpio
      delay_ms(1000)  ' wait for 1 second
      GPIO = 0        ' turn OFF diodes on gpio
      delay_ms(1000)  ' wait for 1 second
  loop until 0 = 1         ' endless loop (as this condition is never satisfied)
end.
Hoppas att någon kan hjälpa mig, eller peka i rätt riktning.
Användarvisningsbild
Xyzzy
Inlägg: 1260
Blev medlem: 30 januari 2004, 22:31:07
Ort: Uppsala, Sweden

Inlägg av Xyzzy »

TRISIO sätter om de är ut- eller ingångar där varje bit motsvarar en pinne.
antingen skriver du de som decimalt tal (0~255) eller hexadecimalt ($00 ~ $FF) (finns även fler varianter)
För att få de som utgångar ska biten vara 'låg' (en nolla), om den ska vara ingång ska den vara 'hög' (en etta).

För att styra portens utgångar använder du GPIO, precis som på samma sätt som ovan, 'hög' bit motsvarar "på" och vice versa.

Edit:
För att göra de tre LSB till utgångar och de övriga 5 till ingångar skriver du antingen:
TRISIO 248
eller
TRISIO $F8
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Börjar med det man aldrig vill höra, men inte klarar sig utan: Kolla databladet för PIC-kretsen. Speciellt om GPIO.

Nu har jag en annan processor som inte ser riktigt likadan ut, men grunderna är de samma: Tänk att värdena du matar in hexadecimalt (med $) i GPIO motsvarar alla in/utgångarna på den porten.
$FF motsvarar 11111111 binärt (ettor på alla, dvs alla tända.) $AA motsvarar 10101010, dvs varannan tänd. Det går också att ange talen binärt. I MikroBasic gör man det med ett procenttecken, t.ex %10101010.
MikroBasic har en inbyggd omvandlare för olika talsystem.... - Titta längst ner i programmet.
Jag vet inte hur mycket du kan, men laborera så förstår du hur det fungerar.

Men innan du kan börja mata ut massa saker så måste du vara säker på att de benen är utgångar. Det här med hur man sätter vissa värden fungerar på samma sätt här. Men då är kommandot TRISIO (enligt din kod)... läs om TRISIO i databladet. Noga. :)

Sedan finns det ett sätt att sätta/rensa enstaka bitar. SetBit och ClearBit. Ladda in några av de exempel som följer med MikroBasic. Även om det inte skulle finnas exempel för din PIC-krets så lär du få lite idéer om hur MikroBasic's CPU-oberoende kommandon ser ut. Sedan kan man ju alltid söka i MikroBasic's hjälp. (F1).

Det här var bara några jättegrundläggande saker. Det mesta lär du dig av att studera enkla exempel och modifiera. Dessutom: Databladet är en ovärdelig vän, även om man inte förstår så mycket i början.
weekendowel
Inlägg: 11
Blev medlem: 30 september 2005, 13:45:04

Inlägg av weekendowel »

Tack för hjälpen jag fattar precis nu, tror jag. Pic processorn som jag använder har 8 ben varav 6 är I/O. så om jag ska göra tre av benen till ingångar och tre till utgångar så blir det alltså TRISIO=$38 vilket blir 111000 binärt. och för att sätta utgångarna höga så sätter jag GPIO=$7 vilket motsvarar 000111. och om jag vill läsa av om en ingång är hög så kan jag väl bara göra så här: i=GPIO för att få hex värdet på ingångarna eller...
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Tyvärr har jag inte databladet för den processorn, men jag tycker det ser rätt ut. Det lär du ju märka :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> "TRISIO=$38 vilket blir 111000 binärt. "

Skriv "TRISIO=%111000" istället så slipper du "översätta" (som Jimmy också noterade...)

> Pic processorn som jag använder har 8 ben varav 6 är I/O.

3, 4, 5 eller 6 I/O-pinnar beroende på hur den är konfigurerad.

För att läsa av en enstaka pinne används t.ex BTFSC/BTFSS, jag vet vad detta motsvaras av i din Basic variant, men det bör framgå av manualen.

En annan sak är att det verkar lite onödigt att köra Basic mot en så liten processor. Du har ju ändå bara 1K programminne att "fylla". Att man "kan basic hyfsat" är kanske inte helt rellevant i detta samanhang. Vill du bara få något att blinka, eller vill du även lära dig processorerna lite mer i detalj ?

Slutligen, notera att 12F629/675 är lite "stökiga" och ställer specella krav på programmeringsutrustningen ("Vpp-before-Vdd") *om* man använder internal-MCLR. Gör man inte det är det inga problem. Vad använder du för programmeringen av processorn ?
weekendowel
Inlägg: 11
Blev medlem: 30 september 2005, 13:45:04

Inlägg av weekendowel »

sodjan skrev:> "TRISIO=$38 vilket blir 111000 binärt. "

Skriv "TRISIO=%111000" istället så slipper du "översätta" (som Jimmy också noterade...)

> Pic processorn som jag använder har 8 ben varav 6 är I/O.

3, 4, 5 eller 6 I/O-pinnar beroende på hur den är konfigurerad.

För att läsa av en enstaka pinne används t.ex BTFSC/BTFSS, jag vet vad detta motsvaras av i din Basic variant, men det bör framgå av manualen.

En annan sak är att det verkar lite onödigt att köra Basic mot en så liten processor. Du har ju ändå bara 1K programminne att "fylla". Att man "kan basic hyfsat" är kanske inte helt rellevant i detta samanhang. Vill du bara få något att blinka, eller vill du även lära dig processorerna lite mer i detalj ?

Slutligen, notera att 12F629/675 är lite "stökiga" och ställer specella krav på programmeringsutrustningen ("Vpp-before-Vdd") *om* man använder internal-MCLR. Gör man inte det är det inga problem. Vad använder du för programmeringen av processorn ?

Ska kolla på BTFSC/BTFSS i mikrobasic. Det kanske är onödigt att köra basic mot en sån liten processor, men det jag ska göra med processorn är inte direkt avancerat, ska mest använda den för olika timer funktioner. Anledningen till att jag använder just 12F629 är att det medföljde en pcb i ett nummer av tidningen Datormagazin för ett tag sedan där man kunde bygga en mätare för att mäta processorns belastning i en PC, man fick även en programmerare på köpet. Jag använder programmet ICPROG v 1.0.5 för att skicka över koden som jag sparar i hex format från mikrobasic.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Ska kolla på BTFSC/BTFSS i mikrobasic.

Kanske SetBit/ClearBit ? Jag tror att jag såg något sådant i någon annan tråd.
Och det är absolut inget fel på 12F629'an, det var inte det jag menade... :-)
MikroBasic är säkert OK, ha bara databladet till 12F629 tillgängligt också...
Användarvisningsbild
JimmyAndersson
Inlägg: 26578
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Inlägg av JimmyAndersson »

Varken MikroBasic's USART- eller PWM-moduler har fungerat på min 18LF1320, så det har blivit mycket läsande i databladet.
Men som ett lugnande besked så kan jag säga att man lär sig väldigt fort. För en månad sedan hade jag inte ens hört talas om PIC-processorer och nu bygger jag en burk som kommer att rita bilder med hjälp av en PIC-styrd laser. :D
Mycket tack vare forumet och dess "inneboende" förstås! Annars hade det gått åt många skiftregister, räknare och "grindar" för att göra liknande saker.......
Skriv svar