Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATmega128 + enc28j60
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
buldozerrr
Всем доброго времени суток.
Пытаюсь подружить 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
Мега работает от 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
buldozerrr
Цитата(kernel @ Sep 14 2010, 18:31) *
Мега работает от 5 Вольт (судя по тому, что 16 MHz), а enc28j60 3.3 В?

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

Цитата(kernel @ Sep 14 2010, 18:31) *
Код
    ldi     r24,(1<<MSTR) | (1<<SPE); Master Mode,  Enable SPI
    out     SPCR,r24

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

В этом режиме именно с enc28j60 работало?
kernel
Цитата
Все работает на 3,3 проверял...

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

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

В свое время, когда я ловил проблемы с прочитыванием ENC28J60 и не мог понять где проблема, мне сильно помог проект с tuxgraphics`а. Попробуйте скачать его оттуда - исправлять там мало, зато 100% работающий проект, который определит проблема в софте или hardware.
buldozerrr
kernel большое спасибо за помощь, разобрался портировал пример туксграфикса потом пропаял еще раз плату и в этоге мегу в колодке подергал и все заработало (не тумал что колодка так может все подпортить - целых 2 дня), радости нет предела.
Теперь и uIP работает и с тукса проект.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.