AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
04.12.2013, 12:55
|
|
Прохожий
Регистрация: 04.12.2013
Сообщений: 6
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
Ethernet-контроллер CP2201
Доброго времени суток, уважаемые разработчики и программисты. Давно уже обзавёлся я отладочной платой AVR Crumb644-NET, но за неимением опыта я не смог разобраться, что с ней делать и как жить-то вообще. Сейчас подумал, что нужно оживить сей девайс, иначе позор мне на всю голову! Возможностей у неё дофига и очень интересные штуки можно реализовать. Вот кратко то, с чем я имею дело:
1. на плате стоит атмега 644, которая общается с 2201 по параллельному порту (8 ног данных, управляющие стробы nWR и nRD).
2. Как происходит запись во внутренние регистры - разобрался.
3. Как писать в 16-разрядные регистры - разобрался.
4. Инициализацию делать научился, даже диодик мигает, чему я безмерно рад.
5. Вроде даже понял, как писать во флэш и читать оттуда.
тут начинается беспредел. Вопросов очень много и много непонятного.
1. МАК-адрес пишется в регистры MACAD0:MACAD1:MACAD2. Они 16-разрядные. нужно вписать туда 255.255.255.0. Из даташит СР2201 мы можем прочитать, что MACAD2 содержит 1й и 2й октет, MACAD1 - 3й и 4й, MACAD0 - 5й и 6й. Вопрос - зачем 5й и 6й? Потом все эти 6 байтов перегоняются в самый верх флэш памяти (8 кб - 0x1FFF) с адреса 1FFA до конца. Там и лежат долго и счастливо. Как же его правильно прописать?
2. Нет отдельного регистра для записи IP, маски. Я так понял, что нужно записывать во флэш и потом указателями высылать при запросе. Но вот же опять вопрос: Есть ли разница, куда их писать?
3. Что с ними остается делать? Допустим, я задал IP и хочу пингануть по сети свой выдуманный IP с другого компа, к примеру. Что происходит в сети при посылке с компа команды ping ‹ip›? И что надо отвечать на запрос?
Помогите, пожалуйста. Уже 840 строк кода накалякал чтобы просто инициализировать девайс. Может кто-то имел дело с ним?
|
|
|
|
04.12.2013, 13:18
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Ethernet-контроллер CP2201
|
|
|
Сказали "Спасибо" oleg110592
|
|
|
04.12.2013, 13:33
|
|
Прохожий
Регистрация: 04.12.2013
Сообщений: 6
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Ethernet-контроллер CP2201
Я пользовался. Там только скомпилированный хекс-файл и готовая веб-страница, которая может только светодиоды зажигать. А я хочу своё сделать, чтобы управлять свободным портом B на плате и USARTом тоже
|
|
|
|
04.12.2013, 14:09
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Ethernet-контроллер CP2201
я не про hex - там в исходнике есть инициализация MAC. Она что не работает?
Код:
|
// Initialize hte MAC address (after link comes up)
void init_MAC(void) {
unsigned int tmp16;
//MAC INIT
cpWriteMac(MACCF,0x40B3); // full duplex
cpWriteMac(IPGT,0x0015); // full duplex
cpWriteMac(MACCF,0x40B3);
cpWriteMac(MAXLEN,0x05EE);
write_CP2200(FLASHADDRL,0xFA);
write_CP2200(FLASHADDRH,0x1F);
tmp16 = 0x0000;
tmp16 = read_CP2200(FLASHAUTORD);
tmp16 |=read_CP2200(FLASHAUTORD)‹‹8;
cpWriteMac(MACAD2,tmp16);
tmp16 = 0x0000;
tmp16 = read_CP2200(FLASHAUTORD);
tmp16 |= read_CP2200(FLASHAUTORD)‹‹8;
cpWriteMac(MACAD1,tmp16);
tmp16 = 0x0000;
tmp16 = read_CP2200(FLASHAUTORD);
tmp16 |= read_CP2200(FLASHAUTORD)‹‹8;
cpWriteMac(MACAD0,tmp16);
cpWriteMac(MACCN,0x01);
// Enable Packet Receive and Receive FIFO full interrupts
write_CP2200(INT0EN,0x03);
write_CP2200(INT1EN,0x00);
// clear interrupt status
read_CP2200(CP2200_INT0);
read_CP2200(CP2200_INT1);
struct uip_eth_addr eaddr;
// configure uIP with own mac address (get from CP2200 flash memory)
// added by Stefan Frings
write_CP2200(FLASHADDRL,0xFA);
write_CP2200(FLASHADDRH,0x1F);
for (int i=0;i‹6;i++)
{
eaddr.addr[i]=read_CP2200(FLASHAUTORD); // mac address from CP2200
}
// set mac address of this modules
uip_setethaddr(eaddr);
} |
|
|
|
Сказали "Спасибо" oleg110592
|
|
|
04.12.2013, 14:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
|
Re: Ethernet-контроллер CP2201
Сообщение от Thundersonic77
|
МАК-адрес пишется в регистры MACAD0:MACAD1:MACAD2. Они 16-разрядные. нужно вписать туда 255.255.255.0. Из даташит СР2201 мы можем прочитать, что MACAD2 содержит 1й и 2й октет, MACAD1 - 3й и 4й, MACAD0 - 5й и 6й. Вопрос - зачем 5й и 6й? Потом все эти 6 байтов перегоняются в самый верх флэш памяти (8 кб - 0x1FFF) с адреса 1FFA до конца. Там и лежат долго и счастливо. Как же его правильно прописать?
|
Возьмите любое сетевое ус-во и посмотрите на нём MAC - он будет 6 байтным. То что Вы пишите - это маска подсети.
Сообщение от Thundersonic77
|
Помогите, пожалуйста. Уже 840 строк кода накалякал чтобы просто инициализировать девайс. Может кто-то имел дело с ним?
|
Курите IP стек. Если у Вас только драйвер физики то усе плюшки в виде IP адреса, маски подсети, шлюза и серверов реализовывать самому.
|
|
|
Сказали "Спасибо" _guardianangel
|
|
|
04.12.2013, 14:27
|
|
Прохожий
Регистрация: 04.12.2013
Сообщений: 6
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Ethernet-контроллер CP2201
О, я, видимо, что-то не то скачал. сейчас попробую, проверю)
|
|
|
|
04.12.2013, 14:30
|
|
Прохожий
Регистрация: 04.12.2013
Сообщений: 6
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Ethernet-контроллер CP2201
Сообщение от _guardianangel
|
Возьмите любое сетевое ус-во и посмотрите на нём MAC - он будет 6 байтным. То что Вы пишите - это маска подсети.
Курите IP стек. Если у Вас только драйвер физики то усе плюшки в виде IP адреса, маски подсети, шлюза и серверов реализовывать самому.
|
Похоже на то. Я уже все регистры перерыл, придётся, видимо, всё в-ручную делать...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:49.
|
|