реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> SAM7S, Прочитать состояние ПИНа
Markfly
сообщение Jul 8 2009, 12:13
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955



Уважаемые форумчане. Помогите, пожалуйста чайнику.
Написал первую прогу под АРМ.
По задумке, при нажатии на кнопку (низкий уровень на PA0), светодиод на PA19 (к катоду) должен загораться, при отпускании кнопки - тухнуть.
Прошиваю МК. Никакой реакции на кнопку.
Видимо я как-то неправильно считываю вход с кнопки...
help.gif help.gif
Код
#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
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 8 2009, 12:16
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Наверное, забыли тактирование PIO включить:
Код
    AT91C_BASE_PMC->PMC_PCER = 1UL << AT91C_ID_PIOA;
Go to the top of the page
 
+Quote Post
Markfly
сообщение Jul 8 2009, 12:39
Сообщение #3





Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955



Вписал эту строку в "static void ConfigureButton()". Эффекта нет.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 8 2009, 12:43
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Кнопку и светодиод не перепутали? А то описание программе не соответствует.
Цитата
По задумке, при нажатии на кнопку (низкий уровень на PA0), светодиод на PA19 (к катоду) должен загораться, при отпускании кнопки - тухнуть.


Ну и стандартные грабли: 0x00040000 - это 1 << 18, а не 19. Старайтесь избегать подобных записей.
Go to the top of the page
 
+Quote Post
Markfly
сообщение Jul 8 2009, 12:44
Сообщение #5





Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955



И , может, я не правильно понял, но в даташите, вроде, написано, что это тактирование включается, если пин работает в режиме периферии?.. Или я ничего не понял?..
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 8 2009, 12:46
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Markfly @ Jul 8 2009, 16:44) *
И , может, я не правильно понял, но в даташите, вроде, написано, что это тактирование включается, если пин работает в режиме периферии?.. Или я ничего не понял?..

Если на PIO нет тактирования, то на вход пин работать не будет. Как раз для работы в режиме периферии тактирование PIO не нужно.
Go to the top of the page
 
+Quote Post
Markfly
сообщение Jul 8 2009, 13:53
Сообщение #7





Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955



Спасибо, ошибку с нумерацией я исправил.

Ура!!! Спасибо большое. Заработало!!! Буду двигаться дальше.

Сообщение отредактировал Markfly - Jul 8 2009, 13:53
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 8 2009, 13:54
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Markfly @ Jul 8 2009, 17:47) *
Скажите, пожалуйста, а что означает запись "1UL"? laughing.gif

Значит что компилятор будет рассматривать эту константу как Unsigned Long.
Go to the top of the page
 
+Quote Post
Markfly
сообщение Jul 8 2009, 14:40
Сообщение #9





Группа: Участник
Сообщений: 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-м. laughing.gif

Сообщение отредактировал Markfly - Jul 8 2009, 14:41
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 8 2009, 14:49
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Markfly @ Jul 8 2009, 18:40) *
Тогда я ничего не понимаю... При чем тут периферия, если мы ее не используем, и при чем тут бит 2, усли мы работаем только с 0-м и с 19-м. laughing.gif

Что-то у Вас все смешалось. Найдите в даташите табличку Peripheral Identifiers и все, надеюсь, станет ясно.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Jul 8 2009, 14:54
Сообщение #11


Гуру
******

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



Цитата
При чем тут периферия, если мы ее не используем

А PIO - это что, сарафан бабы Маши?
Цитата
и при чем тут бит 2, усли мы работаем только с 0-м и с 19-м

Сложное дело. Бит 2 - это бит разрешения тактирования в регистре разрешений тактирования.
Какое он имеет отношение к номерам битов PIO - никакого.

А вот к самому PIO - как периферийному устройству - имеет. Он разрешает подавать на него сигналы тактирования.
Почему именно бит 2? Да ни почему. Решили, что пусть бит 2 заведует тактированием PIO.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Markfly
сообщение Jul 8 2009, 14:58
Сообщение #12





Группа: Участник
Сообщений: 10
Регистрация: 6-07-09
Пользователь №: 50 955



Спасибо, буду разбираться.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 19:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.0145 секунд с 7
ELECTRONIX ©2004-2016