Great Cow BASIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Tripp
Inlägg: 397
Blev medlem: 29 januari 2004, 08:14:39
Ort: Tullinge
Kontakt:

Inlägg av Tripp »

Jag kan byta mellan dessa processorer utan att skriva om koden... :D
Om jag vill ha mer eller mindre funktioner.

12-bit core OTP (One Time Programmable)
12C508, 12C509, 12C508A, 12C509A, 12CE518, 12CE519, 16C54, 16C54A, 16C54B, 16C55, 16C55A, 16C56, 16C56A,16CR56, 16C57, 16C57C, 16CR57A, 16CR57B, 16C58,16C58A, 16CR58A, 16CR58B, 16CR58C, RF509AF, RF509AG

12-bit core FLASH (Re-Writable)
10F200, 10F202, 10F204, 10F206, 12F508, 12F509, 16F54, 16F57

14-bit core OTP (One Time Programmable)
12C671, 12C672, 12CE673, 12CE674, 16C505, 16C554, 16C554A, 16C558, 16C558A, 16C61, 16C62, 16C620, 16C620A, 16C621, 16C621A, 16C622, 16C622A, 16C62A
16C62B, 16C63, 16C63A, 16C64, 16C641, 16C642, 16C64A, 16C65, 16C65A, 16C65B, 16C66, 16C661, 16C662, 16C67, 16C67, 16C71, 16C710, 16C711, 16C712
16C715, 16C716, 16C71A, 16C72, 16C72A, 16C73, 16C73A, 16C73B, 16C73C, 16C74, 16C745, 16C74A, 16C7616C765, 16C77, 16C770, 16C771, 16C773, 16C774
16CE625, 16CR56, 16CR57A, 16CR57B, 16CR58A, 16CR58B, 16CR58C, 16CR620A

14-bit core FLASH (Re-Writable)
12F629, 12F635, 12F675, 12RF675, 12F683, 16C84, 16CR84, 16F627, 16F627A, 16F628, 16F628A, 16F630, 16F648A, 16F676, 16F684, 16F685, 16F688
16F688, 16F689, 16F690, 16F72, 16F73, 16F737, 16F74, 16F747, 16F76, 16F767, 16F77, 16F777, 16F785, 16F818, 16F819, 16F83, 16F84, 16F84A
16F87, 16F870, 16F871, 16F872, 16F873, 16F873A, 16F874, 16F874A, 16F876, 16F876A, 16F877, 16F877A, 16F88, 16F913, 16F914, 16F916, 16F917

16-bit core OTP (One Time Programmable)
18C242, 18C252, 18C442, 18C452, 18C658, 18C858

16-bit FLASH (Re-Writable)
18F1220, 18F1320, 18F2220, 18F2320, 18F2331, 18F2410, 18F242, 18F2431, 18F2439, 18F248, 18F2455, 18F2510, 18F2515, 18F252, 18F2520, 18F2525, 18F2539
18F258, 18F2550, 18F2585, 18F2610, 18F2620, 18F2680, 18F4220, 18F4320, 18F4331, 18F4410, 18F442, 18F4431, 18F4439, 18F448, 18F4439, 18F4455, 18F4510, 18F4515, 18F452, 18F4520, 18F4525, 18F4539, 18F4550, 18F458, 18F4585, 18F4610, 18F4620, 18F4680, 18F6585, 18F6620, 18F6680, 18F6720, 18F8585, 18F8620, 18F8680, 18F8720
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47013
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Inlägg av TomasL »

Vad händer om du behöver en PIC32??
Användarvisningsbild
Andy
Inlägg: 5893
Blev medlem: 26 september 2004, 18:24:52
Ort: Södern

Inlägg av Andy »

Då är vi tillbaks på portningsmöjligheten igen, tydligen är det den enda väsentliga skillnaden?
Åtminstone när det gäller PIC så finns dom i regel kvar mycket länge, kanske t o m för länge ibland. Med lite framförhållning behöver man inte byta processor mitt i ett projekt om man bara inte ”snålar” från början. Det går dessutom oftast att med mindre ändringar i Basic koden att flytta till annan PIC.

H.O> Jag skulle tro att utvecklings tiden för ditt servo system är betydligt kortare än om der varit gjort i asm.

Observera att jag aldrig har sagt att vare sig asm eller C är kass! Jag tycker bara att Basic är lättare att lära sig och att man faktiskt KAN lösa samma uppgifter i Basic. That’s it!
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Eller en Freescale eller en Renesas eller en Rabbit eller en ARM eller...

Visst, att ha program som fungerar på PIC är bra men en del amatörer (i ordets egentliga betydelse: "dom som gör för att ha roligt", alltså mycket positivt) tror att de bara kommer att hålla sig till t.ex. PIC eller AVR eller...whatever.

