Зачем использовать ATmega88 вместо ATmega8 при подключении к Ethernet через ENC28J60?

Я знаю общие различия между семейством ATmegaX8 (ATmega88, ATmega168 и ATmega328) и семейством ATmegaX (ATmega8, ATmega16 и ATmega32).

Но я в замешательстве, так как, когда я собирался работать над проектом по подключению ATmega8 к Ethernet с помощью чипа ENC28J60 , я обнаружил, что большинство проектов в Интернете используют ATmega88 и ATmega168, особенно те, что на tuxgraphics.org :

И когда я попытался портировать эти исходники для работы с ATmega8 вместо ATmega88, то столкнулся с проблемой многократного прескалирования частоты и некоторыми другими проблемами. Мне не удалось получить код .hex, который работает на ATmega8.

Так почему же ATmega88 и его семейство лучше подходят для подключения к Ethernet, чем ATmega8?

Почему бы вам не прочитать таблицы данных и не спросить, если что-то не ясно?
Этот вопрос слишком широк, и на него невозможно дать разумный ответ в его нынешнем виде. RTFM, затем вернитесь с конкретными вопросами о том, что вы не поняли. Мы здесь не для того, чтобы заменить получение информации из очевидных источников, таких как таблицы данных. Мы здесь, чтобы помочь вам интерпретировать эти источники, если вы обнаружите что-то, чего не понимаете.
@LeonHeller Я думаю, он спрашивает об общей разнице между семьями mega8 и mega 88.
Это в техпаспорте! Вопрос следует закрыть.
@mina_g Мне потребовалось всего 30 секунд, чтобы найти информацию ниже в Google, поэтому постарайтесь усерднее, прежде чем задавать вопрос здесь.
@m.Alin: Ему не нужно, теперь, когда ты показал, что лень окупается. Суть была в том, чтобы отправить этого парня домой без печенья. К сожалению, требуется только один участник, который не получит его, прежде чем вопрос будет закрыт. Вздох.
@OlinLathrop Извините за это, но я хотел показать ОП, что информация действительно существует.
@m.Alin спасибо .. я нашел это, но мне было интересно, почему эти ATMega88 и ATMega168 используются в проектах Ethernet с использованием enc28j60 .. в то время как в моей стране доступны для меня atmega8 и atmega16 и atmega32 .. вот почему я хотел узнать разницу, так как поиском я не нашел более полезной информации .. спасибо за беспокойство
@mina_g Вы должны отредактировать свой вопрос, чтобы было более понятно, что вы действительно хотите узнать
@ m.Alin спасибо, теперь я отредактировал свой вопрос, надеюсь, теперь он более конкретен .. извините за путаницу в последнем вопросе

Ответы (2)

так почему же ATMega88 и его семейство больше подходят для этого проекта "AVR ethernet"?!

Семейство ATMega88 хорошо подходит для этого проекта, поскольку автор предоставил уже протестированную и отлаженную реализацию.

В ATMega8 нет ничего принципиально нового, что повлияло бы на этот проект.

я много раз сталкивался с проблемой с предварительным масштабированием частоты и некоторыми другими проблемами.. мне не удалось получить код .hex из этого проекта, который работает на ATMega8

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

Вам нужно отследить, где именно ваш код дает сбой, решить эту проблему, а затем перейти к следующей проблеме. Стек TCP/IP на микроконтроллере — вещь непростая.

Если бы я взялся за этот проект, я бы разбил его так:

  • Напишите программу, которая будет мигать светодиодом.
  • Расширьте его для отправки и получения байтов по UART (это будет неоценимо для отладки)
  • Расширьте его, чтобы использовать интерфейс SPI, проверяя формы сигналов с помощью осциллографа/логического анализатора.
  • Подключите ENC28J60 к интерфейсу SPI, не забывая о выборе микросхемы (я бы пока оставил линию прерывания неподключенной)
  • Расширьте программное обеспечение для чтения из регистра идентификатора/версии чипа и проверки результата.
  • Расширьте программное обеспечение, чтобы записывать в регистр и читать его обратно
  • Подключите кабель Ethernet, убедитесь, что состояние канала Ethernet меняется в регистрах ENC28J60s.
  • Подключите линию прерывания ENC28J60 к входу на моем микроконтроллере и проверьте (включение прерываний при изменении состояния канала может показаться хорошим тестом)

Теперь я уверен, что мое оборудование работает.

  • Принесите функции драйвера Ethernet (доступ к 16-битным регистрам, доступ к fifo и т. д.) в мой проект и проверьте их, обратившись к регистрам.
  • Настройте ENC28J60 на неразборчивый режим и сбрасывайте входящие пакеты на UART, проверьте, сравнив с Wireshark/tcpdump
  • Посмотрите, как первоначальный автор управлял временем, в частности, как регулярно он опрашивал стек IP и драйвер Ethernet. Реализуйте основной цикл для обслуживания этих подпрограмм.
  • Потяните остальную часть стека IP поверх моего уровня драйвера
  • Настройте стек IP для моей сети (начиная со статического IP)
  • Пропингуйте его
  • Вставьте остальную часть кода приложения (веб-сервер/и т. д.) в мой проект.
Большое спасибо за ваши усилия. Можете ли вы порекомендовать мне симулятор для работы, я использую proteus (ISIS), но иногда у меня возникают проблемы с отладкой, несмотря на компиляцию кода для режима отладки.
Нет, я никогда не использовал эти инструменты

Я написал учебник о том, как использовать Atmega8 с enc28J60. Код и подробная информация доступны в моем блоге, здесь: http://www.pocketmagic.net/?p=2866