pahlbasic  der Basic Interpreter für Steuerungen mit dem AVR.



pahlbasic wird laufend weiterentwickelt, bitte immer die aktuellste Version benutzen.


Die Version 1.03 wird erweitert, solange der Flashspeicher des Atmega644 noch nicht voll ist. Danach wird nur noch für den Atmega1284 weiter entwickelt. Beide Prozessoren können verwendet werden. Für das udpbasic nur der Atmega1284.


Bei Anfragen bitte E-Mail-Adresse hinterlassen. Wünsche werden gerne berücksichtigt.


Parallel dazu laufen Versuche mit dem PIC32MX150F128B.


Ankündigung: Version 1.03i wird die letzte Version für den Atmega644. Es wird ein Digital-Analogwandler (10 Bit) hinzu gefügt werden. Dafür fällt der Ausgang DCF77-LED weg. Anschluss über SPI. Das macht programmierbare Spannungen möglich (dig. Netzgerät oder ähnl.).


7.10.16

udp_term: ein paar Bugs eliminiert.


26.08.2016

Website jetzt auch verschlüsselt über  https://www.pahlbasic.de  erreichbar.


1.05.2016

Winzigen Server in udpbasic integriert. Digitale Eingänge werden angezeigt. Relais können geschaltet werden.


25.04.2016

udp_term.exe aktualisiert. Testversion. Man kann individuelle Maßeinheiten einstellen (Values). Doku folgt in Kürze. Kleine Website auf dem Basic-Chip geplant.


29.12.2015

Doku (udpbasic) aktualisiert.


27.12.2015

udpbasic + UdpTerm-Dateien aktualisiert.


23.12.2015

Erste Betaversion von udpbasic.


05.09.2014:

Die lcd-Anweisung bietet jetzt auch die Möglichkeit, Spalten- und Zeilenzahl anzugeben.


lcd 1, Zeilen, Spalten (Zeilen: 1…4,  Spalten: 16, 20 oder 40 , sonst Fehlermeldung „bad Argument“)


 

09.09.2012  Version 1.03h:

Neu: mit der Systemvariablen pwm3 gibt es nun die Möglichkeit eines dritten PWM-Ausgangs, um z.B. RGB-LEDs anzusteuern. Die Auflösung dieses Kanals beträgt nur 8 Bit trotzdem wurde der Wertebereich von 0....1023 beibehalten. Weist man der Variablen pwm3 erstmalig einen Wert zu, wird der „Sound“-Ausgang zum PWM-Ausgang umfunktioniert.


let pwm3 = Ausdruck


Ein Aufruf der Soundanweisung schaltet wieder zurück in den Tonausgabemodus.


13.06.2012:

Fehler bei Stringvergleichen beseitigt. Es betraf nur die Vergleiche if $n = clock then... Und if $n = date then ... Um die tadellose Funktion zu testen, gibt es das neue Programmbeispiel 4-Kanal-Schaltuhr.



24.04.2012:

Zurück zur V1.03g. (Änderungen von „h“ bleiben erhalten, der Bug aus h ist aber weg.

Neu: die Anweisung baud, War schon längst überfällig. Zur Laufzeit des Programms kann die Übertragungsgeschwindigkeit der RS232-Schnittstelle geändert werden. Folgenden Parameter kennt baud:


baud Geschwindigkeit


Wobei Geschwindigkeit folgende Werte annehmen darf:

600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 und 31250. Andere Werte werden mit einer Fehlermeldung quittiert. Der Wert darf als konstanter Wert angegeben, aus einer Variablen stammen oder berechnet werden. Die letzten Nullen dürfen weggelassen werden (baud 192 ist dasselbe wie baud 19200). baud 2400 * 4 geht also auch. 31250 ist die „Midi-Geschwindigkeit“. Ohne die Angabe Geschwindigkeit werden 9600 angenommen. Nach einem Reset hat baud wieder den Wert 9600. Ändert man die Übertragungsgeschwindigkeit von pahlbasic muss auch die Geschwindigkeit des Terminals geändert werden.

Diese Anweisung wurde hinzugefügt, um ein Controllerboard mit pahlbasic als intelligentes I/O-Board für Steuerungen mit einem PC zu verwenden. In diesem Fall läuft das Steuerprogramm auf dem PC. Der PC sendet über eine serielle Schnittstelle oder über einen USB-Seriell-Wandler die Anweisungen an das Controllerboard. Das Board führt die Anweisungen im Direktmodus aus und sendet (wie an das Terminal) seine Antwort (bei Inputs) und den Prompt: ready [10] [13] „>“. Bei Outputs nur den Prompt. Bei Fehlern werden entsprechende Errormeldungen ausgegeben. Für diese Anwendung kann natürlich statt des MAX232 auf dem Controllerboard ein FTDI-Chip eingesetzt werden. Ich finde ja, dass die serielle Schnittstelle zum nostalgischen Charakter von pahlbasic besser passt. Ändert man nur einseitig mit baud die Übertragungsrate, reisst die Verbindung zum Terminal ab. Bei langen Verbindunsleitungen niedrige Geschwindigkeiten nehmen - bei kurzen hohe. Evtl. durch Ausprobieren herantasten.

Es sind natürlich auch andere Anwendungen denkbar. Deshalb wurde auch die Midi-Geschwindigkeit hinzugefügt. :)