På ett tidpunkt kommer det en situation där de får chansen till ett billigt kit eller demo-grej eller något firma hör av sig och frågar om man kan göra en grej (jo, det händer faktisk, det var så jag fick mina senaste anställningar) och då kan man antingen behöva eller ha krav på en annan processortyp fast det kan mycket väl gå med den "vanliga".

Måste man byta har man ett styvt jobb framför sig om man har kört i BASIC, jag har däremot haft en del jobb med att konvertera ett C-program från en Fujitsu FFMC-16LX processor till Renesas M16C, jobbet bestod i att dela upp så att hårdvara-initiering och ISR till varje processortyp placeras i var sin fil och då Fujitsu's kompiler har ett direktiv om att den är aktiv (__COMPILER_FCC907__) kan jag lägga in ett direktiv som "automatisk" väljer rätt hårdvaru-fil:

Kod: Markera allt

#ifdef __COMPILER_FCC907__
  #include "C:\SofTune\Works\JanfireNH Fujitsu setup.h" /*  */
#else /* __COMPILER_FCC907__ */
  #include "JanfireNH Renesas setup.h" /*  */
#endif /* __COMPILER_FCC907__ */
När jag sedan ställer processorhastighet, UART-initiering, AD-initiering osv. är det bara att kalla SAMMA rutiner (de heter lika i de 2 hårdvara-filer).

Lite hårdvara skillnader finns ju, AD-omvandlaren t.ex. på Fujitsun ger den en interrupt för varje omvandling medan den omvandlar på alla kanaler först i Renesas och sedan ger en interrupt, detta har jag löst vid att låta ISR-rutinen till Fujitsun spara de omvandlade värden i lite RAM och när en "full" omvandling av alla kanaler är klar kallas den rutin som styr och ställer baserat på dessa värden, den rutin ingår INTE i hårdvara-filerna, den är processor-oberoende.

Så som det är nu har vi tillverkat samma styrkort i 2 versioner: en med Fujitsu-processor och en med Renesas-processor, jag uppdaterar programmet i endera IDE och kompiler i varje kompiler varefter BÅDA kort har identisk funktion.

Renesas-kortet är inte i full produktion än pga. en del ändringar i produkten efter krav från en kund som vill sälja till USA och jag har inte hunnit att tillverka ett flashprogram som kan flasha "valfri" processor, jag HAR dock sytt ihop det program som kombinerar de resulterande HEX-filer till en gemensam som flash-programmet sedan kan plocka ut rätt typ ur, på det vis är det bara att koppla till laptop'en, starta flash-programmet och flasha helt oberoende på vilken processor som sitter i.
Nerre
Inlägg: 27257
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Inlägg av Nerre »

Nu är ju det här med include-filer inget som egentligen hör till C i sig utan det är ju mer preprocessorn som sköter den biten.

Och det finns väl liknande funktionalitet i moderna kompilerade BASIC?

Redan på ABC80 delade jag programmen över flera filer. Det behövde man göra när koden blev så stor att den inte fick plats i minnet.

Det finns alltså inget generellt hinder för att i BASIC lägga hårdvaruspecifika grejer i externa filer för att enkelt kunna byta mellan olika processorer.
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jo, det finns det faktisk: kompilern!

Fixa en kompiler som kan ta samma BASIC-kod och som fungera likadan på olka processortyper, då kan vi börja prata om det.
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Inlägg av stekern »

Jag har lite samma filosofi som Icecap i den här frågan, man vet aldrig vad nästa projekt har att bjuda på, bättre att ha fria tyglar från början.

Lite talande är väl att vi inte hört från någon:
"Jag har slutat använda C för BASIC är bättre"

Att BASIC kan lika mycket hör vi, men kan det mer?
Finns det någon fördel med BASIC?
Att det skulle vara lättare att lära sig köper jag inte.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

En av de större orsakerna till att BASIC för PICs har ett lite dåligt rykte
är att de som oftast kör det (och som kommer till forum som detta
när de får problem) är rellativt nya nybörjare som inte ännu har bra
"känsla" för att skriva kod för en mikrokontroller. Alltså så ser den
kod som de har åstakommit inte speciellt snygg ut, och detta skylls
då på att de körde just BASIC.

Nybörjare skiver lika dålig kod oavsett om det är assembler, BASIC eller C,
det har inte så mycklet med själva språket att göra som en del tror. Saken
är bara den att BASIC är vanligare hos just nybörjare...

Jag är övertygad om att den som har skivit kod till (t.ex) PICs under en
längre tid (kanske med andra verktyg) skulle skriva betydligt bättre
BASIC än vad som oftast syns på forum som detta.

Jag brukar inte förespråka BASIC till de som verkligen vill lära sig PIC
från grunden, men å andra sidan inte C heller. Om det däremot bara
handlar om att få igång något snabbt så fungerar BASIC säkert bra.

Och, slutligen, så är det ju inget problem att byta verktyg (precis
som vilken hantverkare som helst) när kraven förrändras.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

