Mega2560 + W5100 = глюки от наличия SD карточки
- Войдите на сайт для отправки комментариев
Заливаю проэкт : ams_016.zip , Кто не в курсе вот ссылка : http://hi-lab.ru/arduino-mega-server/details/download
И всё работает прекрасно !!! теперь набросал пару строк в FLprog, сделал просто WEB_server, который банально выводит на страничку случайное число и 4 АЦП отображает.
Все заработало прекрасно. Но когда вставил случайно пустую SD-карту, обнаружилось что проэкт зависает, или выдаёт на экране тупо билиберду. Ладно, поменял карточку, вторую отформатировал FAT-FAT32-NTFS , ничего не помогает, проэкт с картой забисает за 1...5 минут гарантированно.
Теперь самое интересное : стоит только аккуратно вытащить СД-карту, нажать на компе F5, и страница опять работает хоть 12 часов стабильно, компьютеры менял, внешнее питание подавал, поставил другой шилд W5100 и проблема не наблюдалась пока за 2 часа ниразу. Вопрос : как может шилд глючить с моим простейшим проэктом ? и стабильно работают оба шилда на мощнейшем проэкте HI-LAB, который маслает карту дико-страшно.
Я не думаю что это проблема в шилде. Но факт что они тащат груз по разному. Может всё таки причина в :
digitaWrite(4,HIGH); // выключили SD
digitalWrite(10,LOW); // включили W5100
// тут работаем с W5100
digitalWrite(10,HIGH); // выключили W5100
digitaWrite(4,LOW); // включили SD
Но по этой ссылке : http://arduino.ru/forum/programmirovanie/ethernet-shield-c-sd-kartoi-ne-pishet-na-kartu#comment-155523 , автор заявляет что у него 2560 + W5100 работают одновременно !!! Как понять одновременно или нет ?
Спасибо !
Для Ардуино SD-карта - постоянный носитель, а не сменный. Попытайтесь в работающем ПК на ходу вытащить винчестер. Тоже будете возмущаться, что он в результате работает совсем не таку, как Вам бы хотелось.
проэкт с всунутой СД картой - пустой, неформатированной, любой другой левой - НЕ РАБОТАЕТ БОЛЬШЕ 5 минут !!!
проект без СД карты - работает сутками стабильно.
к СД карте я не обращаюсь вообще, библиотека отсутствует полностью.
в момент зависания проэкта, изгибалась плата, подключалось питание, прижималась карта к контактам пинцетом, ничего не помогало.
Решение для работы WEB-страницы объёмом 5 несчастных строк - удаление СД карты со слота, и сразу на W5100 загораются зеленые светодиоды TX+RX и проэкт прекрасно работает даже без RESET. Стоить вставить обратно пустую СД карту, проэкт работает 1 ... 2... 5 минут, и зависает.
к СД карте я не обращаюсь вообще, библиотека отсутствует полностью.
Чудес не бывает.
Вероятно, карточка у Вас подключается по SPI. И, вероятно, какое-то другое устройство (возможно Ethernet Shield или дисплей) использует SPI. Если пользуетесь сторонними библиотеками, посмотрите, как там происходит инициализация этих устройств.
В конце концов, куда-то же Вы втыкаете карточку, на самой Ардуине слота для нее нет.
да РЕБЯТКИ ...
только вот сходил до КУМА, мы с ним одинаковые партии ардуинок с Кетая покупали.
одолжил шилд W5100 один-в-один платка, вставил в него свою SD карточку пустую.
и вот шилдик КУМА - работает уже час без проблем.
на адресе 192.168.11.77 сидит себе страничка, которая генерит случайный HTML
опрашивает 4 ацп, и выводит в мозилле 5 строчек.
обновляется сама через 2 секунды.
запущена страница щас на 4 компах, и весело генерит RND на мозиллах.
и работает уже часик ...
ВОТ ВАМ И ШИЛДЫ .... W5100 ....... с одной партии.
( на обеих шилдах http://hi-lab.ru/arduino-mega-server - ЛЕТАЕТ ИДЕАЛЬНО)
под микроскопом пересмотрел, ацетоном плату помыл - не помогло.
у меня инициализация mega2560+W5100 производится так.
зернет и карточка вместе нормально работают
01
const
int
W5100_RESET_PIN = 5;
02
const
int
SD_CS = 4;
03
04
void
resetLAN()
05
{
06
digitalWrite(W5100_RESET_PIN, LOW);
Serial
.println(
"reset lock"
);
07
delay(100);
08
digitalWrite(W5100_RESET_PIN, HIGH);
Serial
.println(
"reset release"
);
09
delay(1000);
10
Ethernet.begin(mac,ip,dnServer,gateway,subnet);
11
delay(500);
12
Serial
.print(
"My IP adress: "
);
Serial
.println(Ethernet.localIP());
13
Serial
.print(
"My gateway: "
);
Serial
.println(Ethernet.gatewayIP());
14
Serial
.print(
"My subnet mask: "
);
Serial
.println(Ethernet.subnetMask());
15
Serial
.print(
"My dns Server: "
);
Serial
.println(Ethernet.dnsServerIP());
16
}
17
18
19
void
setup
() {
20
21
Serial
.begin(9600);
22
pinMode(53, OUTPUT);
23
pinMode(W5100_RESET_PIN, OUTPUT);digitalWrite(W5100_RESET_PIN,LOW);
24
pinMode(SD_CS, OUTPUT); digitalWrite(SD_CS,HIGH);
25
26
//*********************start Ethernet services*******************************************
27
28
resetLAN();
29
server.begin();
30
server1.begin();
31
Udp.begin(8888);
32
//*********************start SD*******************************************
33
if
(!SD.begin(SD_CS)) {
//............ и прочая и прочая и прочая....
НАДО СРОЧНО ПРОБОВАТЬ ЭТО РЕШЕНИЕ ... автор сказал что у него работает одновременно.
......
ВОТ ВАМ И ШИЛДЫ .... W5100 ....... с одной партии.
( на обеих шилдах http://hi-lab.ru/arduino-mega-server - ЛЕТАЕТ ИДЕАЛЬНО)
под микроскопом пересмотрел, ацетоном плату помыл - не помогло.
http://arduino.ru/forum/apparatnye-voprosy/problemy-s-sd-portom-na-wiznet-w5100#comment-285817