Forum: Mikrocontroller und Digitale Elektronik Tiny15 und BASCOM (Basic)


von Timo (Gast)


Lesenswert?

Hallo,

ich habe nicht wirklich viel Ahnung von AVR und BASCOM, wollte mit 
diesem Projekt einfach mal einsteigen

Ich möchte eine Inkrementalgeber/Drepulsgeber auswerten und im ersten 
Schritt auf zwei Pins ausgeben.
Leider meckert der Compiler schon in den ersten Zeilen und sagt bei den 
DIM-Instruktionen "Not possible with $Tiny".
Es kann doch nicht sein, dass ein Tiny15 nicht mal Variablen verarbeiten 
kann?? Gibt es irgendwo ein gutes Tutorial zu Bascom und eine ÜBersicht 
(ich meine nicht das Datenblatt..), in der die Unterschiede der AVRs 
aufgeführt sind?


Danke vorab für Eure Hilfe!

Timo


Hier der Code:

######################################################################
$regfile = "attiny15.dat"
$tiny

'Drehpulsdecoder auswerten

Config Portb.0 = Input
Config Portb.1 = Input

Config Portb.2 = Output
Config Portb.3 = Output



Dim Ax As Bit
Dim Bx As Bit

Dim A As Bit
Dim B As Bit

Dim Yy As Byte

Dim Cw As Bit
Dim Ccw As Bit



' ################
Einsprung:


Cw = 0 : Ccw = 0

A = Portb.0
B = Portb.1

If A = Ax And B = Bx Then Goto Einsprung

Yy =(a + 2 * B) Xor Porta.0(ax + 2 * Bx)
If A = B Then
   If Yy = 1 Then
      Cw = 1
   Elseif Yy = 2 Then
      Ccw = 1
   End If
Else
   If Yy = 2 Then
      Cw = 1
   Elseif Yy = 2 Then
      Ccw = 1
   End If
End If


Ax = A
Bx = B

Goto Einsprung
######################################################################

von Johannes M. (johnny-m)


Lesenswert?

Wie der BASCOM-Compiler das handelt weiß ich nicht, aber der Grund dafür 
dürfte sein, dass der Tiny15 kein SRAM hat, sondern nur die 32 
Rechenregister als Speicher. Und die sind schnell voll...

von Paul Baumann (Gast)


Lesenswert?

Nimm einen Attiny 25 oder 45 oder 85. Diese Kollégen haben 128/256/515 
Bytes SRAM. Da passen dann auch die Variablen rein.
Mir ging es mit Attiny15 schon genauso. ;-) Aus lauter "Prast" habe ich 
mich dann mit Assembler befasst, um sie doch noch benutzen zu können.

MfG Paul

von Sowieso (Gast)


Lesenswert?

Var = ENCODER( pin1, pin2, LeftLabel, RightLabel , wait)
bascom hat schon einen eingebauten befehl für
Drehpulsdecoder .

schau mal bei den help files in bascom nach.

von Timo (Gast)


Lesenswert?

Hallo Paul,

