Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 10 mar 2025, o 12:53


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 2 gru 2016, o 15:59 
Offline
Nowy

Dołączył(a): 09 paź 2016
Posty: 3
Pomógł: 0

Witam wszystkich.

Jestem początkującym programistą i zaczynam powoli zabawę z AVR, studiuję bluebooka i doszedłem do pierwszego poważniejszego problemu.
Zaimplementowany serwer www niestety kompletnie nie reaguje na próbę pingowania.

Korzystam z Atmegi328p (jeżeli to ma jakiś wpływ to dokładniej na płytce arduino uno, lecz z arduino nie ma nic więcej wspólnego, programy piszę w C i kompiluję w Atmel Studio)

Co ciekawe ten sam program wgrany na atmege 8 (po poprawkach deklaracji portów z PORTB na PB itd) działa, że tak powiem od strzała, pinguje, strona w przeglądarce się ładuje i wszystko jest ok. Gdy wgram ten program na atmega328p zero jakiejkolwiek reakcji.
Od kilku dni przeglądam noty katalogowe Atmegi 8 i 328p aby znaleźć jakieś różnice w kodzie, ale inicjalizacja SPI wygląda w obu uC tak samo, z wyjątkiem rejestru PRR w atmedze 328p, aby mieć pewność, że zegar jest podpięty do interfejsu SPI wpisałem w niego na bit PRSPI 0, tak jak mówi datasheet. zero zmian.

Moduł ethernet ENC28j60 działa poprawnie tj. zielona dioda świeci, pomarańczowa mruga, podczas prób pingowania pomarańczowa mruga częściej, czyli tak jak być powinno gdy odbiera pakiety więc wszystko wskazywało by na winę leżącą albo w kodzie albo w płytce arduino, reset na arduino resetuje atmege i enc. Walczę już od kilku dni z tym problemem ale bezskutecznie.

Podłączenia uC -> ENC:
MOSI (PORTB3) -> SI
MISO (PORTB4) -> SO
SCK (PORTB5) -> SCK
SS (PORTB2) -> CS
RST (PORTC6) -> RESET

Zasilanie:
Tutaj próbowałem zasilać poprzez programator USBASP całą płytkę arduino a z pinu 3v3 zasilam enc (A328p 16MHz zewnętrzny kwarc)- brak pingu
Zasilanie zewnętrzne 3v3 USBASP odłączony (A328p wewnętrzny oscylator 8MHz) - brak pingu
Atmega 8 na której działał serwer www była zasilana z zewnętrznego zasilania 3v3 z odłączonym USBASP oraz wewnętrzny oscylator 8MHz
Kwestia zasilania raczej odpada w takim wypadku oraz podłączeń tym bardziej, że oba uC linie SPI mają nawet na tych samych portach i pinach.

Co do inicjalizacji SPI, wygląda u mnie ona tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W oryginalnym kodzie było jeszcze takie coś:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tego nie za bardzo rozumiem, dlaczego wpisując do rejestru DDRB jedynki ustawia się MOSI i SCK w stan niski skoro te wyjścia nie są zanegowane tak jak SS.
W każdym razie próbowałem to kasować, zmieniać na wpisywanie pod te bity zera ale i tak ping nie odpowiedział.

Ktoś może spotkał się z takim problemem, i wie co może być nie tak?
Dodam, że SPI fizycznie działa ponieważ też uznałem, że którys port mógł ulec uszkodzeniu więc na szybko podpiąłem czytnik kart SD i jakiś przykładowy kod (akurat w arduino ponieważ chciałem tylko sprawdzić czy działa komunikacja) i z kartą SD procesor się komunikował.

Wszystko by wskazywało na jakiś błąd w samym programie do serwera www lecz nie potrafię bez pomocy go znaleźć.

Pozdrawiam serdecznie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 gru 2016, o 22:23 
Offline
Nowy

Dołączył(a): 09 paź 2016
Posty: 3
Pomógł: 0

Nikt nie jest w stanie pomóc? ;/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 gru 2016, o 11:50 
Offline
Nowy

Dołączył(a): 09 paź 2016
Posty: 3
Pomógł: 0

Chyba udało się rozwiązać problem. Okazało się że wina leżaął w zasilaniu, linia 3v3 z arduino dawała tylko około 3v zasilania co widać było za mało dla ENC.
Podpiąłem osobne zasilanie 3v3 masy połączyłem i ruszyło.
Mam niestety kolejny problem.
Układ jest mało stabilny, Atmega zasilana z 5v i taktowana kwarcem 16MHz i sprawa wygląda tak, że układ działa kilkadziesiąt minut i sie zawiesza, czasem pinguje przez 30minut i zawiesi się, a gdy w przeglądarce wpisze IP i wydrukuje stronę to układ zawiesza się od razu. Jakieś pomysły?
ENC podłączony bezpośrednio do uC, czy to może być wina? może lepiej zastosować jakiś konwerter poziomów logicznych?
Korzystam z pinu INT w układzie ENC, w programie w przerwaniu wywoływana jest wtedy funkcja która w bluebooku jest umieszczona w pętli while, czyli drukowanie strony.

Dodam, że na lini SPI podłączoną mam również kartę SD na której zapisują się dane i też z tym bywa różnie tj czasem sie zapisują ładnie czasem przestają a czasem tworzy sie nowy plik o rozmiarze 0kB i przy jego otwieraniu wyskakuje błąd, że nie ma takiego pliku.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO