реклама на сайте
подробности

 
 
> ATmega128 + enc28j60, проблема с SPI
buldozerrr
сообщение Sep 14 2010, 09:49
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 6-01-07
Пользователь №: 24 161



Всем доброго времени суток.
Пытаюсь подружить 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 тоже не получается.
Подскажите каким способом можно обнаружить в чем проблема без осцилографа, или может кто то сталкивался с такой проблемой, у меня вариантов уже не осталось.
Заранее благодарен.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 04:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01325 секунд с 7
ELECTRONIX ©2004-2016