|
|
  |
Хочу попробовать ARM, подскажите, что для этого нужно?, Какой проц выбрать, отлад. платку и какой софт? |
|
|
|
Jan 30 2007, 21:19
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Вот смотрю я на принцип. схему платы Olimex SAM7-P256. Там два светодиода подключены к PA17 и PA18 соответственно. И вот только что прочитал, что макс. ток по этим линиям не должен превышать 2 мА. Там что - сверхяркие LEDы стоят, способные от 2 мА зажечся? Или фирмачи недосмотрели чего? Цитата(zltigo @ Jan 30 2007, 22:17)  Цитата(sonycman @ Jan 30 2007, 20:06)  А что легче припаять/отпаять с платы - LQFP или QFN? Имею ввиду вручную?
А что, по чертежу не видно, что QFN на втором месте после BGA по хренопаяемости руками? Ну, там на торцах корпуса площадки для пайки есть. Подумал, может тонким жалом не трудно будет припаять... Понятно
Сообщение отредактировал sonycman - Jan 30 2007, 21:22
|
|
|
|
|
Jan 30 2007, 22:04
|
Частый гость
 
Группа: Новичок
Сообщений: 79
Регистрация: 1-11-06
Пользователь №: 21 868

|
Цитата(sonycman @ Jan 30 2007, 20:19)  Вот смотрю я на принцип. схему платы Olimex SAM7-P256. Там два светодиода подключены к PA17 и PA18 соответственно. И вот только что прочитал, что макс. ток по этим линиям не должен превышать 2 мА. Там что - сверхяркие LEDы стоят, способные от 2 мА зажечся? Или фирмачи недосмотрели чего? А вы никогда не пробовали подключать красный или синий светодиод через 6.8 кОм на 5 вольт? Да, днем его на солнце не видно. А при комнатном нормальном освещении - очень отчетливо. С зелеными конечно хуже, они не такие чуствительные. Цитата(sonycman @ Jan 30 2007, 20:19)  Ну, там на торцах корпуса площадки для пайки есть. Подумал, может тонким жалом не трудно будет припаять... Понятно  Ну я б не сравнивал QFN и BGA. Первый паяльником паяется. Флюса побольше - и ничем он не хуже TQFP. Все равно по отдельными выводам не попадаешь при 0.5 шаге...
|
|
|
|
|
Jan 30 2007, 23:12
|
Участник

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744

|
Цитата ом, то при питании проца 3.3 вольтами через диод как раз будет протекать около 2 ма. Хм... ну посмотрим, как ярко они будут светиться... Сделал тест: V 3.3 R 560 Ом 5 uCd VD зелёный 2.17mA VD кпасный 2.18 mA 2 Cd VD красный 1,7 mA Т.к. в цепи ещё и внутренне сопротивление миллиамперметра (нехилое сопротивление), поэтому реальные значения на 10-20% больше. Цитата Ффу-у, прочитал, наконец, весь мануал к AT91SAM7S. 600 страниц! Подробностей уже не помню, блин Я в шоке! Меня user manual на lpc210x достал уже. В нём только 173 страницы. Правда когда обнаружил следующее: Цитата Preliminary User Manual Подумал, что может, где полный лежит. Скачал вариантов 5, все одинаковые. Вот выше советовали подробно читать о регистре VICRawIntr, на там про него только пару строк (впрочем, как и про большинство регистров): Цитата Raw Interrupt Status Register (VICRawIntr - 0xFFFFF008, Read Only) This register reads out the state of the 32 interrupt requests and software interrupts, regardless of enabling or classification. Table 26: Raw Interrupt Status Register (VICRawIntr - 0xFFFFF008, Read-Only) VICRawIntr Function Reset Value 31:0 1: the interrupt request or software interrupt with this bit number is asserted. 0: the interrupt request or software interrupt with this bit number is negated. 0 A должна быть ещё и таблица какой бит какому источнику соответствует. Или я ошибаюсь? Вопрос, есть ли более подробный мануал?
|
|
|
|
|
Jan 30 2007, 23:41
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(Alex_inventor @ Jan 31 2007, 00:12)  Сделал тест: V 3.3 R 560 Ом 5 uCd VD зелёный 2.17mA VD кпасный 2.18 mA 2 Cd VD красный 1,7 mA Т.к. в цепи ещё и внутренне сопротивление миллиамперметра (нехилое сопротивление), поэтому реальные значения на 10-20% больше. Это ты в Протеусе тестил? Цитата Preliminary User Manual Подумал, что может, где полный лежит. Скачал вариантов 5, все одинаковые. Вот выше советовали подробно читать о регистре VICRawIntr, на там про него только пару строк (впрочем, как и про большинство регистров): У меня тоже Preliminary, почему-то. Самый последний качал. А у тебя User Manual, или может просто даташит? Потому что мануал для LPC214x 6.5 метров весит, и там, конечно-же, есть таблица с расшифровкой всех битов.
Сообщение отредактировал sonycman - Jan 30 2007, 23:42
|
|
|
|
|
Jan 31 2007, 00:17
|
Участник

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744

