SPI w ATmega128
Masz problem? Zapytaj na forum elektroda.pl
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
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
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
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
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
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