SPI w ATmega128



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Michał Lankosz" <nie_at_nospam_lubie.spamu>
Subject: SPI w ATmega128
Date: Mon, 28 Oct 2002 01:01:17 +0100


Witam

Jakoś nie mogę odpalić SPI w tym procku pod GCC. Na AT90S8535 działało, a po
przystosowaniu dla megi zawiesza się na sprawdzaniu warunku wysłania danej.
W asm jeszcze nie próbowałem. Wszystkie końcówki są w powietrzu.
Xtal=3.6864MHz.
Poniżej przedstawiam program (w/g pdf strona 160). Ustawiam odpowiednio port
B (we/wy, kierunek). Dla testów zapalam po kolei piny portu E.
Może ktoś ma pomysł...?

#include <io.h>
#include <iom128.h>
char i;
int main (void)
{
sbi(DDRB,1);
sbi(DDRB,2);
cbi(DDRB,3);
cbi(PORTB,1);
cbi(PORTB,2);
sbi(PORTB,3);
outp(0x53,SPCR); // włączenie SPI master, ustawienie fazy, polaryzacji i
szybkości na Fck/128

outp(0xff,DDRE); // test
outp(0x00,PORTE); // test
i=0; // test
for(;;)
{
outp(i++,PORTE); // test
outp(0x55,SPDR);
outp(i++,PORTE); // test
while ( !(inp(SPSR) & (1<<SPIF)) ); // <-- tutaj utyka z liczbą na
porcie E = 7
outp(i++,PORTE); // test
}
}

linijka while ...... tłumaczona jest:
21:proba.c ** while ( !(inp(SPSR) & (1<<SPIF)) );
97 .stabn 68,0,21,.LM15-main
98 .LM15:
99 .L5:
100 0026 779B sbis 46-0x20,7 <----- i to się zgadza
101 0028 FECF rjmp .L5



--

Michał, SQ9FQQ http://sq9fqq.prv.pl/
GG:374157 http://free.ngo.pl/sp9zcj/
mike2001 (malpa) tlen.pl




Poprzedni Następny
Wiadomość
Spis treści
From: "EM" <edim123_at_nospam_poczta.onet.pl>
Subject: Odp: SPI w ATmega128
Date: Mon, 28 Oct 2002 08:08:22 +0100


while ( !(inp(SPSR) & (1<<SPIF)) ); // <-- tutaj utyka z liczbą na
porcie E = 7
outp(i++,PORTE); // test
}
}

linijka while ...... tłumaczona jest:
21:proba.c ** while ( !(inp(SPSR) & (1<<SPIF)) );
97 .stabn 68,0,21,.LM15-main
98 .LM15:
99 .L5:
100 0026 779B sbis 46-0x20,7 <----- i to się zgadza
101 0028 FECF rjmp .L5


Witam
Ja tez mialem problemy z SPI na poczatku. Jak sie okazalo, aby cos odebrac
musisz cos wysylac! Czyli w kazdej petli while musi byc cos wysylane na SPI,
przez co generowne sa impulsy zegarowe. Oczywiscie wartosc wysylana dowolna
np. FFh.
Mam nadzieje, ze to rozwiaze problem.
Pozdr
EM




Poprzedni Następny
Wiadomość
Spis treści
From: "Michał Lankosz" <nie_at_nospam_lubie.spamu>
Subject: Re: SPI w ATmega128
Date: Mon, 28 Oct 2002 09:14:55 +0100



Użytkownik EM <edim123_at_nospam_poczta.onet.pl> w wiadomości do grup dyskusyjnych
napisał:apink1$be5$1_at_nospam_news.onet.pl...
Witam
Ja tez mialem problemy z SPI na poczatku. Jak sie okazalo, aby cos odebrac
musisz cos wysylac! Czyli w kazdej petli while musi byc cos wysylane na
SPI,
przez co generowne sa impulsy zegarowe. Oczywiscie wartosc wysylana
dowolna

Zauważ, że ja włśnie wysyłam dane:
outp(0x55,SPDR);
while ( !(inp(SPSR) & (1<<SPIF)) ); // <-- tutaj utyka z liczbą na
i nie działa, tzn nie widzę na oscyloskopie żadnych przebiegów, tylko
wartości stałe.

--
Michał, SQ9FQQ http://sq9fqq.prv.pl/
GG:374157 http://free.ngo.pl/sp9zcj/
mike2001 (malpa) tlen.pl




Poprzedni Następny
Wiadomość
Spis treści
From: "Michał Lankosz" <nie_at_nospam_lubie.spamu>
Subject: Re: SPI w ATmega128 (Sorry za godzine :)
Date: Mon, 28 Oct 2002 08:13:01 +0100


ML



Poprzedni Następny
Wiadomość
Spis treści
From: "EM" <edim123_at_nospam_poczta.onet.pl>
Subject: Odp: SPI w ATmega128
Date: Mon, 28 Oct 2002 09:30:46 +0100



Zauważ, że ja włśnie wysyłam dane:
outp(0x55,SPDR);
while ( !(inp(SPSR) & (1<<SPIF)) ); // <-- tutaj utyka z liczbą na
i nie działa, tzn nie widzę na oscyloskopie żadnych przebiegów, tylko
wartości stałe.

Rzeczywiscie troche za szybko odpowiedzialem, aczkolwiek to co powiedzialem
wczesniej tez jest wazne
No to jeszcze jedna propozycja:
Pin SS musi byc wyjsciem gdy SPI ma pracowac jako master!
sbi DDRB,PB0
Myślę, że to jest to!
pozdr
EM




Poprzedni Następny
Wiadomość
Spis treści
From: "Michał Lankosz" <nie_at_nospam_lubie.spamu>
Subject: Re: SPI w ATmega128
Date: Mon, 28 Oct 2002 18:43:59 +0100


Użytkownik EM <edim123_at_nospam_poczta.onet.pl> w wiadomości do grup dyskusyjnych
napisał:apisec$mm6$1_at_nospam_news.onet.pl...

No to jeszcze jedna propozycja:
Pin SS musi byc wyjsciem gdy SPI ma pracowac jako master!
sbi DDRB,PB0
Myślę, że to jest to!

Racja! Przy projektowaniu nowego układu specjalnie z tego powodu
pozostawiłem pin SS swobodny, aby nie było chec, a podczas programowania
zapomniałem sobie o tym.

Dzęki za pomoc, już działa :-)

--
Michał, SQ9FQQ http://sq9fqq.prv.pl/
GG:374157 http://free.ngo.pl/sp9zcj/
mike2001 (malpa) tlen.pl