|
Разобрался с вываливанием в SWI. Это не реальное SWI, а физический прыжок. Среда с толку сбила. При отладке по шагам если в другой файл попадаешь то почемуто RUN запускается. А в дизосемблере всё OK. Цитата Это ты в Протеусе тестил? Нет, в реале, я же железячник, мне это 1 минута. Хотя в PROTEUS тоже можно. Цитата А у тебя User Manual, или может просто даташит? Нет, у меня как раз User manul. У филипок всё раздельно. Errata, datasheet, user manual. Не как у Atmela. В datasheett у филипок только электрические данные, типы корпусов и т.п. Цитата LPC214x 6.5 метров весит, и там, конечно-же, Спасибо за информацию. Только где ты 6.5 метров откапал? Я вот сейчас качаю LPC214x User Manual 2,7 весит.
Сообщение отредактировал Alex_inventor - Jan 31 2007, 00:47
|
|
|
|
|
Jan 31 2007, 01:02
|
Участник

Группа: Новичок
Сообщений: 54
Регистрация: 25-01-07
Пользователь №: 24 744

|
AAAA!!!  Сказка!!!  В LPC214x_User_Manual.pdf расписаны все регистры! Филиппы козлы!  На прошлой неделе всю жизнь мне испортили. Я по ихниму user_manual lpc2106-10.pdf ARM осваивал, ничего не понимал. С VIC вообще ступор получился. Ни как не мог врубится как определяется адрес прерывания. Смотришь в исходник, потом в user_manual и ,как говорится, видишь фигу!  Я уже испугался, за себя, думал, деградация пошла.  Не могу разобраться в архитектуре. Но сейчас быстро наверстаем упущенное. Быстро расколем этот орешек ARM.
|
|
|
|
|
Jan 31 2007, 07:31
|
Местный
  
Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034

|
Цитата(zltigo @ Jan 30 2007, 21:53)  Не совсем понимаю о чем это Вы. Есть, допустм 8бит счетчик и очередь 100, 200. Текущий счетчик 80. Хочу добавить два таймера на 1 и на 200 тиков.
Запихивайте. Сортируйте. Жду. 81, 100, 200, 24 Где 24 есть (80+200)%256. При запихивании 1: 100: 1 <= (100-80) - ДА, ставим 1+80=81 перед 100. Получился список 81, 100, 200 При запихивании 200: 81: 200 <= (81-80) - Нет, идём по списку дальше 100: 200 <= (100-80) - Нет, идём по списку дальше 200: 200 <= (200-80) - Нет, идём по списку дальше Конец списка, добавляем 200+80=24 (модуль 256 сам получится). Получился список 81, 100, 200, 24 Воот. Ну и для примера давайте туда ещё 220 и 210 запихнём. При запихивании 220: 81: 220 <= (81-80) - Нет, идём по списку дальше 100: 220 <= (100-80) - Нет, идём по списку дальше 200: 220 <= (200-80) - Нет, идём по списку дальше 24: 220 <= (24-80) - Нет (24-80 = 200  ), идём по списку дальше Конец списка, добавляем 220+80=44 Получился список 81, 100, 200, 24, 44 При запихивании 210: 81: 210 <= (81-80) - Нет, идём по списку дальше 100: 210 <= (100-80) - Нет, идём по списку дальше 200: 210 <= (200-80) - Нет, идём по списку дальше 24: 210 <= (24-80) - Нет (24-80 = 200), идём по списку дальше 44: 210 <= (44-80) - Да (44-80 = 220), добавляем 210+80=34 между 24 и 44 Получился список 81, 100, 200, 24, 34, 44 Усё, надеюсь нигле не очепятался. Естественно все вычисления беззнаковые. Если вдруг у Вас не связанный упорядоченный список, а например какойнить несортированный массив, то для сравнения/сортировки, как я уже говорил, достаточно просто вычитать текущее значение таймера (оно в примере выше так и есть).
|
|
|
|
|
Jan 31 2007, 17:22
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Alex03 @ Jan 31 2007, 06:31)  Конец списка, добавляем 200+80=24 (модуль 256 сам получится). Получился список 81, 100, 200, 24 Воот. Получился улучшенный вариант с инкремементом счетчика. Тоже рабоает за счет специфичного упорядочивания при постановке. Теперь начинаем работать - периодически контролируем текущий счетчик на превышение первого значения в очереди и .... "ой" при контроле в диапазоне 201...23 у нас преждевременно сработает таймер  . Таким образом, это будет работать при двух условиях - обязательное обязательное упроядочивание и обязательный контроль на каждом тике. В случае с очередями принудительное и неизменное упорядочивание является опциональным и позволяет надежно использовать его в случае операционной системы, когда Task_Control_Block-и задач содержащие в том числе и счетчики могут быть упорядочены/переупорядочены по другим критериям, например по приоритету задачи. Ну и естественно могут быть пропущены тики.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 31 2007, 18:28
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Работаю с компилятором RealView. Написал __SWI функцию, думаю, дай проверю, как будет работать. Компилер функцию создал, но при вызове проц попадает на заглушку по вектору SWI_Handler: B на этот-же адрес. Ну это понятно, так задано в Startup.s. А можно как-то вызвать библиотечный хендлер, чтобы не писать свой на асме? Просто запись IMPORT SWI_Handler даёт ошибку - Undefined symbol. Может, надо включить какой-то определённый .h или .c библиотечный файл?
Там есть пример (в папке Кейла), но в нём хендлер написан свой...
Сообщение отредактировал sonycman - Jan 31 2007, 18:31
|
|
|
|
|
Jan 31 2007, 18:46
|
Местный
  
Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034