V 1.03h  3.04.2012:

Das Stringelement $n(0) wurde hinzugefügt. Die 8 Stringvariablen $0....$7 bestanden bisher aus den Elementen (Zeichen) $n(1) ...$n(20) beim Atmega644  bzw $n(1) ...$n(80) beim Atmega1284. Mit der Zuweisung z.B. let $0(3) = “f“ wird das 3. Zeichen der Zeichenkette $0 gegen ein f ausgetauscht. Bisher konnten nur bereits vorhandene Zeichen ausgetauscht werden. Zeichenketten konnten aber nicht neu aus einzelnen Zeichen zusammengesetzt werden. z.B. 10 get A : let $2(4) = A war nur möglich, wenn bereits ein String $2 vorhanden war indem man z.B. mit let $2 = “              “ einen String aus Spaces erzeugte. $n(0) ist ein virtuelles Zeichen. Man kann es nicht drucken oder auslesen. Weist man diesem Element ein reales Zeichen zu: let $2(0) = “f“ dann wird es an das Ende des Strings (hier: $2) angehängt. Das funktioniert auch bei leeren Strings. 10 for N = 1 to 20 : get A : let $2(0) = A : next  ist jetzt möglich. (Liest 20 Zeichen vom Terminal ein - ein Ersatz z.B. für input $2, der kein Return am Stringende braucht )



23.03.2012:        Die Version 1.03g wurde mit einer neuen Compilerversion compiliert - und prompt kann pahlbasic keine leeren Strings mehr. Heute behoben.  not ( Variable.Bitnummer ) funktioniert jetzt auch richtig.




Neu in pahlbasic 1.03g:


Die Verwendung der PWM-Ausgänge wurde geändert:


1.)  Die PWM-Ausgänge sind nach dem Reset jetzt nicht sofort aktiv (sondern als Eingänge geschaltet). Erst eine Wertzuweisung ( let pwm1 = ...  oder   let pwm2 = ...  ) schaltet den jeweiligen PWM-Ausgang ein. So ist es möglich, sensible Peripherie hardwaremässig vor falschen Startwerten zu bewahren.


2.)  Neue Anweisung servo. Die Anweisung servo  konfiguriert die PWM-Ausgänge derart um, dass analoge Fernsteuer-Servos angeschlossen werden können. Gesteuert werden die Servos weiterhin mit let pwm1...   und let pwm2... . Der Wertebereich ist dann jedoch nicht mehr 0....1023  sondern 0....110 ( Mittelstellung: 55 ). Es wurden nur Conrad Servos getestet, die kommen auch mit der geringfügig abweichenden Frequenz zurecht (56Hz).


Syntax:  servo 1   schaltet den Servo-Modus ein, aktiviert die PWM-Ausgänge und fährt die Servos in Mittelstellung.  servo 0  schaltet Servo-Modus aus - mit Deaktivierung der Ausgänge, wie nach dem Reset.

Beispiel siehe hier.



Standart Frequenz der PWM-Ausgänge ist 980 Hz.



Der Syntax der Anweisung Sound wurde die Möglichkeit hinzugefügt, zeitlich unbegrenzte Töne zu erzeugen, sowie die Tonausgabe auch wieder abzuschalten. Die bisherige Verwendung des Befehls bleibt erhalten.


Neue Syntax:  sound Freq, 0   erzeugt einen Ton mit der Frequenz Freq  ohne zeitliche Begrenzung. Das Programm wird nicht durch die Anweisung sound angehalten. Freq kann ein beliebiger Rechenausdruck, eine Variable, oder Zahl sein.


Neue Syntax: sound 0  schaltet den Ton aus. Die neue Syntax macht Tongeneratoren und bessere Sirenen- oder andere akkustische Signale möglich. Beispiel siehe hier.



Die Tastenentprellzeit der inkey Anweisung wurde von 30ms auf 100ms angehoben, es sollten jetzt auch einfache Tastaturen funktionieren.




Neu in pahlbasic 1.03f:


Hinzu gekommen ist der Befehl morse. Syntax und Beispiel siehe hier.


N E W S

Zurück


Zurück