Технический форум по робототехнике.
Michael_K » 12 дек 2010, 16:01
Сабж.
ноги не желают переключаться в PIO - выходы.
Последний раз редактировалось
Michael_K 16 дек 2010, 00:39, всего редактировалось 1 раз.
Сергей » 12 дек 2010, 17:05
Я не работал с LPC1111, пока только LPC1343, но хочу отметить что эти чипы сделаны на "скорую руку". Еррата только наполняется, а также появляются новые версии чипов.
Добавлено спустя 2 минуты 45 секунд:
Кстати, ты бы привел код как происходит у тебя инициализация GPIO
Добавлено спустя 7 минут 17 секунд:
И еще как вариант можно проверить в симуляторе keil.
Michael_K » 12 дек 2010, 18:17
эти ноги по умолчанию (после ресета) работают как дебуг-интерфейс
- SWDIO и SDCLK, соответственно.
Назначаю их на PIO - выход так:
LPC_IOCON->ARM_SWDIO_PIO1_3 = 0xC1;
LPC_GPIO1->DIR = 0x00000008;
Нифига не происходит - снаружи выглядят как просто ноги с подтяжками.
Симулятор чем поможет? Регистры пишутся (нормально считывается обратно, что записал).
Добавлено спустя 2 минуты 9 секунд:
остальные ноги работают (как минимум те, что мне были нужны)
Сергей » 12 дек 2010, 19:45
Ну вроде должно быть все нормально, нашел интересную запись про PIO1_3
This pin can be used for other functions
such as GPIO, but it should not be held low on power-up or reset.
Кстати, а маску порта ты случаем не настраивал?
Виталий » 12 дек 2010, 19:59
Так может этот самый debug интерфейс следует отрубить?
Michael_K » 12 дек 2010, 20:01
При стартапе - пусть болтаются как хотят - элементаоно светодиод туда подцепить хотябы.
Маски не настраивал - (и не понимаю, если честно, что за маска порта?)
Вот буквально сокращаю код до двух строчек - со всеми ногами работает, а с этими нет.
(Ну и необходимый минимум настроек - разрешаю клоки в IOCON, AHB итп.)
Добавлено спустя 22 секунды:Виталий писал(а):Так может этот самый debug интерфейс следует отрубить?
может быть. КАК?
Сергей » 12 дек 2010, 20:03
debug не отрубить.
Попробуй в IOCON записать не 0xC1 а 0xC0 и увидишь сюрприз =)
Michael_K » 12 дек 2010, 20:25
эмм... подтяжка отключилась вроде, но управляться по-прежнему не хочет...
Сергей » 12 дек 2010, 20:42
- Код: Выделить всё • Развернуть
LPC_GPIO1->DIR |= (1<<3);
LPC_GPIO1->DATA &=~(1<<3);
LPC_IOCON->ARM_SWDIO_PIO1_3 = 0xC0;
LPC_GPIO1->DATA |= (1<<3);
Вот так к примеру можешь попробовать, это как я пробую в симуляторе.
Добавлено спустя 10 минут 21 секунду:Проверь, пожалуйста вот этот код
- Код: Выделить всё • Развернуть
LPC_GPIO1->DIR |= (1UL<<3);
LPC_GPIO1->DATA &=~(1UL<<3);
LPC_IOCON->ARM_SWDIO_PIO1_3 = 0xC0UL;
LPC_GPIO1->DATA |= (1UL<<3);
Если не заработает, то в этом же коде вместе 0xC0UL поставь прежний вариант 0xC1UL.
Michael_K » 12 дек 2010, 20:55
это только в симуляторе.
добавил к вашим строчкам цикл
- Код: Выделить всё • Развернуть
LPC_GPIO1->DIR |= (1<<3);
LPC_GPIO1->DATA &=~(1<<3);
LPC_IOCON->ARM_SWDIO_PIO1_3 = 0xC0;
while(1)
{
LPC_GPIO1->DATA |= (1<<3);
for(i=0;i<20;i++);
LPC_GPIO1->DATA &= ~(1<<3);
for(i=0;i<20;i++);
}
на осцилле стоит единица
Добавлено спустя 3 минуты 35 секунд:ни с с0, ни с с1
Сергей » 12 дек 2010, 20:55
Проверь последний предложенный мной вариант
Michael_K » 12 дек 2010, 20:55
угу - один фиг
Сергей » 12 дек 2010, 20:59
с добавленным UL не работает? Попробуй тогда еще в качестве варианта IOCON 0xC2, 0xC3
Добавлено спустя 19 секунд:
Кста, компилятор то какой?
Michael_K » 12 дек 2010, 21:01
сейчас кейлом собираю (там симулятор), до этого гцц пробовал - без разницы.
формат записи чисел ни при чем - на остальных-то ногах работает.
разрезал уже плату - на другие ноги подцепил...
но "осадок остался"
да и вообще некрасиво.
Сергей » 12 дек 2010, 21:07
Вот я в кейловском симуляторе и проверял.
Я где-то видел, что в LPC134x на порту перепутали что-то с IOCON, только вот найти не могу что и где