Всем доброго времени суток.
Пытаюсь подружить atmega128 и enc28j60. ATmega128 установлена в STK501 соответственно с ней проблем быть не должно, под enc28j60 сделал плату сам по схеме модуля от olimex, единственное отличие в том, что у меня не magjak, а транс + RG45. При включении питания и вставленном патчкорде от роутера линк загорается и второй светодиод помигивает вроде как и должно быть, так же если тактировать мегу от clkout мелкочипа контроллер работает по, так как нет осцилографа мигаю светодиодом и передаю в терминал - 6,25 Mhz вроде как есть и похоже что мелочип запустился, однако не получается ни считать данные ни записать в enc28j60.
Соеденил два чипа так:
Код пишу в 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 тоже не получается.
Подскажите каким способом можно обнаружить в чем проблема без осцилографа, или может кто то сталкивался с такой проблемой, у меня вариантов уже не осталось.
Заранее благодарен.