eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaDziwne zachowanie ENC28J60 po softresecie ATmegi
Ilość wypowiedzi w tym wątku: 36

  • 11. Data: 2014-07-08 21:21:13
    Temat: Re: Dziwne zachowanie ENC28J60 po softresecie ATmegi
    Od: Atlantis <m...@w...pl>

    Hmm... Jedno jest pewne, to nie jest problem sprzętowy.
    Spróbowałem odpalić instrukcję programowego resetu przez watchdoga na
    drugim egzemplarzu tego samego urządzenia - efekt taki sam. Potem
    zrobiłem to samo na płytce prototypowej z ENC28J60 i ATmegą 328. Program
    zachowuje się dokładnie tak samo za każdym razem.

    Używam biblioteki Tuxgraphics, a moje urządzenia są wzorowane na
    schematach płytek z tej strony (MCU taktowany z pinu CLKOUT ENC28J60).

    Gdzieś musi być błąd. Tylko jaki błąd może powodować takie zachowanie
    urządzenia? Po włączeniu zasilania inicjacja przebiega normalnie, ale po
    resecie przez watchdoga już nie...


  • 12. Data: 2014-07-08 21:22:48
    Temat: Re: [OT] Dziwne zachowanie ENC28J60 po softresecie ATmegi
    Od: "ACMM-033" <v...@i...pl>


    Użytkownik "AlexY" <a...@i...pl> napisał w wiadomości
    news:lph7hj$ks2$1@dont-email.me...
    > Użytkownik Włodzimierz Wojtiuk napisał:
    >> On 2014-07-07 20:48, feldmarszałek tusk wrote:
    >>> dziwne rzeczy dzieją się ostatnio z tymi wszystkimi naszymi
    >>> projektami...
    >>
    >> To są jeszcze inne trolle, które coś projektują?
    >
    > Myślisz że ten troll cokolwiek zaprojektował?

    <Wiech mode>
    Pewne stronkie internetowe...
    </Wiech>

    --
    Spamerów i "pytaczy" informuję, iż bardzo narażają się na to, że ich
    adresy e-mail będą podawane harwesterom służącym do rozsyłania spamu.


  • 13. Data: 2014-07-08 23:21:24
    Temat: Re: Dziwne zachowanie ENC28J60 po softresecie ATmegi
    Od: Marek <f...@f...com>

    On Tue, 08 Jul 2014 21:21:13 +0200, Atlantis <m...@w...pl>
    wrote:
    > Używam biblioteki Tuxgraphics, a moje urządzenia są wzorowane na
    > schematach płytek z tej strony (MCU taktowany z pinu CLKOUT
    ENC28J60).

    Tak trochę z imnej beczki ale może Cię zainteresuje: do swojej płytki
    z encj dołożyłem moduł wifi mrf24wg (współdzieli spi z encj) i jeśli
    chodzi o uzyskane transfery to ten moduł wifi jest bez porównania
    szybszy niż encj przy połowie prędkości spi (wifi 10Mhz, encj
    20Mhz). Pewnie dlatego, że driver do mrf używa przerwań a nie pooling
    jak encj...

    --
    Marek


  • 14. Data: 2014-07-09 00:18:59
    Temat: Re: Dziwne zachowanie ENC28J60 po softresecie ATmegi
    Od: Adam Górski <gorskiamalpa@wpkropkapl>

    W dniu 2014-07-08 20:40, Atlantis pisze:
    > BTW czy reset ENC28J60 w procedurze inicjującej pracę układu jest
    > przeprowadzony prawidłowo?
    >
    > #define ENC28J60_SOFT_RESET 0xFF
    > (...)
    > enc28j60WriteOp(ENC28J60_SOFT_RESET, 0, ENC28J60_SOFT_RESET);
    > _delay_loop_2(0); // 20ms
    >

    Poproszę trochę obszerniej z tym źródłem. Ale bez przesady.
    Mogę się domyślać że argumenty to opcode,addres,databyte .....
    Ale dlaczego enc28j60WriteOp(0xff, 0, 0xff) ? Jakieś maski ?
    Databyte nie występuje ....
    czyli

    1. Cs w dół.
    2. byte 0xff
    3. Cs w górę


    Czekać na startup.

    Ale co robi enc28j60..... to ja nie wiem bo to Twoje dzieło.


    Pzdr

    Adam

    ---
    Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ
    ochrona avast! Antivirus jest aktywna.
    http://www.avast.com


  • 15. Data: 2014-07-09 05:57:51
    Temat: Re: Dziwne zachowanie ENC28J60 po softresecie ATmegi
    Od: Atlantis <m...@w...pl>

    W dniu 2014-07-09 00:18, Adam Górski pisze:

    > Poproszę trochę obszerniej z tym źródłem. Ale bez przesady.
    > Mogę się domyślać że argumenty to opcode,addres,databyte .....

    Sama funkcja wygląda następująco:

    void enc28j60WriteOp(uint8_t op, uint8_t address, uint8_t data)
    {
    CSACTIVE;
    // issue write command
    SPDR = op | (address & ADDR_MASK);
    waitspi();
    // write data
    SPDR = data;
    waitspi();
    CSPASSIVE;
    }

    Makrodefinicja ADDR_MASK to 0x1F

    Część odpowiadająca za soft reset układu przy inicjalizacji jest
    zrobiona prawidłowo? Bo myślałem nawet o przesiadce na uIP, ale tego co
    widzę, to sterownik ENC28J60 z tej biblioteki ma bardzo podobhnie
    zrealizowaną funkcję resetu.


    BTW Jak powinno się resetować układ za pomocą pinu RESET? Bo próbowałem
    czegoś takiego:

    RSTACTIVE; //makrodefinicja ustawiająca stan niski na odpowiedniej linii
    _delay_loop_2(0);
    RSTPASSIVE;
    _delay_loop_2(0);

    W efekcie nawet nie zaświeciła się żadna dioda na gniazdku RJ45...


  • 16. Data: 2014-07-09 10:19:54
    Temat: Re: Dziwne zachowanie ENC28J60 po softresecie ATmegi
    Od: Atlantis <m...@w...pl>

    W dniu 2014-07-09 05:57, Atlantis pisze:

    > void enc28j60WriteOp(uint8_t op, uint8_t address, uint8_t data)
    > {
    > CSACTIVE;
    > // issue write command
    > SPDR = op | (address & ADDR_MASK);
    > waitspi();
    > // write data
    > SPDR = data;
    > waitspi();
    > CSPASSIVE;
    > }
    >
    > Makrodefinicja ADDR_MASK to 0x1F

    Hmm... Tak się przyglądam temu i coś mi tu nie pasuje. W nocie
    katalogowej ENC28J60 na stronie 28 i 32 podano informację, że za komendę
    soft resetu odpowiada wysłanie sekwencji ośmiu bitów "1".

    Tymczasem wywołanie tej funkcji jako enc28j60WriteOp(0xFF, 0, 0xFF)
    spowoduje wysłanie 16 "jedynek". Bo najpierw wysyłamy wynik operacji:
    0xFF | (0x00 & 0x1F)
    Co daje 0xFF.
    Potem jeszcze raz wysyłamy 0xFF.

    Czy w takim razie reset nie jest przeprowadzany w zły sposób? A może ja
    coś pomieszałem?


  • 17. Data: 2014-07-09 12:37:38
    Temat: Re: Dziwne zachowanie ENC28J60 po softresecie ATmegi
    Od: Adam Górski <gorskiamalpa@wpkropkapl>

    W dniu 2014-07-09 10:19, Atlantis pisze:
    > W dniu 2014-07-09 05:57, Atlantis pisze:
    >
    >> void enc28j60WriteOp(uint8_t op, uint8_t address, uint8_t data)
    >> {
    >> CSACTIVE;
    >> // issue write command
    >> SPDR = op | (address & ADDR_MASK);
    >> waitspi();
    >> // write data
    >> SPDR = data;
    >> waitspi();
    >> CSPASSIVE;
    >> }
    >>
    >> Makrodefinicja ADDR_MASK to 0x1F
    >
    > Hmm... Tak się przyglądam temu i coś mi tu nie pasuje. W nocie
    > katalogowej ENC28J60 na stronie 28 i 32 podano informację, że za komendę
    > soft resetu odpowiada wysłanie sekwencji ośmiu bitów "1".
    >
    > Tymczasem wywołanie tej funkcji jako enc28j60WriteOp(0xFF, 0, 0xFF)
    > spowoduje wysłanie 16 "jedynek". Bo najpierw wysyłamy wynik operacji:
    > 0xFF | (0x00 & 0x1F)
    > Co daje 0xFF.
    > Potem jeszcze raz wysyłamy 0xFF.
    >
    > Czy w takim razie reset nie jest przeprowadzany w zły sposób? A może ja
    > coś pomieszałem?
    >

    Wysyłasz za dużo. Czy to ma znaczenie - nie wiem.

    Adam

    ---
    Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ
    ochrona avast! Antivirus jest aktywna.
    http://www.avast.com


  • 18. Data: 2014-07-09 20:27:03
    Temat: Re: Dziwne zachowanie ENC28J60 po softresecie ATmegi
    Od: Atlantis <m...@w...pl>

    W dniu 2014-07-09 12:37, Adam Górski pisze:

    > Wysyłasz za dużo. Czy to ma znaczenie - nie wiem.

    Ciągle nie to. :/
    Spreparowałem funkcję wysyłającą 0xFF. Układ ruszył tak samo jak
    przedtem, i tak samo zawiesił się po resecie. :/

    Swoją drogą jak prawidłowo zresetować sprzętowo ENC28J60? Na jak długo
    mam ustawić RESET na stan niski? Bo przy _delay_loop_2(0) jakby nie
    wstawał w ogóle - nie świecą się diody.


  • 19. Data: 2014-07-09 20:50:23
    Temat: Re: Dziwne zachowanie ENC28J60 po softresecie ATmegi
    Od: Adam Górski <gorskiamalpa@wpkropkapl>

    W dniu 2014-07-09 20:27, Atlantis pisze:
    > W dniu 2014-07-09 12:37, Adam Górski pisze:
    >
    >> Wysyłasz za dużo. Czy to ma znaczenie - nie wiem.
    >
    > Ciągle nie to. :/
    > Spreparowałem funkcję wysyłającą 0xFF. Układ ruszył tak samo jak
    > przedtem, i tak samo zawiesił się po resecie. :/
    >
    > Swoją drogą jak prawidłowo zresetować sprzętowo ENC28J60? Na jak długo
    > mam ustawić RESET na stan niski? Bo przy _delay_loop_2(0) jakby nie
    > wstawał w ogóle - nie świecą się diody.
    >
    1) Co to znaczy : "się zawiesił". Nie istnieje takie pojęcie.
    Zawiesić to się może jak zegar zniknie.
    Wisi gdzieś czekając na coś. Na co ?


    2)Gdzieś widziałem w dokumentacji minimum 2us.

    Pzdr

    Adam

    ---
    Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ
    ochrona avast! Antivirus jest aktywna.
    http://www.avast.com


  • 20. Data: 2014-07-10 15:52:48
    Temat: Re: Dziwne zachowanie ENC28J60 po softresecie ATmegi
    Od: Atlantis <m...@w...pl>

    W dniu 2014-07-09 20:50, Adam Górski pisze:

    > 1) Co to znaczy : "się zawiesił". Nie istnieje takie pojęcie.
    > Zawiesić to się może jak zegar zniknie.
    > Wisi gdzieś czekając na coś. Na co ?

    Tak jak mówiłem - po zresetowaniu ATmegi przez watchdoga nie mogę
    ponownie nawiązać połączenia z układem, a jedna z diod na gniazdku RJ45
    (ta, która normalnie świeci cały czas) dość szybko miga. Pomaga dopiero
    ponowne uruchomienie układu przez chwilowe odcięcie zasilania.


    > 2)Gdzieś widziałem w dokumentacji minimum 2us.

    A jest jakieś maksimum? Bo próbowałem resetu sprzętowego, ustawiając pin
    na stan nisku na kilkadziesiąt-kilkaset ms. Układ w ogóle nie łączył się
    z siecią - to znaczy nawet nie zaświeciła się żadna dioda.

strony : 1 . [ 2 ] . 3 . 4


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: