Forum: Mikrocontroller und Digitale Elektronik Spiout- Fehler bei Bascom


von Alex F. (alex86)


Lesenswert?

m454fjjuHallo,

ich habe eine merkwürdiges Problem. Mein programm schickt mehrere Bytes
über den SPI- Bus zu einem Funkmodul. Jedoch sendet Bascom das zweite
Byte nie richtig aus. Anstatt der 8 kommt immer nur eine 0. Alle
anderen Bytewerte stimmen (würde auf dem Oszi geprüft).
Der Teil meines Codes:

A(1) = &H66
Spiout A(1) , 1
Waitus 20

A(1) = &H08
Spiout A(1) , 1   ------------ dieses Byte wird nie richtig gesendet
Waitus 20

A(1) = &H00
Spiout A(1) , 1
Waitus 20

Der MCU ist dabei Master und springt nie in den Slavebetrieb. Der Takt
ist zu sehen, nur der Bytewert stimmt nicht überein. Hat jemand eine
Ahnung woran das liegen könnte?
Zudem hört Bascom einfach nach einer Weile mit dem SPI-Bus auf zu
senden. Also eine dauerhaften senden ist auch nicht möglich.

Danke schon mal für die Antwort
mfg
Alex

von Simon K. (simon) Benutzerseite


Lesenswert?

Hmm. Ich weiß jetzt nicht, was genau diese Spiout Funktion nun macht,
aber eventuell hilfts ja, einfach mal ein paar ms Pause (testweise)
Nach jedem Byte einzufügen?

Kenne mich mit BASCOM leider nicht aus.

von PeterK (Gast)


Lesenswert?

Hi,
mmm.  Seltsam. SPI funktioniert eigentlich recht gut mit Bascom.

Ist Variable A auch als Byte definiert?

Was passiert denn bei :

Spiout &H66 , 1
Waitus 20
Spiout &H08 , 1
Waitus 20
Spiout &H00 , 1
Waitus 20

oder bei
A(1)=&H66
A(2)=&H08
A(3)=&H00
Spiout A(1) , 3

Alternativ mal den Befehl Shiftout versuchen.

Gruß
PeterK
www.display3000.com

von chris (Gast)


Lesenswert?

Hi,
was für ein Funkmodul benutzt du denn?

mit einem CC1100 von chipcon und einem mega8 geht das z.b. sehr einfach
so...

'init
Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = Yes ,
Polarity = Low , Phase = 0 , Clockrate = 4 , Noss = 1

Config Portb.2 = Output 'port für CS = chip select pin
Csn Alias Portb.2       'CSN is SPI enable pin
Enable Interrupts

Spiinit                 'inits the SPI interface
Set Csn                 'set CSN high as soon as possible
.
.
.
.
Reset Csn
Waitus 1
Spiout Spi_instr , Spi_bytes
Waitus 1
Set Csn
Waitus 1
.
.
.

fertig

cu

chris

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.