Перейти к содержанию
    

ATmega128 + enc28j60

Всем доброго времени суток.

Пытаюсь подружить atmega128 и enc28j60. ATmega128 установлена в STK501 соответственно с ней проблем быть не должно, под enc28j60 сделал плату сам по схеме модуля от olimex, единственное отличие в том, что у меня не magjak, а транс + RG45. При включении питания и вставленном патчкорде от роутера линк загорается и второй светодиод помигивает вроде как и должно быть, так же если тактировать мегу от clkout мелкочипа контроллер работает по, так как нет осцилографа мигаю светодиодом и передаю в терминал - 6,25 Mhz вроде как есть и похоже что мелочип запустился, однако не получается ни считать данные ни записать в enc28j60.

Соеденил два чипа так: 0dbecc027f53t.jpg

 

Код пишу в AVR studio + WinAvr используя драйвер Паскаля Стенга который почти во всех проектах с uIP присутствует:

 

выводы объявлены так:

#define ENC28J60_SPI_PORT PORTB

#define ENC28J60_SPI_DDR DDRB

#define ENC28J60_SPI_SCK PORTB1

#define ENC28J60_SPI_MOSI PORTB2

#define ENC28J60_SPI_MISO PORTB3

#define ENC28J60_SPI_SS PORTB0

// ENC28J60 control port

#define ENC28J60_CONTROL_PORT PORTB

#define ENC28J60_CONTROL_DDR DDRB

#define ENC28J60_CONTROL_CS PORTB0

 

часть функции инициализации выглядит так:

 

// initialize I/O

sbi(ENC28J60_CONTROL_DDR, ENC28J60_CONTROL_CS);

sbi(ENC28J60_CONTROL_PORT, ENC28J60_CONTROL_CS);

 

// setup SPI I/O pins

sbi(ENC28J60_SPI_PORT, ENC28J60_SPI_SCK); // set SCK hi

sbi(ENC28J60_SPI_DDR, ENC28J60_SPI_SCK); // set SCK as output

cbi(ENC28J60_SPI_DDR, ENC28J60_SPI_MISO); // set MISO as input

sbi(ENC28J60_SPI_DDR, ENC28J60_SPI_MOSI); // set MOSI as output

sbi(ENC28J60_SPI_DDR, ENC28J60_SPI_SS); // SS must be output for Master mode to work

// initialize SPI interface

// master mode

sbi(SPCR, MSTR);

// select clock phase positive-going in middle of data

cbi(SPCR, CPOL);

// Data order MSB first

cbi(SPCR,DORD);

// switch to f/4 2X = f/2 bitrate

cbi(SPCR, SPR0);

cbi(SPCR, SPR1);

sbi(SPSR, SPI2X);

// enable SPI

sbi(SPCR, SPE);

 

Нет ли ошибки в инициализации SPI?

 

Пробовал мегу тактировать от мелкочипа и от кварца 16 Mhz пытаюсь прочитать ревизию чипа через spi и вывести в терминал - приходит 0x00 так же пробовал отключить CLKOUT тоже не получается.

Подскажите каким способом можно обнаружить в чем проблема без осцилографа, или может кто то сталкивался с такой проблемой, у меня вариантов уже не осталось.

Заранее благодарен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мега работает от 5 Вольт (судя по тому, что 16 MHz), а enc28j60 3.3 В? Если да, то уровни поднимать не забыли?

По инициализации SPI ничего не подскажу (даташита atmega128 нет под рукой), но на меге16 в инициализации SPI мне хватало вот этого:

    ldi     r24,(1<<MSTR) | (1<<SPE) ; Master Mode,  Enable SPI
    out     SPCR,r24

    ldi     r24,(1<<SPI2X)        ; double speed bit
    out     SPSR,r24

Изменено пользователем kernel

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мега работает от 5 Вольт (судя по тому, что 16 MHz), а enc28j60 3.3 В?

Все работает на 3,3 проверял светодиод моргает нисмотря на низкий вольтаж и высокую частоту

 

    ldi     r24,(1<<MSTR) | (1<<SPE); Master Mode,  Enable SPI
    out     SPCR,r24

    ldi     r24,(1<<SPI2X)    ; double speed bit
    out     SPSR,r24

В этом режиме именно с enc28j60 работало?

Изменено пользователем buldozerrr

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все работает на 3,3 проверял...

Все работает - это когда работает все, в том числе и связь с ENC28J60. Я думаю полностью нормальную работу atmega128, запущенной на частоте 16MHz от 3.3В, Atmel не гарантирует.

В этом режиме именно с enc28j60 работало?

В этом режиме работало все, что было нацеплено на SPI, в том числе и enc28j60.

 

В свое время, когда я ловил проблемы с прочитыванием ENC28J60 и не мог понять где проблема, мне сильно помог проект с tuxgraphics`а. Попробуйте скачать его оттуда - исправлять там мало, зато 100% работающий проект, который определит проблема в софте или hardware.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

kernel большое спасибо за помощь, разобрался портировал пример туксграфикса потом пропаял еще раз плату и в этоге мегу в колодке подергал и все заработало (не тумал что колодка так может все подпортить - целых 2 дня), радости нет предела.

Теперь и uIP работает и с тукса проект.

Изменено пользователем buldozerrr

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...