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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Как оценить время в Keil, Не могу посчитать количество тактов
aaarrr
сообщение Apr 6 2010, 16:08
Сообщение #31


Гуру
******

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



Цитата(Nikitoc @ Apr 6 2010, 19:59) *
...теперь перестал работать.

Предлагаете угадать, как именно он "перестал работать"?
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Apr 6 2010, 16:26
Сообщение #32


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Цитата(aaarrr @ Apr 6 2010, 19:08) *
Предлагаете угадать, как именно он "перестал работать"?

Да нет же. Может в коде какая-то ошибка... Отладчиком дохожу до условия -
Код
    while (!(pSPI -> SPI_SR & AT91C_SPI_TDRE));   /* Wait for Empty Tx Buffer */

- и зависаю здесь, не могу дождаться этого флага. Линия CS в низкий уровень после загрузки SPI_TDR тоже не переводится.
Такое впечатление, что SPI вообще не включен.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 6 2010, 16:39
Сообщение #33


Гуру
******

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



Цитата(Nikitoc @ Apr 6 2010, 20:26) *
Такое впечатление, что SPI вообще не включен.

А он включен? Выложите весь код, относящийся к SPI.
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Apr 6 2010, 16:44
Сообщение #34


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Цитата(aaarrr @ Apr 6 2010, 19:39) *
А он включен? Выложите весь код, относящийся к SPI.

Код
void PIO_INIT () {
    pP_M_C -> PMC_PCER = pP_M_C -> PMC_PCER | 0x00000024;     // Enable clocking of SPI and PIO (PIO clk enable for reading input state)                    
    pPIO -> PIO_PDR = 0x80027000;         // disable PA17 I/O for PCK1 out  and PA12,13,14,31 for SPI
    pPIO -> PIO_PER = 0x00240800;         // enable PA21, PA18 and PA11 I/O
    pPIO -> PIO_PPUDR = 0xFFFFFCFF;         // Turn off pull-up resistor  except 8 and 9
    pPIO -> PIO_ODR = 0x200014FF;         // Enable input for PIO PA29, PA12, PA10, PA0-PA7
    pPIO -> PIO_OER = pPIO -> PIO_OER | 0x00240800;        // Enable out for PA11(CAMERA ON/OFF) and PA21 (ON/OFF SDcard) and PA18 (RED_LED)
}

Использую такие дефайны:
Код
#define SCBR  ((MCK/SPCK))                      /*SPI Baud Rate Divisor */

#define SPCK    18000000                      /* SPI Baud Rate */

#define QUARTZ    20000000

#define FREQ_DIV   10

#define FREQ_MUL   89

#define MCK   (((QUARTZ*(FREQ_MUL+1)/FREQ_DIV))/2)


Код
AT91S_SPI  * pSPI = AT91C_BASE_SPI;


Сообщение отредактировал Nikitoc - Apr 6 2010, 16:50
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 6 2010, 17:12
Сообщение #35


Гуру
******

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



pP_M_C чему равен? И зачем вообще использовать эти указатели?
Запись
Код
*AT91C_PMC_PCER = 1UL << AT91C_ID_SPI;

куда более читабельна и не вызывает лишних вопросов. Кроме того, не нужно читать write only регистры - PMC_PCER, PIO_OER.

Начните с приведения частоты MCK к разрешенным значениям.
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Apr 6 2010, 17:27
Сообщение #36


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Цитата
pP_M_C чему равен? И зачем вообще использовать эти указатели?

Код
AT91S_PMC  *pP_M_C = AT91C_BASE_PMC;

Цитата
Запись
Код
*AT91C_PMC_PCER = 1UL << AT91C_ID_SPI;

куда более читабельна и не вызывает лишних вопросов. Кроме того, не нужно читать write only регистры - PMC_PCER, PIO_OER.

Угу. Спасибо. Понял.
Цитата
Начните с приведения частоты MCK к разрешенным значениям.

К сожалению не помогло (уменьшил до 50МГц) симптомы те же :-(
Значения прочитанных отладчиком регистров соответствуют тому, что я в них записываю (кроме WRITE ONLY, конечно). Я в тупике.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 6 2010, 17:29
Сообщение #37


Гуру
******

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



Для write only есть соответствующие status-регистры. Проверьте, включен ли клок для SPI в PMC_PCSR.
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Apr 6 2010, 17:33
Сообщение #38


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Цитата(aaarrr @ Apr 6 2010, 20:29) *
Проверьте, включен ли клок для SPI в PMC_PCSR.

Да включен, там записано значение 0xA4

P.S. А может SPI выйти из строя? И так чтобы регистры при этом остались доступными для чтения и записи?

Сообщение отредактировал Nikitoc - Apr 6 2010, 17:36
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Apr 6 2010, 19:02
Сообщение #39


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Вот здесь http://electronix.ru/forum/index.php?showtopic=73308 у человека были похожие проблемы. Но я так и не понял поборол он их или нет.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 6 2010, 19:21
Сообщение #40


Гуру
******

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



Цитата(Nikitoc @ Apr 6 2010, 23:02) *
...я так и не понял поборол он их или нет.

Поборол, да. Просто отладчиком перестал пользоваться. Попробуйте, кстати.
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Apr 7 2010, 09:52
Сообщение #41


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Проблема решилась. Оказалось что SD-шка мертвая. Причем наглухо. Питание у нее звонится с землей. Что могло привести к таким печальным последствиям я даже не знаю. После замены карточки все заработало. Но все равно мне не понятно почему не работал SPI. Буфер ведь должен был заполниться по-любому какими-то значениями (0x00 или 0xFF) после определенного количества тактов. Да и линия CS перед началом передачи должна была опуститься, а этого не происходило. Такое впечатление, что передача вообще не начиналась. Короче неясно. Туманно.
Go to the top of the page
 
+Quote Post

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

 


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


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