damit kann ich dann wohl meine Idee, im Ziel den Tiny15 als I2C-Slave zu 
betreiben, erden :-(( (Drehpuls auf I2C-Botschaft)

Was kann man dann mit dem Teil überhaupt machen??

Timo

von Timo (Gast)


Lesenswert?

Hallo Sowieso,

geht das mit dem Tiny15?? Gibt es eigentlich in der Hilfe eine 
Überischt, welche Funktionen mit welchem Controller gehen??

Timo

von Sowieso (Gast)


Lesenswert?


von Paul Baumann (Gast)


Lesenswert?

Der Tiny 15 eignet sich nicht für die Bascom-Programmierung, weil er 
keinen
SRAM hat. Die anderen oben aufgeführten haben die gleiche 
Anschlußbelegung
wie der Tiny15.
Wie ich oben schon sagte, geht es am Besten mit Assembler für diesen 
Burschen. Dann mußt man eben mangels SRAM die Register des Tiny15 zum
"Lagern" seiner Variablen benutzen. Das ist gar nicht so einfach, sich 
da
nicht selbst "abzuschießen".

Mfg Paul

von Nixda (Gast)


Lesenswert?

mit C gehts auch nicht weil hochsprachen compiler pointer benutzen
jeder pointer braucht 16 Bit.sonst kann der compiler sich den 
speichebereich nicht merken.

von Troll B. (blaubeer)


Lesenswert?

Paul Baumann wrote:
> Der Tiny 15 eignet sich nicht für die Bascom-Programmierung, weil er
> keinen
> SRAM hat.

Falsch! Umgedreht wird ein Schuh draus.
BASCOM eignet sich nicht für den Tiny15 weil BASCOM zu verschwenderisch 
mit den Ressourcen quast.

> Die anderen oben aufgeführten haben die gleiche
> Anschlußbelegung
> wie der Tiny15.

Gute Idee, immer mit Kanonen auf Spatzen schießen und mangelnde 
Programmierkenntnisse durch überdimensionierte Hardware zu kompensieren.

> Wie ich oben schon sagte, geht es am Besten mit Assembler für diesen
> Burschen.

Das ist korrekt, trifft aber auch für die anderen AVRs zu. Denn AVRs 
können weder BASIC noch C, sie können nur Maschinencode und der ist 
nunmal nur in Assembler 1 zu 1 abbildbar. Gute C-Progranmmierer kennen 
sich übrigens auch in Assembler etwas aus. Ansonsten wären sie gar nicht 
in der Lage, die Hardwearefeatures der AVRs sinnvoll zu nutzen.

> Dann mußt man eben mangels SRAM die Register des Tiny15 zum
> "Lagern" seiner Variablen benutzen. Das ist gar nicht so einfach, sich
> da
> nicht selbst "abzuschießen".

Ich habe am Ende beim Tiny12 oder Tiny15 meist noch ein paar Register 
frei.

>
> Mfg Paul

MfG, Blaubär

von Paul Baumann (Gast)


Lesenswert?

Mein Enkel würde jetzt sagen: "Bleib mal gelöst, Alter!" Was vielleicht 
noch interessant wäre: Wie kommst Du zu dem Schluß, daß mangelnde 
Programmierkenntnisse daran Schuld sind, wenn jemand mit BASCOM an´s 
Werk geht?
M.E. ist es völlig unerheblich, WOMIT man programmiert. Der Quelltext 
ist
schließlich nur die Umsetzung des Programmablaufes. Programmieren ist 
für mich in erster Linie ein logisch fehlerfreies Abbilden des gewollten 
Vorganges in Form eines Planes auf Papier.

In diesem Sinne
Paul

von Troll B. (blaubeer)


Lesenswert?

Paul Baumann wrote:
> Mein Enkel würde jetzt sagen: "Bleib mal gelöst, Alter!"

Da haben sie recht.

> Was vielleicht
> noch interessant wäre: Wie kommst Du zu dem Schluß, daß mangelnde
> Programmierkenntnisse daran Schuld sind, wenn jemand mit BASCOM an´s
> Werk geht?

Weil ich die Erfahrung gemacht habe, dass viele Leute BASCOM einsetzen, 
weil sie meinen, dass sie damit auch ohne jegliches Wissen über 
Controller-Architektur und reale Möglichkeiten gute Programme schreiben 
können. Ein Tiny15 (der bekanntlich für einen DCC-Lokdecoder ausreicht) 
wird zum Schrott erklärt, weil man unfähig ist, Variablen in Registern 
zu halten.

> M.E. ist es völlig unerheblich, WOMIT man programmiert.

Das stimmt aber nur solange, wie man mit dem "WOMIT" (gewählten 
Werkzeug) auch sein Ziel erreicht.

> Der Quelltext
> ist
> schließlich nur die Umsetzung des Programmablaufes.

Und je nach verwendeter Sprache und vorhandenem Wissen darüber eine 
hocheffiziente bis sehr verschwenderische Umsetzung. Ich sehe jedenfalls 
keinen Sinn darin, mich von einem Baukasten abhängig zu machen, der mir 
das Benutzen kleinerer RAM-loser AVRs verwehrt.

> Programmieren ist
> für mich in erster Linie ein logisch fehlerfreies Abbilden des gewollten
> Vorganges in Form eines Planes auf Papier.

Da stimme ich Dir natürlich zu. Wenn man beim Programmieren (auf Papier) 
aber schon die vorhandenen Möglichkeiten (Ressourcen) und 
Einschränkungen berücksichtigt, so ist das bestimmt kein Nachteil, oder?

>
> In diesem Sinne
> Paul

Bis auf den Punkt, dass man mit ungeeignetem Werkzeug keine gute Arbeit 
machen kann, teile ich Deine Meinung.

MfG, blaues Bärli

von Paul Baumann (Gast)


Lesenswert?

Fasse doch Deine Hauptaussage eventuell gleich so zusammen:

/IRONIE
"Bascom ist ein Baukasten, in dem etliche Teile fehlen. Es ist nur zum
Spielen für Schülerchen und Facharbeiterchen geeignet, jedoch nicht
für excellente Programmierer mit Fähigkeiten, für die mir die Worte 
fehlen.
Für Experten jedoch, die ein Doppel-Word sogar in ein Byte speichern 
können, ist es völlig indiskutabel."
\IRONIE


Noch mal zur Erinnerung: Es ging dem Threadstarter nur um eine Erklärung 
für die Fehlermeldung:
"Not possible with $Tiny".
(Auf Deutsch: Der Tiny 15 ist zu possierlich, um einen SRAM zu haben) 
;-))

