|
|
  |
SAM7S, Прочитать состояние ПИНа |
|
|
|
Jul 8 2009, 12:13
|
Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955

|
Уважаемые форумчане. Помогите, пожалуйста чайнику. Написал первую прогу под АРМ. По задумке, при нажатии на кнопку (низкий уровень на PA0), светодиод на PA19 (к катоду) должен загораться, при отпускании кнопки - тухнуть. Прошиваю МК. Никакой реакции на кнопку. Видимо я как-то неправильно считываю вход с кнопки... Код #include <board.h> #include <pio/pio.h> #include <pio/pio_it.h> #include <pit/pit.h> #include <aic/aic.h> #include <tc/tc.h> #include <utility/led.h> #include <utility/trace.h>
#include <stdio.h>
//Configure PIO
static void ConfigureButton()
{ AT91C_BASE_PIOA->PIO_PER = 0xFFFFFFFF; //Enable PortA like PIO AT91C_BASE_PIOA->PIO_ODR = 1 << 19; //PA19 like IN
AT91C_BASE_PIOA->PIO_PPUER = 1 << 19; //Pull-Up PA19 AT91C_BASE_PIOA->PIO_OER = 1 << 0; //PA0 like OUT }
int main()
{ ConfigureButton(); while(1) { if(( AT91C_BASE_PIOA->PIO_PDSR & 0x00040000) == 0) { AT91C_BASE_PIOA->PIO_CODR = 0x00000001; //0 on PA0, LED on } else { AT91C_BASE_PIOA->PIO_SODR = 0x00000001; //1 on PA0, LED off } } } http://electronix.ru/forum/style_emoticons/default/help.gif
Причина редактирования: Оформление цитаты исходника.
|
|
|
|
|
Jul 8 2009, 12:39
|
Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955

|
Вписал эту строку в "static void ConfigureButton()". Эффекта нет.
|
|
|
|
|
Jul 8 2009, 12:44
|
Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955

|
И , может, я не правильно понял, но в даташите, вроде, написано, что это тактирование включается, если пин работает в режиме периферии?.. Или я ничего не понял?..
|
|
|
|
|
Jul 8 2009, 12:46
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Markfly @ Jul 8 2009, 16:44)  И , может, я не правильно понял, но в даташите, вроде, написано, что это тактирование включается, если пин работает в режиме периферии?.. Или я ничего не понял?.. Если на PIO нет тактирования, то на вход пин работать не будет. Как раз для работы в режиме периферии тактирование PIO не нужно.
|
|
|
|
|
Jul 8 2009, 13:53
|
Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955

|
Спасибо, ошибку с нумерацией я исправил.
Ура!!! Спасибо большое. Заработало!!! Буду двигаться дальше.
Сообщение отредактировал Markfly - Jul 8 2009, 13:53
|
|
|
|
|
Jul 8 2009, 14:40
|
Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955

|
Не могли бы вы еще кое-что разъяснить, уважаемый aaarrr,:.. Эта строка означает, если я правильно понимаю, AT91C_BASE_PMC->PMC_PCER = 1UL << AT91C_ID_PIOA; означает, если я правильно понимаю,: Запись в регистр PMC_PCER 1-цы сдвинутой на 2, т.е. 1 в PID2. В даташите написано, что регистр PMC_PCER - регистр разрешения периферийного тактирования... Запись 1-цы в бит этого регистра означает разрешение тактирования соответствующего периферийного устройства. Тогда я ничего не понимаю... При чем тут периферия, если мы ее не используем, и при чем тут бит 2, усли мы работаем только с 0-м и с 19-м.
Сообщение отредактировал Markfly - Jul 8 2009, 14:41
|
|
|
|
|
Jul 8 2009, 14:54
|

Гуру
     
Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515

|
Цитата При чем тут периферия, если мы ее не используем А PIO - это что, сарафан бабы Маши? Цитата и при чем тут бит 2, усли мы работаем только с 0-м и с 19-м Сложное дело. Бит 2 - это бит разрешения тактирования в регистре разрешений тактирования. Какое он имеет отношение к номерам битов PIO - никакого. А вот к самому PIO - как периферийному устройству - имеет. Он разрешает подавать на него сигналы тактирования. Почему именно бит 2? Да ни почему. Решили, что пусть бит 2 заведует тактированием PIO.
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Jul 8 2009, 14:58
|
Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955

|
Спасибо, буду разбираться.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|