Forum: Mikrocontroller und Digitale Elektronik SPI Hilfe! Verstehe gar nichts mehr


von M. Н. (Gast)


Lesenswert?

Hallo Leute....

Ich komm mir langsam blöd vor...

Ich habe folgendes Programm. es soll einfach ein Byte am Spi ausgeben 
(in einer Schleife). Aber irgendwie klappt es nicht. mit dem Oszi sehe 
ich nur ne sinuswelle an mosi miso sck an ss ist high pegel


Helft mir bitte...
1
.include <m16def.inc>
2
.cseg
3
.org 0
4
start:
5
ldi r16, low(RAMEND)
6
ldi r17, high(RAMEND)
7
out spl, r16
8
out sph, r17
9
10
ldi r16, (1<<7) | (1<<5)
11
out ddrb, r16
12
ldi r16, (1<<MSTR) | (1<<SPE)
13
out spcr, r16
14
15
s:
16
ldi r16, 0b01010011
17
out spdr, r16
18
s1:
19
sbis SPSR, SPIF
20
rjmp s1
21
in r16, spdr
22
nop
23
rjmp s
Danke in voraus
Gruß M.H,

von Christopher G. (cbg)


Lesenswert?

Vlt mal mit SPH, SPL, DDRB, ... statt sph, spl, ddrb, ... probieren?

von M. Н. (Gast)


Lesenswert?

Hab ich..Geht nicht... Vor allem. ich hab es früher so oft gemacht. aer 
bekomm einfach kein signal mehr auf die reihe

von holger (Gast)


Lesenswert?

Schalte SS auf Ausgang.

von Sebastian M. (noobuntu)


Lesenswert?

Ohne jetzt im Datenblatt nachgesehen zu haben, mit welcher Frequenz 
läuft den dein SPI? Kann es sein, dass wenn du den SPI mit ein paar 
Megaherz feuern lässt und dann mit dem ganz normalen Messkopf vom Oszi 
misst (also nicht x10)  "Sinüsser" siehst?

mfg noobuntu

von M. Н. (Gast)


Lesenswert?

DANKEEEEEE.............

Es sieht jetzt so aus. UND GEHT....


Sorry für die "bescheuerte Frage". Ich bin ja nicht grad unerfahren in 
avr-Sachen. aber ich habs nicht hinbekommen.....

1
.include <m16def.inc>
2
.cseg
3
.org 0
4
start:
5
ldi r16, low(RAMEND)
6
ldi r17, high(RAMEND)
7
out SPL, r16
8
out SPH, r17
9
10
ldi r16, (1<<7) | (1<<5) | (1<<4)
11
out DDRB, r16
12
ldi r16, (1<<MSTR) | (1<<SPE)
13
out spcr, r16
14
15
s:
16
ldi r16, 0b01010011
17
out SPDR, r16
18
s1:
19
sbis SPSR, SPIF
20
rjmp s1
21
in r16, SPDR
22
23
nop
24
rjmp s

Also Danke.



P.S. Ich nehm an, dass der avr an ss einfach ne schwingung bekommen hat 
und dann in den slave modus gewechselt hat...

von M. Н. (Gast)


Lesenswert?

ach noch was... die "sinüse" (keine ahnung was der Plural ist :)) sind 
störungen aus der Luft, da ich mit einem langen kabel messe.

Gruß M.H.

von bitte löschen (Gast)


Lesenswert?

Welche Frequenz hat denn das Sinussignal (in etwa)?

von holger (Gast)


Lesenswert?

>P.S. Ich nehm an, dass der avr an ss einfach ne schwingung bekommen hat
>und dann in den slave modus gewechselt hat...

So ist es. SS darf nicht floaten wenn es ein Eingang ist.
Als Eingang ist er im Master Mode sowieso nicht nutzbar.
Also immer schön auf Ausgang schalten.

von M. Н. (Gast)


Lesenswert?

Noch ne Frage:

ist es normal, dass MOSI in "Ruhe" auf high ist?

von holger (Gast)


Lesenswert?

>ist es normal, dass MOSI in "Ruhe" auf high ist?

Da bleibt das Bit stehen das du zuletzt gesendet hast.

von M. Н. (Gast)


Lesenswert?

OK... aber wenn ich null sende, schnappt er auch wieder auf high zurück!

huch nein doch nicht. sorry :)

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.