Hallo
Ein 62-Bit-Feld mit 0en und 1en gefüllt soll über den SPI in die
Schieberegister rutschen.
Ich nutze nen ATTiny.
Der Bascom-Compiler meckert gleich zu Beginn rum
1
Config Spi = Soft, 'Initalisierung der SPI-Schnittstelle
2
Din = None,
3
Dout = Portb.6,
4
Ss = None ,
5
Clock = Portb.7
Und zwar meint er dazu: Din... Assignment Error
Dout...invalid Datatype [[0011]0]
Dout...variable not dimensioned
In der Hilfe steht leider nix dazu.
Und dann würd ich noch gern wissen ob ich das 62-Bit-Feld auf einmal an
die SR-Kaskade senden kann oder für 8 SR in 8 Schritten mittels einer
For-Schleife?
Dankeschön
Wenn du die Fehlermeldungen liest, kommst du dann nicht darauf, dass der
Compiler in
Din = None eine Zuweisung sieht?
Entweder du schreibst alles in eine Zeile oder mit _ als letztes Zeichen
der Zeile, dann weiß Bascom, das es weitergeht.
Danke für die Antworten.
Ich wollte das ein wenig übersichtlicher schreiben, da kann man ja nicht
wissen, dass Bascom da rummotzt. Zumal hinter den Zuweisungen noch immer
ein Komma steht.
Eine Schaltung gibt es noch nicht, aber das ist wohl das geringste
Problem.
Das ist übrigens eine Projektarbeit fürs Studium.
Nach Neukompilierung des Codes durfte ich feststellen, dass er mir bei
dem 62Bit-Feld bringt: out of SRAM-Space.
Anders, als mit vier 15-Bit-Feldern, kann ich das sicher nicht
realisieren, oder?
Ich war übrigens mal bei dem Bascom-Forum, das mir von Google an 1.
Stelle genannt wurde. Aber da muss man sich schon fürs bloße Suchen
anmelden.
Das sind vielleicht Spinner.
Johannes Hofmann wrote:
> Nach Neukompilierung des Codes durfte ich feststellen, dass er mir bei> dem 62Bit-Feld bringt: out of SRAM-Space.
Dann sag dochmal, was für nen AVR Du hast.
> Anders, als mit vier 15-Bit-Feldern, kann ich das sicher nicht> realisieren, oder?
Der AVR ist ein 8-Bitter, also ist es am effektivsten ein Array aus 8
Byte zu nehmen.
Bit- oder Wort-Felder müssen dagegen umständlich auf Byteoperationen
zurückgeführt werden.
Peter
nen ATTiny, das hat ich oben schon mal erwähnt.
Wenn ich also ein Array aus 8 Byte nähme, wie sähe das denn dann aus?
Kann ich da trotzdem noch Funktionen dieser Art verwenden?
1
for I=1 to 64
2
print Array(I)
3
Next
Und wie sähe dann die Initialisierung aus?
Dim Array(64) as Byte
die werte in dem feld sollen auch nur 0 oder 1 annehmen.
Ich bin, wie unschwer zu erkennen ist, noch Anfänger.
Dankeschön
Ach ja und dann würd ich noch gern wissen, wie man ein komplettes Feld
mit '0' initialisieren kann.
Johannes Hofmann wrote:
> nen ATTiny, das hat ich oben schon mal erwähnt.
Das ist aber kein bestimmter Chip.
Davon gibts mindestens 10 verschiedene von 0..512 Byte SRAM.
>
1
for I=1 to 64
2
> print Array(I)
3
> Next
Ne, das Array ist dann natürlich 8 Byte groß.
Und das SPI gibt dann byteweise aus, also 64 Bit.
Das SPI ist ein Byte-Interface, das kann mit Bits überhaupt nichts
anfangen.
> die werte in dem feld sollen auch nur 0 oder 1 annehmen.
Die einzelnen Bits mußt Du dann mit UND/ODER Operatoren in die Bytes
reinladen.
Man kann (zumindest unter C) ne Union machen aus Byte- und Bitfeldern,
d.h. man setzt oder löscht sie als Bits und übergibt dem SPI dann die
Bytes. Das Bitfeld wird dann vom Compiler intern auch über AND/OR
gemacht.
Peter
Hallo
Es ist ein 2313
Der genannte Code diente nur als Beispiel.
ich möchte wissen, ob ich denn dann noch auf so eine einfach Art und
Weise auf jedes einzelne Element von den 62 Bits zugreifen und
manipulieren kann.
Wie man die einzelen Bits anspricht, weißt du aber nicht oder?
1
Dim Array(7)as Byte
Also wie genau ich dann auf bspw. das 2. Bit von Array(3) oder so
rankomme? evtl so?
Johannes Hofmann wrote:
> Wie man die einzelen Bits anspricht, weißt du aber nicht oder?
Nein, weiß ich nicht, da ich kein Bascom benutze.
Ich weiß nur, wie es in C geht.
Peter