14.12.2010, 07:47
|
|
Частый гость
Регистрация: 26.03.2009
Сообщений: 27
Сказал спасибо: 1
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от thebadtouch
|
здравствуйте,начал изучать мк АРМ,на практике мне заказали плату DK-LM3s9b96,вот начал ее изучать и сразу столкнулся с проблемой
загружаю пример-программу blinky,все естесвенно работает
Код:
|
#include "inc/lm3s9b96.h"
main(void)
{
volatile unsigned long ulLoop;
// Enable the GPIO port that is used for the on-board LED.
SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOF;
// Do a dummy read to insert a few cycles after enabling the peripheral.
//
ulLoop = SYSCTL_RCGC2_R;
//
// Enable the GPIO pin for the LED (PF3). Set the direction as output, and
// enable the GPIO pin for digital function.
//
GPIO_PORTF_DIR_R = 0x08;
GPIO_PORTF_DEN_R = 0x08;
while(1)
{
GPIO_PORTF_DATA_R |= 0x08;
for(ulLoop = 0; ulLoop ‹ 200000; ulLoop++);
GPIO_PORTF_DATA_R &= ~(0x08);
for(ulLoop = 0; ulLoop ‹ 200000; ulLoop++);
}
} |
на плате есть кнопка USER SWITCH (подключена на порт J пин 7)
я хочу переделать программу чтобы на плате включался светодиод по нажатию этой кнопки,а если она не нажата то он и не горел
и проблема в том что когда я только настраиваю порты программа перестает работать
вот что получилось с настройкой потра J
Код:
|
main(void)
{
volatile unsigned long ulLoop;
SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOF;
ulLoop = SYSCTL_RCGC2_R;
// vkluchaem GPIO port dlya User Switch
SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOJ ;
ulLoop = SYSCTL_RCGC2_R;
// Enable the GPIO pin for the LED (PF3). Set the direction as output, and
// enable the GPIO pin for digital function.
GPIO_PORTF_DIR_R = 0x08;
GPIO_PORTF_DEN_R = 0x08;
GPIO_PORTJ_DIR_R = 0x00;
GPIO_PORTJ_DEN_R = 0x80;
GPIO_PORTJ_AFSEL_R = 0x00;
GPIO_PORTJ_ODR_R = 0x00;
while(1)
{
GPIO_PORTF_DATA_R |= 0x08;
for(ulLoop = 0; ulLoop ‹ 200000; ulLoop++);
GPIO_PORTF_DATA_R &= ~(0x08);
for(ulLoop = 0; ulLoop ‹ 200000; ulLoop++);
}
} |
естесвенно компилятор ошибок не выдает
я еще мало чего понимаю,но помогите мне пожалуйста
|
Добрый день
попробую помочь, хотя я сам изучил свой лиминари только процентов на 10-15 ![Улыбка](images/smilies/icon_smile.gif)
Значит пойдем по порядку:
1) Открываем F SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOF; у вас это есть
2) Далее открываем J, вроде я думаю надо так: SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOJ ;
попробуйте так
дальше посмотрим
|
|
|
|
14.12.2010, 11:19
|
|
Частый гость
Регистрация: 21.09.2010
Сообщений: 22
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
to Dmitry_Migathev
спасибо это помогло
а теперь еще вопрос как считывать значение не со всего порта
а только с 7-ого пина ибо когда я пишу
Код:
|
if (GPIO_PORTJ_DATA_R &= ~(0x80)) |
и нажимаю кнопку ничего не происходит
думаю потому что в остальных пинах порта J творится чтото мне неизвестное
код целиком выглядит так
Код:
|
#include "inc/lm3s9b96.h"
void wait()
{
int d;
for (d = 0; d ‹ 1000000; d++)
{
}
}
main(void)
{
volatile unsigned long ulLoop;
//
// Enable the GPIO port that is used for the on-board LED.
//
SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOF;
//
// Do a dummy read to insert a few cycles after enabling the peripheral.
//
ulLoop = SYSCTL_RCGC2_R;
//
// Enable the GPIO pin for the LED (PF3). Set the direction as output, and
// enable the GPIO pin for digital function.
//
GPIO_PORTF_DIR_R = 0x08;
GPIO_PORTF_DEN_R = 0x08;
GPIO_PORTF_AFSEL_R = 0x00;
GPIO_PORTF_ODR_R = 0x00;
//
// vkluchaem GPIO port dlya User Switch
//
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOJ ;
ulLoop = SYSCTL_RCGC2_R;
GPIO_PORTJ_DIR_R = 0x00;
GPIO_PORTJ_DEN_R = 0x80;
GPIO_PORTJ_AFSEL_R = 0x00;
GPIO_PORTJ_ODR_R = 0x00;
//GPIO_PCTL_PJ7_U1DTR = 0x00;
while(1)
{
if (GPIO_PORTJ_DATA_R &= ~(0x80))
// esli najat to budet goret
{
GPIO_PORTF_DATA_R |= 0x08;
for(ulLoop = 0; ulLoop ‹ 8000000; ulLoop++);
}
else
// esli net to migat
{
GPIO_PORTF_DATA_R |= 0x08;
for(ulLoop = 0; ulLoop ‹ 800000; ulLoop++);
GPIO_PORTF_DATA_R &= ~(0x08);
for(ulLoop = 0; ulLoop ‹ 800000; ulLoop++);
}
}
} |
|
|
|
|
14.12.2010, 11:44
|
|
Частый гость
Регистрация: 21.09.2010
Сообщений: 22
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
блин не то писал
думаю должно было выглядеть вот так
Код:
|
if (GPIO_PORTJ_DATA_R & (0x80)) |
но приходится долго нажимать на кнопку чтобы она сработала
added карчое с этим я разобрался,с задержками была проблема
теперь буду разбираться с АЦП
ну и еще вопрос почему нужна была эта палка встроке при активации порта J
Код:
|
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOJ ; |
и почему она не была нужна для порта F?
Последний раз редактировалось thebadtouch; 14.12.2010 в 13:23.
|
|
|
|
14.12.2010, 11:57
|
|
Прохожий
Регистрация: 30.09.2010
Сообщений: 4
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Может кто сталкивался с декодированием кода Манчестера и кода Миллера на ARM7, а именно lpc2148 или вообще с декодированием этих кодов
|
|
|
|
14.12.2010, 20:56
|
|
Временная регистрация
Регистрация: 26.09.2009
Сообщений: 81
Сказал спасибо: 4
Сказали Спасибо 16 раз(а) в 13 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от thebadtouch
|
ну и еще вопрос почему нужна была эта палка встроке при активации порта J
Код:
|
SYSCTL_RCGC2_R |= SYSCTL_RCGC2_GPIOJ ; |
и почему она не была нужна для порта F?
|
Про эту "палку" написано в любом учебнике по C. Причем это азы!
|
|
|
|
17.12.2010, 21:07
|
|
Частый гость
Регистрация: 21.09.2010
Сообщений: 22
Сказал спасибо: 5
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от espectr0
|
Про эту "палку" написано в любом учебнике по C. Причем это азы!
|
очень помог,спасибо
|
|
|
|
17.12.2010, 23:04
|
|
Прохожий
Регистрация: 24.05.2010
Сообщений: 3
Сказал спасибо: 1
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Отладочная плата на AT91SAM7S128. http://www.kosmodrom.com.ua/razrabotka/91sam7s64_db.php
Проект полностью на ассемблере типа "Hello World" - мигание светодиодов, может кому пригодится для быстрого старта на асме
PS: интерсно, что никто не интересуется асмом, программирую только на нем и считаю - лучшим языком для профи есть Asembler, конечно, нужно знать и коверканные языки асма - типа СИ и пр. Не против СИ - но программирую на Pascal. Мое глубокое ИМХО
Последний раз редактировалось v2010; 19.12.2010 в 19:43.
|
|
|
|
21.12.2010, 14:17
|
|
Прописка
Регистрация: 09.12.2003
Сообщений: 116
Сказал спасибо: 5
Сказали Спасибо 23 раз(а) в 19 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от v2010
|
Отладочная плата на AT91SAM7S128. http://www.kosmodrom.com.ua/razrabotka/91sam7s64_db.php
Проект полностью на ассемблере типа "Hello World" - мигание светодиодов, может кому пригодится для быстрого старта на асме ![Улыбка](images/smilies/icon_smile.gif)
PS: интерсно, что никто не интересуется асмом, программирую только на нем и считаю - лучшим языком для профи есть Asembler, конечно, нужно знать и коверканные языки асма - типа СИ и пр. Не против СИ - но программирую на Pascal. Мое глубокое ИМХО
|
Почему не интересуется.В нужное время и в нужном месте очень даже.
Понадобиолсь мне дрыгать ножкой LPC2142 с частотой 20мгц.С помощью асма и какойто матери удалось решить эту задачу считающуюся нереальной.
А обычно пишу на "С" , это промышленный стандарт.Даже всю работу с железом практически только на нем.Вот уже лет 15 как.Библиотеки экземплы , оппоненты в конце концов все на нем.Паскаль решает те-же задачи но с ним как-то одиноко.Да и где компиляторов под него набрать на все процы что приходится использовать.
|
|
|
|
21.12.2010, 14:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от PlainUser
|
Понадобиолсь мне дрыгать ножкой LPC2142 с частотой 20мгц.С помощью асма и какойто матери удалось решить эту задачу считающуюся нереальной.
|
Она и есть - нереальная. Хоть на асме, хоть на чем. Вывод в порт - 2 такта. Итого на период 2+2=4 такта. Такт 2142 - 60МГц. Максимальная частота, достижимая программно - 15МГц, а вовсе не 20. Для 20 нужно разогнать процессор и функции махания ножками перенести в ОЗУ. Но это уже совсем не асм
|
|
|
|
22.12.2010, 12:26
|
|
Прописка
Регистрация: 09.12.2003
Сообщений: 116
Сказал спасибо: 5
Сказали Спасибо 23 раз(а) в 19 сообщении(ях)
|
Re: Здравствуй, ARM. Запуск "на коленке"
Сообщение от kison
|
Она и есть - нереальная. Хоть на асме, хоть на чем. Вывод в порт - 2 такта. Итого на период 2+2=4 такта. Такт 2142 - 60МГц. Максимальная частота, достижимая программно - 15МГц, а вовсе не 20. Для 20 нужно разогнать процессор и функции махания ножками перенести в ОЗУ. Но это уже совсем не асм
|
Приятно иметь дело с понимающими людьми.
Дрыгать ножкой более широкое понятие чем вывод в порт.Собственно задача была быстро запускать и читать 8бит ацп для сбора данных.
20MSPS.И затем порциями сливать по усб.
Разогнать конечно маленько пришлось, до 72Мгц.Пробовал и больше иногда работало.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:38.
|
|