Falls der gute Mann jetzt schon eine Platine angefertigt gehabt hätte, 
habe ich ihm geraten, die Typen mit gleicher Anschlußbelegun zu wählen.

Weiter wollte ich nichts.

MfG Paul

von Troll B. (blaubeer)


Lesenswert?

Ach Paul...

Paul Baumann wrote:
> Fasse doch Deine Hauptaussage eventuell gleich so zusammen:
>
> /IRONIE
> "Bascom ist ein Baukasten, in dem etliche Teile fehlen. Es ist nur zum
> Spielen für Schülerchen und Facharbeiterchen geeignet, jedoch nicht
> für excellente Programmierer mit Fähigkeiten, für die mir die Worte
> fehlen.
> Für Experten jedoch, die ein Doppel-Word sogar in ein Byte speichern
> können, ist es völlig indiskutabel."
> \IRONIE

Das ist Deine Interpretation, nicht meine. Meine Zusammenfassung würde 
lauten: "Bascom macht dumm".
Denn Es versperrt die Sicht auf das, was wirklich passiert. Das es von 
Schülern und Azubis benutzt wird, hat mit der Faulheit ihrer Lehrer und 
Ausbilder zu tun. Wer damit klar kommt, der soll damit selig werden. Wer 
aber rumattert, weil das Zeugs selbst bei kleinsten Progrämmchen RAM 
braucht, weil es zu doof ist, die 32 Register halbwegs effizient zu 
nutzen, dem empfehle ich gerne ASM als Alternative. Was ist daran denn 
sooo schlimm?

>
>
> Noch mal zur Erinnerung: Es ging dem Threadstarter nur um eine Erklärung
> für die Fehlermeldung:
> "Not possible with $Tiny".
> (Auf Deutsch: Der Tiny 15 ist zu possierlich, um einen SRAM zu haben)
> ;-))

Gute üBärsetzung.

>
> Falls der gute Mann jetzt schon eine Platine angefertigt gehabt hätte,
> habe ich ihm geraten, die Typen mit gleicher Anschlußbelegun zu wählen.

Das Innenleben des Tiny15 ist so überschaubar, dass der Tiny15 sich 
hervorragend für den Einstieg in ASM eignet. Das ist für den Benutzer 
immer noch besser als Wegwerfen und durch andere Typen ersetzen. Aber da 
wird es ja gleich wieder kritisch, weil man ja dann den I²C-Slave von 
Hand in Software nachbilden muss und nicht mal schnell einen vorhandenen 
Baustein dranstecken kann, ohne zu wissen, was der eigentlich macht.

>
> Weiter wollte ich nichts.

Ich auch nicht.

>
> MfG Paul

MfG, Bärli, datt blaue

von Paul Baumann (Gast)


Lesenswert?

>Das Innenleben des Tiny15 ist so überschaubar, dass der Tiny15 sich
>hervorragend für den Einstieg in ASM eignet.

..habe ich doch weiter oben schon gesagt.

So, und jetzt:
Gut nun, Gudrun.

Paul

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.