Przesiadka z PIC16F na PIC18F. Znowu marketing mnie przerobil?

Feb 01, 2006 8 Replies

Witam, Uwierzyłem, że PIC18 może być szybszy. Chodzi mi o problemy z transmisją SPI. Na PIC16F876A mialem tak wrb2 movlw ' ' movwf SSPBUF nop nop nop nop nop decfsz licz2,F goto wrb2 Zmieniłem w układzie procesor na PIC18F2525. Dokonałem w programie tylko niezbędnych zmian. W zakresie SPI nie zmieniałem nic. Okazało się, że muszę dodać 2 nopy w pętli. Co może być nie tak? Mogłem o czymś zapomnieć? Czy też po prostu na nowym procesorze transmisja jest wolniejsza? Może ktoś coś podpowie.



Pozdrawiam


Mo¿e byæ, gdy¿ mo¿na taktowaæ 40 MHz.

Bez oscyloskopu mo¿e byæ trudno cokolwiek stwierdziæ.

-- . pozdrawiam Sylwester £azar

formatting link
-oprogramowanie do edycji schematów i projektowania PCB

Niestety odpada. Muszę mieć 18,432

A co mógłbym stwierdzić oscyloskopem? Problem w tym, że bloki SPI obydwu procesorów zachowują się różnie. Może są potrzebne jakieś zmiany w konfigurowaniu rejestrów. Niestety jakoś nic nie zauważyłem w dokumentacji.

A w ogóle po co ten nop'y, nie możesz sprawdzać flagi jak u ludzi?

pozdrawiam, sword

He he. Zależy u jakich ludzi :) Po pierwsze primo sprawdzanie flagi wydłuża niepotrzebnie pętlę. Szczególnie w PIC16F gdzie stosowne rejestry są w różnych bankach.

Po drugie primo gdybym sprawdzał flagę to pewnie nie dowiedziałbym się, że transmisja idzie wolniej.

Po trzecie primo w dataszicie od PIC18F2525 powiedziano że przy 40MHz kwracu można realizować przepływ 10 Mbps. Chciałbym zobaczyć program który to realizuje.

Flaga SSPIF jest w banku 0 więc to nie ma znaczenia, przetestowanie to dwa rozkazy plus jej wykasowanie daje razem 3. Zakładając dwukrotny przebieg tej pętli to wychodzi na to samo co te nopy, a sposób wydaje mi się pewniejszy, no i jakoś dla ludzi ;)

Po to właśnie przydałby się oscyloskop, podepnij i zobaczysz jak to wygląda w porównaniu.

Pozdrawiam, sword

Przyznaję, że zwiedziony dokumentacją, zastanawiałem się nad testowaniem flagi BF. Nie zmienia to jednak faktu, że pętla z testowaniem flagi musi być z definicji dłuższa. Odbiegliśmy jednak od istoty. Moje pytanie jest następujące. Co jest przyczyną tego, że po zmianie procesora musiałem wydłużyć pętlę? I dalej, czy można tak skonfigurować PIC18, żeby wysyłanie danych trwało tak samo długo jak w przypadku PIC16.

moki1 napisał(a):

Bloki funkcjonalne w procesorach wcale nie muszą i czesto nie zachowują się identcznie. Występują różnice między rodzinami oraz między technologiami. Ostatnio byłem wielce zaskoczony, kiedy prz przejściu z

18F6620 na 6722 (niby prawie to samo, tylko pamięci więcej) Microchip strasznie pogmerał w UART-cie. Miało być lepiej a wyszło gorzej. W nowym scalaku umieszczono zasoby do autodetekcji prędkości i kilka innych bajerów w transmisji szeregowej a okazało się że nie tylko to wcale nie działa jak trzeba, to jeszcze trzeba oddzielać bajty półbitowym odstępem bo inaczej transmisja nie trzyma timingu, czyli transmisja idzie wolniej i nic sie nie da zrobić! Babole występują też w bloku I2C/SPI. Tak więc ściągnij erratę do tego układu i tam poszukaj odpowiedzi na swoje wątpliwości, być może znajdziesz przyczynę. Na szczęście czytanie Microchipowej dokumentacji drukowanej zwykle wyjaśnia zagadki.

Dzięki. Nie znalazłem odpowiedzi na mój problem. Ciekawych rzeczy można tam sie jednak dowiedzieć. Polecam wszystkim.

formatting link
razu na pierwszej stronie. Wzór na częstotliwość taktowania I2C jest naprawdę piękny. Nie wykluczam, że to z czym usiłuję się uporać ma z tym związek.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required