ich finde das mit dem BASIC jetzt wirklich nicht als Abstieg.
Es hat den Vorteil das man ganz ohne Entwicklungsumgebung (ohne Compiler) die Programme runter tippt und mit RUN starten kann.
1991 habe ich in der Firma ein Messgerät entwickelt wo ein 8051AH-Basic drauf läuft..... das Teil
verkaufen wir heute noch und es hat eine Zulassung für den Einsatz auf Schiffen (Lloyds Register of Shipping)
hast Du Dir mal das Beispiel angeschaut mit dem Temp Sensor?
We choose an LM335Z temperature sensor which has 10mV/C output and 2.73V at 0C.
I can write MM Basic code to read the temperature as simple as this :
20 SETPIN 9,1
30 PRINT (PIN(9)-2.73)*100
On the first line I tell MM Basic that I want to use PIN number 9 on the DuinoMite connector as an Analog input.
On the second line I calculate and print the temperature.
Now tell me what amount of time you would need to write same code in C or Arduino if there is no libraries for it? You have to study the PIC32 datasheet, to initialize a lot of registers and debug your code etc.
You will lose HOURS for what I did in SECONDS.
This is the charm of MM Basic.
Now let's assume we need to store the temperature in a log file, all we have to do is to add two new lines of code:
10 OPEN "TEMP-LOG.TXT" FOR OUTPUT AS #1
and to modify 30 as:
30 PRINT #1, (PIN(9)-2.73)*100
and now we have a temperature data logger.
If I want to add the Date and Time stamp in the results I again will modify the line 30:
30 PRINT #1, DATE$, TIME$, (PIN(9)-2.73)*100
and now I will have date/time stamp before the temperature logged
einfacher geht es nicht!
In Assembler sicherlich extrem komplex wegen SD-Karten Zugriff und in C ohne Compiler und passenden Unterroutinen (fast) unlösbar
Zitat:Original von Thomas V
Now tell me what amount of time you would need to write same code in C or Arduino if there is no libraries for it? You have to study the PIC32 datasheet, to initialize a lot of registers and debug your code etc.
Naja, der Author übertreibt da gewaltig. Für das simple Auslesen eines Analogports braucht man absolut nichts:
Das gibt den gemessenen Wert alle 2 Sekunden auf der seriellen Schnittstelle aus - mangels Display...
Aber Basic hat schon ein paar sehr nette Eigenschaften, und es ist sowohl einfach zu schreiben, als auch zu lesen!
Zitat:Naja, der Author übertreibt da gewaltig. Für das simple Auslesen eines Analogports braucht man absolut nichts:
einen C-Compiler?
Hat nicht unbedingt jeder am Start.....
Heute habe ich gelesen das Atmel das AVR Studio 6 veröffentlicht hat.
Das Studio 5.1 frist über 1GB(!) an Speicher....
Was benötigt dann erst das 6er? Es soll ja die ARM32 unterstützen....
Ich muss ehrlich sagen, das wird mir langsam zu abgedreht.
Da kommt so ein BASIC System mit so einer mächtigen CPU gerade recht
Das ganze Geplumps wäre (bzw. IST) mir auch zu viel, meine Toleranzgrenze wird durch die Arduino-IDE gebildet.
Schnell was Tippen, Knopf drücken und gut ist's.
Das BASIC-Rechnerchen habe ich mittlerweile auch ins Herz geschlossen, Back to the Roots, aber mit Feuer unter der Haube. Sehr nett!
Und ich versuche auf alle Fälle, den OBD2-Decoder (also den Datenaufbereiter nach dem ELM-Clone) in BASIC zu schreiben!
100 PRINT "CANview program - shows all received CAN messages on screen"
110 PRINT " "
120 REM declare variables for message reception
130 DIM rxId : DIM rxType : DIM rxLen : DIM rxData(8) : DIM rxOk
140 REM set CAN baudrate to 500 kbps and connect to the CAN bus
150 CANOPEN 500000
160 REM start the program loop
170 DO
180 REM quit program when user pressed 'q'
190 IF INKEY$ = "q" THEN EXIT
200 REM check if a message was received
210 CANRCV rxId, rxType, rxLen, rxData(0), rxOk
220 IF rxOk = 1 THEN
230 REM process message data
240 id$ = HEX$(rxId)
250 IF rxType = 0 THEN type$ = "STD" ELSE type$ = "EXT"
260 len$ = STR$(rxLen)
270 d0$ = HEX$(rxData(0))+SPACE$(1)
280 d1$ = HEX$(rxData(1))+SPACE$(1)
290 d2$ = HEX$(rxData(2))+SPACE$(1)
300 d3$ = HEX$(rxData(3))+SPACE$(1)
310 d4$ = HEX$(rxData(4))+SPACE$(1)
320 d5$ = HEX$(rxData(5))+SPACE$(1)
330 d6$ = HEX$(rxData(6))+SPACE$(1)
340 d7$ = HEX$(rxData(7))+SPACE$(1)
350 REM display the message
360 PRINT id$,type$,len$,d0$;d1$;d2$;d3$;d4$;d5$;d6$;d7$
370 ENDIF
380 LOOP
390 CANCLOSE
400 END