Bascom 62-Bit-Feld auf SPI an kaskadierte Schieberegister

OP #1099512
Lesenswert?
• ▲
▼
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
Gast #1099538
Lesenswert?
• ▲
▼
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.
OP #1099604
Lesenswert?
• ▲
▼
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.
#1099758
Lesenswert?
• ▲
▼
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
OP #1099937
Lesenswert?
• ▲
▼
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.
#1100229
Lesenswert?
• ▲
▼
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
OP #1100668
Lesenswert?
• ▲
▼
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?
1
1 and Array(3).2

danke

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.