www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fehlermeldung bei Befehl SBIS


Autor: NICO (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: bascomer (Gast)
Datum:

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

Autor: Der Grosse (jonnyk)
Datum:

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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Der Grosse (jonnyk)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Johannes M. (johnny-m)
Datum:

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

Autor: Der Grosse (jonnyk)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Der Grosse (jonnyk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke an alle...
Läuft alles supi...


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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.