Перейти к содержанию
    

Мне для примера хотя бы увидеть программу, которая бы устанавливала в единицу все разряды. :help:

#include <stdint.h>
#include <ioAT91SAM7S64.h>
void main() {
    AT91C_BASE_PIOA->PIO_PER = (uint32_t)-1;        // all outputs are IO
    AT91C_BASE_PIOA->PIO_OWER = (uint32_t)-1;        // direct write to all pins allowed


    for(;;) {
        AT91C_BASE_PIOA->PIO_ODSR = 0;        // all outputs = 0
        AT91C_BASE_PIOA->PIO_ODSR = (uint32_t)-1;    // all outputs = 1
        AT91C_BASE_PIOA->PIO_SODR = (1<<0);    // PIOA.0 = 1
        AT91C_BASE_PIOA->PIO_CODR = (1<<0);    // PIOA.0 = 0
    }
}

примерно так...

Изменено пользователем Сергей Борщ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. :)

Как увидеть содержимое регистров в EW-ARM? т.е. как по мере выполнения программы у меня меняется AT91C_BASE_PIOA->PIO_PDSR и любой другой регистр? Регистры общего назначения, статуса при отладке отображаются, но непонятно где посмотреть все прочие регистры. Добаления в список watch не помогает...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В IAR все спец.регистры показываются там же, где и обычные. Ничего добавлять/настраивать не нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. :)

Как увидеть содержимое регистров в EW-ARM? т.е. как по мере выполнения программы у меня меняется AT91C_BASE_PIOA->PIO_PDSR и любой другой регистр? Регистры общего назначения, статуса при отладке отображаются, но непонятно где посмотреть все прочие регистры. Добаления в список watch не помогает...

Или в том же окне (там в верхней части окна есть выпадающее меню периферии-где написано CPU registers) или открыть еще одно такое же (View->Registers) и в нем выбрать какую периферию смотреть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибки, всё нашел :a14:

Ещё вот вопросец есть: есть ли какой-нибудь симулятор, чтобы тестировать работу контроллера в окружении периферии? Например, в Proteus'е есть некоторые LPC21xx контроллеры, скоро ли там появятся и AT91?.. :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Людиии HELP.

Что за примудрости в Keil. Мигал я светодиодами на платке. Вот стандартная фирмовая запись обработчика прерывания:

 

long timeval;

 

/* Timer Counter 0 Interrupt executes each 10ms @ 60 MHz CPU Clock */

void tc0 (void) __irq {

++timeval;

T0IR = 1; // Clear interrupt flag

VICVectAddr = 0; // Acknowledge Interrupt

}

 

Пытаюсь внешнюю переменную timeval из головной программы изменить, а ничё не выходит. Зато сравнивать могу. Неужели тут уже критические секции мудрить надо как в вижуале?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может оптимизатор возомнил из себя слишком умного и перемудрил. Попробуйте объявить переменную так:

 

volatile long timeval;

 

А мигает то с нормальной скоростью?

 

Неужели тут уже критические секции мудрить надо как в вижуале?

А вы что думали? Прерывание может произойти в любой момент. Сосбсно в любом проце так. Если будете просто обнулять переменную (записывать в неё любое число), то без проблем. Запрещать прерывания не надо. А если в команде попытаетесь её прочитать, что-то добавить например и записать обратно, то учтите что она могла уже измениться.

Изменено пользователем GetSmart

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Люди помогите разобраться с примерами от атмела от их либов голова кругом идет. Может книгу какую нибудь посоветуете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ручками, ручками. Пока не лезть в USB и прерывания, все достаточно просто - главное помнить:

1.Переключение преиферии

2.Подачу тактовой на каждый блок.

3.Отдельные пары регистров, для enable/disable.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

http://troosh.pp.ru/arm/

 

не находится... Если у кого сохранил, просьба скинуть...

 

И еще.. Вроде, были ARM, стали SAM... Что произошло и что с совместимостью?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Были RM стали Smart ARM, смена названия исключительно маркетоидная на мой взгляд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ARM - 32bit

AVR - 8bit

не значит ли это, что при переходе с AVR на ARM памяти потребуется больше?

т.е. например, есть проект на IAR C под mega128(128кбайта flash + 32кбайта ОЗУ внешнее)

пусть и flash, и ОЗУ занято полностью

переносим проект под ARM, например sam7(128 flash, 32 ОЗУ)

и вот вопрос: хватит ли памяти у ARM'а, или памяти надо заведомо больше (как по flash так и/или по ОЗУ)?

 

есть ли возможность мудрить с выравниванием данных? но видимо лучше этого не делать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ARM - 32bit

AVR - 8bit

не значит ли это, что при переходе с AVR на ARM памяти потребуется больше?

т.е. например, есть проект на IAR C под mega128(128кбайта flash + 32кбайта ОЗУ внешнее)

пусть и flash, и ОЗУ занято полностью

переносим проект под ARM, например sam7(128 flash, 32 ОЗУ)

и вот вопрос: хватит ли памяти у ARM'а, или памяти надо заведомо больше (как по flash так и/или по ОЗУ)?

Собирал один и тот же тестовый пример (dhrystone) для AVR, ARM и ARM(Thumb). В последнем случае расход флеш был наиболее экономный. По ОЗУ ситуация чуть хуже, но я не делал ручной оптимизации данных, т. е. не заменял int на short и т. д.

есть ли возможность мудрить с выравниванием данных? но видимо лучше этого не делать

Такая возможность есть и делать это можно, но в разумных пределах, т. к. доступ к упакованным данным длительнее и накладнее по размеру программы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...