SPI i Bascom AVR

Feb 18, 2005 4 Replies

Witam Szanownych Czytelnikow Mam pewien problem z uzywaniem SPI pod bascomem Dwa uC komunikuj± sie po SPI - at90s2313 wysyla 1 bajt a At90s8515 odbiera 1 bajt danych. Odebrany bajt jest wyswietlany na wyswietlaczu LCD 2x16. Problem w tym ze 8515 odbiera (lub wyswietla na LCD) jeszcze jakies smieci za odebranym bajtem. A to fragment kodu dla 8515



Config Spi = Hard , Interrupt = On , Data Order = Msb , Master = No , Polarity = Low , Phase = 0 , Clockrate = 128 Spiinit . . . Dim Nr As Byte Spi_isr: Cls Nr = Spdr Lcd " odebrano: " Lcd Nr ' Wait 2 Reset Portd.6 Waitms 50 Set Portd.6 Return



Te smieci to prawdopodobnie dwa bajty bo na wyswietlaczu pojawia sie przykladowo napis "odebrano: 45" i tuz za przeslanym bajtem (np 45) czarna kratka oraz znak srednika. Z tego wnioskuje nie wiadomo skad pojawiaja sie jakies 2 bajty smieci. Co moze byc przyczyna tego bledu?


Nie wiem czemu (jak dojdziesz do tego jestem bardzo zainteresowany) ale ja probowalem stosowac SPI=HARD i niestety nigdy mi sie to nie udawalo - wszystko szalalo lub nie dzialalo w ogole!!! Stosujac SPI=SOFT dziala no ale to juz nie jest spi... ale dziala :)

nie wiem - w tym przypadku pewnie robie cos zle... nigdzie nie znalazlem przykladu zastosowania sprzetowego SPI pod Bascom'em - byc moze to jakis szczegol...

C daje napewno wieksza wladze nad prockiem, jest bardziej oszczedny w zasobach.. Nie da sie ukryc ze Bascom ze swoim jezykiem Basic jest prostrzy...

Juz rozwiazalem problem. Dokladnie nie wiem co bylo przyczyn± ale wykonalem dwie czynnosci ktore mogly powodowac ze odbieralem jakies smieci (a w konsekwencji program tez sie niekiedy sypal).

  1. Zmienilem polaczenie Pinu ENA wyswietlacza LCD z uC (z PD2-INT0 zmienilem go na PD7.).
  2. Wywalilem z przerwania czasochlonne "czynnosci" czyli: Wait 2 CLS i LCD "......" wstawilem w procedure obslugi przerwan flagi a wyswietlacz obsluguje w programie glownym. Nie wiem co z tych dwoch rzeczy moglo byc przyczyn± ale POMOGLO!

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required