Forum: Mikrocontroller und Digitale Elektronik Fehlermeldung bei Befehl SBIS


von NICO (Gast)


Lesenswert?

hallo zusammen
ne kleine frage
ich arbeite mit einem Atmega88 ich habe jedesmal eine fehlermeldung
beim assemble bei einer SPI routine

"sbis SPSR, SPIF"

die fehler meldung lautet

"error: Operand 1 out of range: 0x2d"

von bascomer (Gast)


Lesenswert?

sbic/sbis geht nur in den unteren 32 I/O-Registern, das weiß man doch 
sogar als BASCOMer.

von Der G. (jonnyk)


Lesenswert?

Was sollte man den dann fur ein befehl benutzen?
habe schon alles ausprobiert geht nix....
bin mit einem mega2561 beschäftigt.

von Johannes M. (johnny-m)


Lesenswert?

Evgenij Grinjuk wrote:
> Was sollte man den dann fur ein befehl benutzen?
Mit einem Befehl geht das nicht. Da musste schon eine Kombination aus 
"in" und "sbrs"/"sbrc" verwenden.

> habe schon alles ausprobiert geht nix....
Alles? Glaub ich nicht...

> bin mit einem mega2561 beschäftigt.
Schön.

von Der G. (jonnyk)


Lesenswert?

Richtig ich habe jetzt acuh bisle combiniert und folgendes daraus 
gamacht


Schiebe:
out SPDR,r16
Schiebe1:
ldi  r18, SPSR
sbrs r18, SPIF
breq schiebe1

beim ersten senden springt er aus der schleife und macht weiter aber 
dann beim 2. bit senden springt er nicht mehr raus und ist in einer 
endlos schleife wisst ihr wocher es kommt?

Und wie ist es eigentlich möglich dass wenn ich ISP als master 
initialisiere, der Compiler von AVR Studio4 beim nächsten befehl(auch 
wenn es nur ein "nop" ist) das Master bit entfernt... dadurch ist 
natürlich auch keine kommunikation mehr möglich.

hier meine init

equ SCHIEBE_DDR  = DDRB
.equ SCHIEBE_PORT = PORTB
.equ RCK1         = DDB4     ; SS
.equ RCK2          = DDB5     ; SS
.equ SCK          = DDB1     ; SCK
.equ SIN          = DDB2     ; MOSI
.equ SOT          = DDB3     ; MISO

;
; SCK, MOSI, SS als Ausgänge schalten
;
    in    temp1,SCHIEBE_DDR      ;habe 2 SS wegen meiner Hardware 2 
Geräte
    ori   temp1,(1<<SIN) | (1<<SCK) | (1<<RCK1)| (1<<RCK2)
    out   SCHIEBE_DDR,temp1
;
; SPI Modul konfigurieren
;
    ldi   temp1, 0b01010010
    out   SPCR, temp1           ; keine Interrupts, MSB first, Master
                                ; CPOL = 0, CPHA =0
habe es auch schon so versucht wie im datenblatt aber es will einfach 
nicht funktionieren.

habt ihr schon erfahrungen damit gemacht?

von Johannes M. (johnny-m)


Lesenswert?

> ldi  r18, SPSR
Was soll das denn machen? Schau Dir bitte mal in der 
Befehlsdokumentation an, was ldi macht!

von Der G. (jonnyk)


Lesenswert?

ja hab ich schon gesehen ;-) mein fehler.
habe es auch auf

in r18, SPSR

geändert.
aber trotzdem macht der mikrocontroller das selbe.
er will nicht aus der schleife springen.

kann es daran liegen das dass master bit im SPCR register gelöscht wird?
wenn ja wie kann ich es verhindern?

von Peter D. (peda)


Lesenswert?

Der Grosse wrote:

> Und wie ist es eigentlich möglich dass wenn ich ISP als master
> initialisiere, der Compiler von AVR Studio4 beim nächsten befehl(auch
> wenn es nur ein "nop" ist) das Master bit entfernt... dadurch ist
> natürlich auch keine kommunikation mehr möglich.

Beliebte Fallgrube:

Der /SS-Pin muß als Ausgang gesetzt werden !!!


Peter

von Der G. (jonnyk)


Lesenswert?

Danke an alle...
Läuft alles supi...


werde mich bestimmt bald noch mal melden...;-)

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.