bearing> Det fina i C är väl just att structen går att läsas och skrivas med
bearing> hjälp av en pekare, vilket Icecap visade...

Jag har inte kollat i detalj, men om du är intresserad så kan du kolla
sidan 72 i MikroBASIC manualen "Pointers".
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Finns det någon fördel med BASIC?

Generellt lättare att läsa koden.
En syntax som många kan sedan tidigare.

Sen vet jag inte om detta är till fördel om man är nybörjare på PICs, man
plockar gärna med sig programmeringsmetoder från större miljöer som
inte passar på mikrokontrollers. Å andra sidan så gäller det även om man
försöker överföra tidigare C (eller Pascal) kunskaper från större miljöer...
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Inlägg av stekern »

Om det är lättare eller svårare att läsa är väl iofs en smaksak, jag tycker t.ex. att det blir grötigt utan { och } som märker ut blocken.

Att man kan det sen tidigare är ju en bra poäng, alla mina argument är dock riktade till sådana som är i stånd att börja lära sig programmera (dvs inte har några bakkunskaper i BASIC eller C)

Det där med programmeringsmetoder från stora miljöer håller jag med om, just därför så tycker jag (som du) att man skall använda assembler när man lär sig hur mikroprocessorer fungerar.
Användarvisningsbild
Maxx
Inlägg: 62
Blev medlem: 24 december 2008, 02:27:59
Ort: Skåneland

Inlägg av Maxx »

TomasL skrev:
Nåväl, Kontentan är, BASIC är i dag ett något utdaterat och gammalt sätt att programmera, och det slår snabbt stopp. Duger säkert till att få en PIC/AVR/etc att blinka en lampa eller så, men sen är det väl i princip stopp.
Vill man bli "seriös" så går man över till MNEONICS, dvs ASM (ASM är fortfarande inte ett språk), eller C (beroende på processor).


För att senare skriva:
Naturligtvis kan man göra i princip samma saker i BASIC som iC, men, som andra påpekat, en mycket distinkt skillnad:

ASM -> Byt processor = Skriv om programmet.
BASIC ->Byt processor = Skriv om programmet.
C -> Byt Processor = Kompilera om programmet.


Ger låg trovärdighet! :? Bli inte ledsen, inläggen var intressanta på sitt sätt! :)

Detsamma gäller många av inläggen i denna tråd. Man kan bli sjösjuk för mindre! :wink: Antagligen beror det på vilken aspekt skribenten, för stunden, råkar tänka på... :)

Tack Tripp & H.O för att ni så generöst länkade till era projekt! :D

Under tiden har jag hittat en sida, som på ett bra sätt förklarar, varför BASIC är "överlägset" Assembler! :) /M


http://www.rentron.com/PicBasic2.htm
Note: The assembly language equivalents are so large that whole html pages have been created specifically for each one. Click on the links to view the assembly equivalents, then click the link at the bottom of each page to return here.
Användarvisningsbild
Maxx
Inlägg: 62
Blev medlem: 24 december 2008, 02:27:59
Ort: Skåneland

Inlägg av Maxx »

Elfa säljer en basickompilator för pic-ar... Det är nu den vs GC-BASIC, som skall examineras! Hoppas någon har synpunkter! Vore trist att köpa en kompilator om GC är likvärdig! :) /M

https://www1.elfa.se/data1/wwwroot/webr ... 337744.pdf
En kraftfull basickompilator anpassad till Microchips enchipdatorer. Kompilatorn är enkel att använda och passar både nybörjare och erfarna användare. Progamvaran har realtidsdebugger, mjukvaruoscilloskop, stöd för 32 bits flyttal och heltals matematik, stöd för Dallas entrådsprotokoll, LCD, hårdvaru-PWM, I2C samt hårdvaru-UART. Kompatibel med operativsystemen Windows 95, 98, ME, NT, 2000 och XP. Innehåller programvara och engelskspråkig dokumentation.
MBasic Standard innehåller 41 basickommandon som till stora delar är samma som PBasic. Man kan använda befintliga BasicStamp2-program med små eller inga förändringar. MBasic Professional innehåller ytterliggare 31 kraftfulla kommandon för t ex assemblerkod i basicprogram, X10, hårdvaru-UART, I2C, Dallas entrådsprotokoll och avancerad motorstyrning. Mer information och fler programexempel finns på BasicMicros hemsida.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Varför inte börja med en som finns i en fri version ?
Då slipper du fråga och kan test-köra själv...

Sen så är det fortfarande lite tveksamt om det
är BASIC som du faktiskt ska börja med, men det
är en annan diskussion, och jag vet för lite vad du
har för mål med det hela...
Användarvisningsbild
Maxx
Inlägg: 62
Blev medlem: 24 december 2008, 02:27:59
Ort: Skåneland

Inlägg av Maxx »

Varför inte börja med en som finns i en fri version ?
Då slipper du fråga och kan test-köra själv...
Bra argument! Tack! :) Återkommer... /M
Skriv svar