|
Цитата(zltigo @ Jan 31 2007, 19:22)  Получился улучшенный вариант с инкремементом счетчика. Тоже рабоает за счет специфичного упорядочивания при постановке. Теперь начинаем работать - периодически контролируем текущий счетчик на превышение первого значения в очереди и .... "ой" при контроле в диапазоне 201...23 у нас преждевременно сработает таймер  . Таким образом, это будет работать при двух условиях - обязательное обязательное упроядочивание и обязательный контроль на каждом тике. Согласен, но... Если контролировать на жёсткое равенство непосредственно после каждого инкремента то всё нормально.  Цитата В случае с очередями принудительное и неизменное упорядочивание является опциональным и позволяет надежно использовать его в случае операционной системы, когда Task_Control_Block-и задач содержащие в том числе и счетчики могут быть упорядочены/переупорядочены по другим критериям, например по приоритету задачи. Ну и естественно могут быть пропущены тики. Согласен. Видимо надо уточнять "условия игры".  В первую очередь, пропуск тиков. Откуда идут тики? Если програмно инкрементируются (в таймерном прерывании), то и очередь можно тутже обслужить, даже если времени в обрез, то по крайней мере перенести из списка ожидающих таймаута в expired список ожидающих обработки (например очень приоритетной задачей). Если тики более другие, то и подход соответствующий. Либо вообще, либо по "догонянию" времени. Ваш же пример с Код if( ++TickCount == 0 ) { ... Переключение очередей ... } для пропусков тиков не катит. ЗЫ Истина (оптимальные варианты) гдето рядом.
|
|
|
|
|
Jan 31 2007, 20:01
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Alex03 @ Jan 31 2007, 17:46)  Согласен. Видимо надо уточнять "условия игры".  Условия игры естественно в корне меняют дело. То, что я пишу относится к поминанию Сергеем операционных систем а отнюдь не локальной конкретной задачи работы с кучей таймеров. Вещи достаточно отличающиеся и естественно имеющие разные оптимальные решения. Цитата Если тики более другие, то и подход соответствующий. Либо вообще, либо по "догонянию" времени. Ваш же пример с Код if( ++TickCount == 0 ) { ... Переключение очередей ... } для пропусков тиков не катит. Насчет тиков и пропусков отношении системы, я конечно не четко объяснил - речь естествено не идет о формальном пропуске тика приводящего к ненаращиванию аппаратного или программного счетчика. Дело о случае, когда четко зафиксировав заявленное время система по каким-либо причинам не может в тот-же момент произвести действия заявленные на достижения тамаута  получается, что проскальзывает не собственно счетчик. Конечные результаты схожи - время настало, а действие пришлось отложить. Потом, когда, например, полнировщик разморозят он должен иметь возможность максимально корректно обработать пропущенные заявки. P.S. Не знаю, как понятнее обьяснить  Ну если в простой программе, то например работая четко по таймеру, наращивая и сравнивая тики при каждом тике с первым значением в очереди и четко фиксируя сей момент мы вдруг выяснили, что, например не можем выполнить нужное в данный момент действие - послать байт в UART по причине занятости буфера передачи  . Система таймеров "не виновата", но выкручиваться надо. Механизмы выкручивания могут быть разные. Цитата(sonycman @ Jan 31 2007, 17:28)  А можно как-то вызвать библиотечный хендлер, чтобы не писать свой на асме? Писать свой на ASM - точнее править всего несколько строк в исходном. Хотя в некоторых компиляторах есть соответствующие прагмы ломового для изменения точек входа в default стартапе. Я бы правил ручками - как-то спокойнее и уж явно переносимее.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|