Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: как прошить AT91SAM7S256
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Страницы: 1, 2, 3
alexan300
да я уже нашел эту вкладку. аутпут конвертер, аутпут формат: бинари, аутпут фаил: блинк бин.
ради эксперемента я спрятал Ваш бинарник в другую папку, и надеился что после компиляции у меня появится новый блинк бин, но он почемуто не появляется. из чего я сделал вывод что что то внастроиках уменя нетак((
aaarrr
Берете проект из архива, удаляете бинарник из debug\exe, ничего больше не трогаете. Открываете проект в IAR'е, нажимаете F7 - должен появится бинарник.
alexan300
УРА!! после изменения в линкере расширение фаила обратно на OUT у меня появился на выходе в папке ехе, рабочии бинарник, который упешно загрузился и заработал в мк..конечно вижу определенный геморои с постояннои перезагрузкои проца для запуска исполняемои программы и обратно для определения виндусом.
успешно запустилась моя первая модифицированная програамма!! большое всем спасибо!!!!!!
aaarrr
Цитата(alexan300 @ Nov 7 2009, 19:25) *
ради эксперемента я спрятал Ваш бинарник в другую папку, и надеился что после компиляции у меня появится новый блинк бин, но он почемуто не появляется. из чего я сделал вывод что что то внастроиках уменя нетак((

Если он не появился, значит или были ошибки при компиляции, или для текущей конфигурации (debug/release) не стоит галка "Generate Additional Output". Для конфигурации release в этом проекте она не стоит.

Цитата(alexan300 @ Nov 7 2009, 19:32) *
после изменения в линкере расширение фаила обратно на OUT...

Ну вот. Сначала надо было все-таки разбираться, а потом что-то крутить.



P.S. Вы, похоже, рекорд поставили - две недели на "помыргать светодиодом" smile.gif
alexan300
эээ.. а как мне отследить реакцию на нажатие кнопки ??

Код
void Delay (unsigned long a) { while (--a!=0); }
int main()
{
  //Enable RESET
  AT91C_BASE_RSTC->RSTC_RCR = 0xA5000008;
  AT91C_BASE_RSTC->RSTC_RMR = 0xA5000001;
  Delay(1000);

по анологии??
или же все таки RSTC это сугубо к резету??
aaarrr
Цитата(alexan300 @ Nov 7 2009, 19:58) *
эээ.. а как мне отследить реакцию на нажатие кнопки ??

Какой кнопки? Куда и как она подключена?

Цитата(alexan300 @ Nov 7 2009, 19:58) *
по анологии??
или же все таки RSTC это сугубо к резету??

Да, на ресете тоже может быть кнопка, и ее состояние можно отследить. Больше аналогий не вижу.
Приведенный отрывок разрешает сброс процессора от внешнего сигнала NRST.
alexan300
честно говоря пока не подключена..только сделал саму кнопку и резистор ксати 180 ом нармально последовательно впаять или же маловато??
подключу на PIO вывод допустим 1.
я так думаю..сначало надо прказать выводу 1 стать входом 1. второи конец кнопки на землю через сопротивление
?? адальше как в резете??
вот читаю что то вроде даташита: нагрузочная способность ра0-ра3 до 16 мА.
наверно все таки маловато 180 ом. (или фиг с ним там еще в мк есть встроеное сопротивление?)
а какое максимальное сопротивление можно включить что бы мк реагировал на нажатие??
aaarrr
Цитата(alexan300 @ Nov 7 2009, 20:44) *
сделал саму кнопку и резистор ксати 180 ом нармально последовательно впаять или же маловато??

Зачем последовательно? Пока достаточно просто подключить кнопку между пином и землей - у SAM'ов мощные встроенные pull-up'ы.

Опрос кнопки будет выглядеть примерно так:
Код
// Настройка
*AT91C_PMC_PCER = 1UL << AT91C_ID_PIOA; // Для чтения состояния вывода нужно обязательно
                                        // включить тактирование PIO
*AT91C_PIOA_PER = KEY;     // Перевели вывод в режим PIO
*AT91C_PIOA_ODR = KEY;     // Переключили на вход
*AT91C_PIOA_PPUER = KEY;   // Разрешили pull-up
*AT91C_PIOA_IFER = KEY;    // Включили входной фильтр

// Чтение состояния
if(*AT91C_PIOA_PDSR & KEY)
{
    // Если кнопка отжата (вывод в '1')
}
else
{
    // Если кнопка нажата (вывод в '0')
}

Конечно, следует внимательно почитать описание работы контроллера PIO, иначе толку от моих советов будет 0.

Цитата(alexan300 @ Nov 7 2009, 20:44) *
вот читаю что то вроде даташита: нагрузочная способность ра0-ра3 до 16 мА.
наверно все таки маловато 180 ом. (или фиг с ним там еще в мк есть встроеное сопротивление?)
а какое максимальное сопротивление можно включить что бы мк реагировал на нажатие??

Нагрузочная способность - параметр выхода, а не входа.
Без поллитрыкартинки я не разбирусь, как вы хотите эту кнопку подключить.
alexan300
Код
//check button 2 pressed
    if(!((m_pPio->PIO_PDSR) & BIT20)) {

а вот это к какои кнопке относится ?
я так понимаю бит 20??
или же все таки к PDSR?-но такое название в описании я ненашел((
Код
//MAIN POINTER
AT91PS_PIO    m_pPio   = AT91C_BASE_PIOA;

AT91PS_RSTC   m_pRSTC  = AT91C_BASE_RSTC;

я так думаю эта часть кода делает то же самое что и
Код
*AT91C_PIOA_PER = KEY;     // Перевели вывод в режим PIO
*AT91C_PIOA_ODR = KEY;     // Переключили на вход
*AT91C_PIOA_PPUER = KEY;   // Разрешили pull-up
*AT91C_PIOA_IFER = KEY;    // Включили входной фильтр



Код
AT91C_PMC_PCER = 1UL << AT91C_ID_PIOA;

ругается на это(( expekted a "("
aaarrr
Цитата(alexan300 @ Nov 7 2009, 21:33) *
а вот это к какои кнопке относится ?
я так понимаю бит 20??
или же все таки к PDSR?-но такое название в описании я ненашел((

PDSR - название регистра модуля PIO, описание которого вы прочитать так и не удосужились sad.gif

Цитата(alexan300 @ Nov 7 2009, 21:33) *
я так думаю эта часть кода делает то же самое

Нет.

Прежде чем продолжать эксперименты, почитайте какой-нибудь букварь по языку "C" и документацию на контроллер.
Пока что вы занимаетесь в буквальном смысле тыканьем пальцем в небо.
alexan300
Цитата(aaarrr @ Nov 7 2009, 21:51) *
PDSR - название регистра модуля PIO, описание которого вы прочитать так и не удосужились sad.gif

Нет.

Прежде чем продолжать эксперименты, почитайте какой-нибудь букварь по языку "C" и документацию на контроллер.
Пока что вы занимаетесь в буквальном смысле тыканьем пальцем в небо.

PDSR позволяет через этот регистр узнать уровень на входе .)
так вс еже что значит: expeсted a "("
и & BIT19 это какая ножка?? как пересчитать на нормальный язык?
aaarrr
Цитата(alexan300 @ Nov 7 2009, 23:04) *
так вс еже что значит: expeсted a "("

Не может он на ту строку так ругаться. Даже если пропустить "*". Делайте copy-paste внимательнее.

Цитата(alexan300 @ Nov 7 2009, 23:04) *
и & BIT19 это какая ножка?? как пересчитать на нормальный язык?

Наверное, PA19, если BIT19 означает "1<<19".
alexan300
Чест слово ругается на все строки(
даже на if.
может что то в библиотеках?
но я их вроде все подключил\отключил.
все перепроверил.
sergeeff
Как я понял у автора проблемы с английским, поэтому документацию на процессор он прочесть не может. Примеры от Atmel ему неподвластны по той же причине. Внятной документации на процессор по-русски мне не встречалось. Поэтому, даже не знаю, как ему помочь. Невозможно же на каждое его пожелание присылать ему готовые фрагменты программ? Надо учить языки.

P.S. Напоследок, в порядке ликбеза. Библиотеки - это особым образом сгруппированные объектные файлы, т.е. отлаженные куски программ откомпилированы и положены в библиотеку. Вы что думаете, эти библиотеки писали такие же как вы? Поэтому выкиньте все эти глупости из головы и возьмите за основу следующее правило: все ошибки в программе совершаю я сам и сам должен в них разобраться.
aaarrr
Ссылку на перевод документации я давал еще на первой странице.

Цитата(alexan300 @ Nov 7 2009, 23:30) *
Чест слово ругается на все строки(

Значит где-то вы влепили случайно скобку. Еще раз смотрите внимательно.
sergeeff
Любой компилятор генерит файл листинга, т.е. исходного текста с/без ошибками. Если вам ну совсем непонятно, что за ошибка, можно ведь из этого файла листинга вырезать исходную строку и строку с ошибкой и прислать на всеобщее обозрение, чтобы мы все не занимались гаданием на кофейной гуще, чего вы там понаваяли!
alexan300
Смотрю что могу здесь
gaw
англииский хожу учу на курсы. в школе-техникуме-институте был немецкии
ну нету скобок..все обыскал.
рад бы приложить скрин экрана но никак(
aaarrr
Файл прикрепите (исходник).
sergeeff
Цитата(alexan300 @ Nov 7 2009, 23:50) *
рад бы приложить скрин экрана но никак(


Я вам про текстовый файл с расширением чего-нибудь типа .lst (не работаю с IAR, поэтому точнее не подскажу), который может генерить компилятор, если его об этом попросить, а вы мне про print screen. Уж действительно, правильно пишет уважаемый aaarrr - пришлите исходный текст, где есть ошибка.
alexan300
Нажмите для просмотра прикрепленного файлавот main и map.
а где листинг прячется? в каталоге лист?
если там пусто то как его туда записать?
к сожалению пришлость поменять расширение ибо запрещено мне загружать другие.

вот сделал лист..фаил он первый
sergeeff
Не определена функция delay_long или не объявлен ее прототип, если это библиотечная функция.
aaarrr
Нет, так просто нельзя. Нельзя пытаться что-то писать, не имея самых базовых знаний языка. Возьмите букварь типа Кернигана и Ричи и изучите.

CODE

#include "at91sam7s64.h"

#define BLINK_BIT (1UL << 8)
#define KEY (1UL << 0)

int main()
{
volatile int i;

*AT91C_PMC_PCER = 1UL << AT91C_ID_PIOA;
*AT91C_PIOA_PER = KEY | BLINK_BIT; // Перевели вывод в режим PIO
*AT91C_PIOA_OER = BLINK_BIT;
*AT91C_PIOA_ODR = KEY; // Переключили на вход
*AT91C_PIOA_PPUER = KEY; // Разрешили pull-up
*AT91C_PIOA_IFER = KEY; // Включили входной фильтр

for(;;)
{
// Чтение состояния
if(*AT91C_PIOA_PDSR & KEY)
{
// Если кнопка отжата (вывод в '1')
}
else
{
// Если кнопка нажата (вывод в '0')
*AT91C_PIOA_SODR = BLINK_BIT;
for(i = 0; i < 2000000; i++);
*AT91C_PIOA_CODR = BLINK_BIT;
for(i = 0; i < 2000000; i++);
}
}
}


Цитата(sergeeff @ Nov 8 2009, 00:05) *
Не определена функция delay_long или не объявлен ее прототип, если это библиотечная функция.

Да там функций в main'е нет, какие уж delay_long sad.gif
sergeeff
Хренотень полная. Автор присылает 3 файла. И какой же из них рабочий?
alexan300
Цитата(sergeeff @ Nov 8 2009, 00:24) *
Хренотень полная. Автор присылает 3 файла. И какой же из них рабочий?

РаботаЮщего там нет фаила
дык не могу я с расширениемя прикладывать..форум пишит-запрещено..
приходится открывать код в блокноте и высылать(
код высланный aaarrr компилируется без ошибок.но не реагирует мк на нажатие. )

хочу вот что заметить по поводу предыдущего кода..(в рамках своеи компетенции))
у меня такое чувство что кнопка Р0 всегда "нажата", на неи 0, и поэтому 8 всегда горит.
что то наверно с pull-up???
или я что то путаю?
aaarrr
Цитата(alexan300 @ Nov 8 2009, 01:06) *
у меня такое чувство что кнопка Р0 всегда "нажата", на неи 0, и поэтому 8 всегда горит.

Он должен мигать при нажатой кнопке и оставаться включенным/выключенным при отжатой.
Посмотрите тестером, меняется ли уровень на PA0 при нажатии кнопки.
sergeeff
Цитата(alexan300 @ Nov 8 2009, 01:06) *
дык не могу я с расширениемя прикладывать..форум пишит-запрещено..
приходится открывать код в блокноте и высылать(


А нажать правую кнопку мыши в окне с файлами, где размещен main.c, и выбрать в открывшемся меню пункт "Копировать" затем "Вставить" и полученную копию main.c с помощью команды "Переименовать" в main.txt - это надо закончить Академию Околокомпьютерных Наук?

И все же, [censored] присылать три файла, если рабочий из них один? Какой, блин?

Модератор (rezident). Сообщение отредактировано. Нарушение п.2.1б Правил форума.
alexan300
Цитата(aaarrr @ Nov 8 2009, 01:13) *
Он должен мигать при нажатой кнопке и оставаться включенным/выключенным при отжатой.
Посмотрите тестером, меняется ли уровень на PA0 при нажатии кнопки.

Да меняется проверил светодиодм. при нажатии 0. а так всегда 1.
вот еще вопросик..
Уровень, выдаваемый на линию, задается записью в регистр PIO_SODR а где мы задаем этот уровень?

PIOA_CODR = BLINK_BIT этим выражением мы сбрасываем этот бит.
может мы туда всегда 0 записываем, вот и горит 8 я нога всегда?
и тут же в 0 сбрасываем.
сорри если делитанство пишу)))
alexan300
Спасибо на последнии пост можно не отвечать я разобрался в чем проблемма.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.