Да, забыл. Тормлзнул малость. Прикладываю сюда. Заодно очередная доработка прошивки - включен режим удвоения частоты SPI. Теперь карта работает на полной скорости, и все тормоза вносит исключительно драйвер VinxFS.
У тебя ОПТС2? Там же тест ПЗУ - просто подсчет контрольной суммы. У меня он говорит "неверная КС". Хотя, может быть, твоя версия ОПТС отличается от моей. Вообщем, это нормально. Без АВР с просаженным сигналом Control он читает из порта А все FF, считает их сумму и, естественно, она оказываетсяч неправильной.без авр корвет говоит ПЗУ неисправно.
О, это моя любимая ошибка. Я полдня угробил в свое время на нее. Вообщем, у тебя AVR не отрабатывает прерывание от сигнала Control и не переводит порт A в режим ввода - поэтому из этого порта читается мусор вместо записанных туда данных. Уроды блин разработчики.с авр корвет говорит "ОШИБКА ШИНЫ"
А не обрабатывается прерывание потому, что контроллер налетел на ошибку, о чем тебе и сообщает. При этом все внешние прерывания он отключает. Если в процедуре led_error ты уберешь перую строчку
GICR&=~(_BV(INT0)|_BV(INT1)); // Запрещаем оба внешних прерывания
То, скорее всего, сможешь загрузить загрузчик фазы 1 - тот, который в EEPROM. На экране получишь "Boot:", но на этом все.
Это ошибка инициализации файловой системы. Пожалуй, пора составить табличку с кодами ошибок, чтобы по исходнику не шарить в поисках.платка 3 раза мигает светодиодом
Сделал бы лучше Fat16, с 32 имели место быть глюки. mkfs.vfat -F 16.установка карточки (fat32) не изменило
И еще - не делай на карте разделов. То есть файловая система должна начинаться с блока 0, разбивать карту с помощью fdisk не надо. То есть примерно так:
mkfs.vfat -F 16 /dev/sdb
Ну и на карте должен как минимум уже лежать загрузчик 2 фазы LOADER.BIN. Но это уже другая ошибка - 2. А у тебя явно контроллер не признал карту. Надо смотреть терминал. Может быть, у тебя карта вообще SDHC - тогда, конечно, работать ничего не будет.
Скорость изменить, конечно, можно. Только это может повлиять на производительность - система начнет иногда ждать окончания вывода сообщения. Сейчас все сообщения выводятся параллельно с основной работой и не тормозят процесс.терминал тоже не заработал, воткнул его в ком ноута, он что-то похоже выводит
но не вменяемое
может скорость до стандартной изменить можно ?
Скорость задается в процедуре Main:
UBRRH=0;
UBRRL=0;
Это максимальная доступная скорость. Старший и младший байт делителя. Значения этих полей описываются в даташите на Atmega32, страница 167 (для частоты 8 МГц, U2X=1). Для 115200 делитель будет равен 8. (L=8 H=0).
Но вообще-то должно работать и на этой скорости. Ты через переходник USB-serial подключаешься? На всякий случай не забудь, что здесь неинвертированный TTL сигнал, надо подключаться непосредственно к микросхеме переходника или использовать преобразователь уровней на каком-нибудь Max232.
Я пускаю терминалку minicom такой командой:
minicom -D /dev/ttyUSB1 -b 1000000 -8 -R utf8 -w
Это снимает проблему кодировки, и разрешает заворот длинных строк.
Надеюсь, у тебя скоро все заработает. А то и прошивку некому потестировать...
Кстати, еще один момент. Старайся не экономить на фильтровых конденсаторах. Поставь пару керамических конденсаторов не менее 0.1 мкф с обоих сторон процессора у ножек питания, и один на вводе питания в плату. Я тут осциллографом посмотрел - там помехи приличные по питанию идут.






Ответить с цитированием