Mit BASCOM Texte über ein Terminal ausgeben

Rund um den Digispark
Antworten
Heinrichs
Beiträge: 183
Registriert: Do 21. Okt 2010, 18:31

Mit BASCOM Texte über ein Terminal ausgeben

Beitrag von Heinrichs » Sa 23. Jan 2021, 16:46

Manchmal kann es ganz hilfreich sein, wenn unser Attiny85 auch Texte oder Zahlen über ein Terminal ausgeben kann. Ich benutze diese Möglichkeit auch ganz gerne beim Auffinden von Programmfehlern.

Für die Ausgabe von Zeichenketten oder Zahlen stellt BASCOM die Befehle print bzw. printbin zur Verfügung. Hiermit werden die Daten über eine serielle Schnittstelle an das Terminal-Programm gesendet. Mikrocontroller wie der Attiny2313 bzw. die Atmegas stellen dafür eine Hardware-Schnittstelle zur Verfügung. Der Attiny85 besitzt etwas derartiges nicht. Bascom kann aber eine solche Schnittstelle emulieren. An einem Beispiel soll hier gezeigt werden, wie das geht.

Der Attiny85 soll die Zeichenkette "Test" fortwährend im Abstand von 2 Sekunden an ein Terminal-Programm auf dem PC senden.


1. Programm

Zunächst muss eine Software-Schnittstelle errichtet und konfiguriert werden. Dies geschieht mit dem Befehl

Open "COMB.1:9600,8,n,1" For Output As #1

Hierdurch wird eine serielle Verbindung an Port B.1 mit den Spezifikationen 9600 Baud, 8 Bit, kein Paritätsbit, 1 Stoppbit hergestellt. Port B.1 dient als Ausgang und erhält die Kanal-Nummer 1. Nun kann der print-Befehl (fast genauso) wie bei einer Hardware-Schnittstelle benutzt werden; wir müssen lediglich hinter den Print-Befehl den Kanal angeben, z. B.:

print #1, "Test"

In entsprechender Weise kann man weitere Verbindungen aufbauen, z. B. auch für den Empfang von Daten mit der input-Funktion. Jede Verbindung muss dabei eine eigene Kanalnummer und einen eigenen Port-Anschluss erhalten.

Das gesamte Programm sieht z. B. so aus:

Code: Alles auswählen

$regfile = "attiny85.dat"
$crystal = 16500000
$hwstack = 40
$swstack = 16
$framesize = 32

Open "COMB.1:9600,8,n,1" For Output As #1                   ' Port B.1 ist Ausgang (TxD)

Do
  Print #1 , "Test"
  Wait 2
Loop

Close #1

End
Es wird kompiliert und über die USB-Schnittstelle des Digispark an den Attiny85 übertragen.


2. Kontrollieren des seriellen Signals

Zur Kontrolle schließen wir den Pin B.1 an den Eingang eines Logik-Analysators an und führen eines Messung durch. Abb. 2 zeigt das Diagramm des seriellen Signals mitsamt einer Auswertung (entsprechend der oben angegebenen Spezifikationen). Hier wurde die Zeichenkette offensichtlich korrekt übertragen.

Signal_Test_1.jpg
Abb. 2
Signal_Test_1.jpg (18.34 KiB) 20044 mal betrachtet


3. Terminal-Betrieb

Wir trennen jetzt den Digispark vom PC. Nun verbinden wir den Pin B.1 des Attiny85 mit dem RxD-Eingang eines TTL-Seriell-USB-Adapters. Außerdem verbinden wir die beiden Masse-Anschlüsse (GND) von Digispark und dem Adapter (s. Abb. 1).

Aufbau.jpg
Abb. 1
Aufbau.jpg (27 KiB) 20045 mal betrachtet

Der Adapter wird anschließend über ein USB-Kabel mit dem PC verbunden; dieser sieht den Adapter als serielle Schnittstelle (COM) an. Wir öffnen nun unser Terminal-Programm (mit der COM-Nr des Adapters) und konfigurieren das Terminal-Programm mit denselben Spezifikationen, wie sie beim open-Befehl benutzt worden sind. Wenn wir das Terminal vom Uploader-Programm (Download) benutzen, sind diese Einstellung schon vorgegeben.

Nun versorgen wir den Digispark über eine externe Quelle (z. B. eine Powerbank, nicht über einen PC) mit Strom. Dann aktivieren wir den Empfang beim Terminal. Abb. 3 zeigt das Ergebnis.

Terminal_Test1.jpg
Abb. 3
Terminal_Test1.jpg (40.5 KiB) 20043 mal betrachtet
.

Antworten