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
######################################################################
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...
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
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.
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
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
mit C gehts auch nicht weil hochsprachen compiler pointer benutzen
jeder pointer braucht 16 Bit.sonst kann der compiler sich den
speichebereich nicht merken.
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
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
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
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
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
>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