buldozerrr 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба Всем доброго времени суток. Пытаюсь подружить 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 тоже не получается. Подскажите каким способом можно обнаружить в чем проблема без осцилографа, или может кто то сталкивался с такой проблемой, у меня вариантов уже не осталось. Заранее благодарен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kernel 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 (изменено) · Жалоба Мега работает от 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 Изменено 14 сентября, 2010 пользователем kernel Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
buldozerrr 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 (изменено) · Жалоба Мега работает от 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 работало? Изменено 14 сентября, 2010 пользователем buldozerrr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kernel 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 · Жалоба Все работает на 3,3 проверял... Все работает - это когда работает все, в том числе и связь с ENC28J60. Я думаю полностью нормальную работу atmega128, запущенной на частоте 16MHz от 3.3В, Atmel не гарантирует. В этом режиме именно с enc28j60 работало? В этом режиме работало все, что было нацеплено на SPI, в том числе и enc28j60. В свое время, когда я ловил проблемы с прочитыванием ENC28J60 и не мог понять где проблема, мне сильно помог проект с tuxgraphics`а. Попробуйте скачать его оттуда - исправлять там мало, зато 100% работающий проект, который определит проблема в софте или hardware. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
buldozerrr 0 14 сентября, 2010 Опубликовано 14 сентября, 2010 (изменено) · Жалоба kernel большое спасибо за помощь, разобрался портировал пример туксграфикса потом пропаял еще раз плату и в этоге мегу в колодке подергал и все заработало (не тумал что колодка так может все подпортить - целых 2 дня), радости нет предела. Теперь и uIP работает и с тукса проект. Изменено 14 сентября, 2010 пользователем buldozerrr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться