Wiem, wiem :) Miałem czytać manuala. No i czytałem. Już cały rozdział o SPI przeczytałem i nic :| Problem wygląda tak: mam układ w postaci łańcucha '595 (12 sztuk). Aby było łatwo, przyjemnie i szybko chcę go zaprogramowywac poprzez SPI. No łatwo to nie jest, przyjemnie nie wiem a czy szybko to mam nadzieje że się kiedyś dowiem. Jakkolwiek nie spróbuję skonfigurować SPI, to mi to ustrojstwo nie działa :/ Najpierw próbowałem poprzez klasyczną komendę Bascoma "Config SPI". Wałkowałem ją na wszelkie sposoby (chyba) i nic. Później spróbowałem przerobić przykład w postaci kodu asemblera z manuala. Też nic. Już nie wiem co począć, drugi dzień się z tym męczę (wiem, dla niektórych to mało :)) i nie wiem co począć. Dodam tylko że układ który ma być zaprogramowany działa, bo gdy ręcznie podawałem stany na poszczególne linie sterujące to mi sie wszystki '595 ładnie i posłusznie ustawiały. Za wszelką pomoc (np. w postaci działajacego kodu konfiguracji w bascomie :P) serdecznie dziękuję :)
ATmega128 i SPI
Nov 15, 2004
11 Replies
U¿ytkownik "Mateusz Majchrzycki" snipped-for-privacy@spam.spam napisa³ w wiadomo¶ci news:Xns95A2C465AB4DDXNSMateoM@192.168.0.1...
Mo¿e poda³by¶ sposob pod³±czenia do ATmegi, bo tu te¿ mo¿e byæ problem?
QmX.
Pewnego dnia QmX snipped-for-privacy@interia.pl nastukał(a):
No żadne nadzwyczajne: ATmega '595 SCK (PB1) SH_CP MOSI (PB2) Ds PA7 /OE PA6 ST_CP PA5 /MR Liniami SCK i MOSI powinien sterować SPI, liniami PA7,6,5 steruję już ręcznie (wykasowanie wszystkich '595 na dzień dobry oraz wyrzucenie zawartości rejestrów '595 na wyjścia po zakończeniu transmisji).
U¿ytkownik "Mateusz Majchrzycki" snipped-for-privacy@spam.spam napisa³ w wiadomo¶ci news:Xns95A3E2AB1FCC4XNSMateoM@192.168.0.1...
Wygl±da dobrze. :-)
Je¶li ustawi³e¶ SPI w tryb Master, to powinno chodziæ, przynajmniej na którym¶ z ustawieñ faz zegara.
QmX.
Pewnego dnia QmX snipped-for-privacy@interia.pl nastukał(a):
No własnie. Wygląda, ale nie działa :/
No wszystkie 4 kombinacje przetestowałem i nic :/ A czy to normalne że na linii SCK mam -0,2V a na MOSI -0,6V?
wzgledem czego? masy? Skąd? Względem Vcc to moż być...
Multimetr kłamie. Sprawdź oscyloskopem.
Pewnego dnia Adam Dybkowski snipped-for-privacy@amwaw.edu.pl> nastukał(a):
Może i kłamie, ale oscyloskopu pod ręką niestety nie mam :( Ale jest jeszcze jedna sprawa. Gdy na tych samych dwóch pinach (czyli pb1 i pb2) zasymuluję sobie programowo ISP (ręczne zadawanie stanów i zegara) to wszysto ładnie działa. Czyli porty uszkodzone nie są. Tu jest kwestia czegoś innego... Tylko czego? :/
Pewnego dnia Marek Lewandowski snipped-for-privacy@onet.pl nastukał(a):
No właśnie się przyjżałem jeszcze raz i rzeczywiście, mierzyłem przez przypadek względem Vcc. Ale to i tak nie zmienia faktu ze coś nie działa :/ Już chyba wszystko przetestowałem i nic :/
U¿ytkownik "Mateusz Majchrzycki" snipped-for-privacy@spam.spam napisa³ w wiadomo¶ci news:Xns95A4DF637363CXNSMateoM@192.168.0.1...
Interfejs SPI w ATmedze128 ma swoje "udziwnienia". :-) Jak u¿ywasz i jak masz zdefiniowany pin PB0 (SS\)? Nie¶wiadome u¿ycie tego jako wej¶cie mo¿e zak³ócaæ normaln± pracê SPI (przewidziany do wykorzystania w systemach wielomasterowych). Musisz ustawiæ odpowiednio kierunki portów (wej./wyj.), bo samo w³±czenie SPI nie wystarczy. Przyk³ad znajdziesz w PDFie.
QmX.
Pewnego dnia QmX snipped-for-privacy@interia.pl nastukał(a):
A to ciekawe :D
Szczerze mówiąc nie mam pojęcia. Pisząc w Bascomie ejstem raczej zdany na jego łaskę i niełaskę. Ale spróbuję jeszcze sie pobawić ze wstawkami asemblerowymi. Moze konfiguracja przy ich pomocy coś da?
No własnie kod z przykładu zerżnąłem raz (z małymi poprawkami), ale i tak nie działało :/
Pewnego dnia Mateusz Majchrzycki snipped-for-privacy@spam.spam nastukał(a):
Nie wiem jak, ale w końcu zadziałało. Dla potomnych przedstawiam metode jak to zrealizowałem (niestety bascomowe config spi nie działa):
--------kod---------- $regfile = "m128def.dat" Config Portb = &B11110111 'Ustawiamy cały port b jako wyjście, a PB.3 (czli MISO) jako we. Portb = &B11111000 'SCK, MOSI i /SS ustawiamy na 0, resztę n 1. Spcr = &B01010011 'ustawiamy sobie rejestr kontrolny SPI
--------koniec-kodu------
Później aby coś wysłać robimy:
------kod-------- Spdr = do_wyslania 'do rejestru spdr zapisujemy bajt do wysłania $asm Wt1: sbis Spsr,Spif rjmp wt1 $end Asm 'i sobie czkamy na ustawienie SPIF (czyli na zakończenie transmisji)
----koniec-kodu--------
Tak się teraz zastanawiam czym to się różni od tego co robi Config Spi :/ Moze jak sie będę nudził to porównam. Ważne że działa i to się liczy :P
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required