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

 
 
 
Reply to this topicStart new topic
> AT91SAM7X512 произвольно дергает лапами
mirr
сообщение Jul 13 2010, 01:39
Сообщение #1


Участник
*

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



Привет всем!!! вот снова хочу обратиться к коллективному уму форума...

проблема такая:
к AT91SAM7X512 прикручен LCD 20x2. после подачи питания увидел такую картину: подсветка LCD начинает моргать, где-то раза 3 в сек. т.е. она постоянно вкл-выкл. подсветка управляется через транзистор, который управляется лапой МК. сначала подумал что что-то с транзистором, но потом выяснилось, что на 3х лапах МК (19-21) скачет напряжение от 0,7В до 3В. эти лапы настроены как PIO на выход, но управлять ими не получается, а точнее они не реагируют. с остальными лапами все нормально.
вот код инициализации:
CODE
#define DEF_BIT_19 0x00080000
#define DEF_BIT_20 0x00100000
#define DEF_BIT_21 0x00200000
#define DEF_BIT_22 0x00400000
#define DEF_BIT_23 0x00800000
#define DEF_BIT_24 0x01000000
#define DEF_BIT_25 0x02000000
#define DEF_BIT_26 0x04000000

CODE
#define RS DEF_BIT_26
#define RW DEF_BIT_25
#define E DEF_BIT_24
#define DB4 DEF_BIT_23
#define DB5 DEF_BIT_22
#define DB6 DEF_BIT_21
#define DB7 DEF_BIT_20
#define BL DEF_BIT_19

CODE
AT91C_BASE_PIOB->PIO_PER = RS | RW | E | DB4 | DB5 | DB6 | DB7 | BL; // Enable the PIO lines
AT91C_BASE_PIOB->PIO_OER = RS | RW | E | DB4 | DB5 | DB6 | DB7 | BL; // Set PIO as output
AT91C_BASE_PIOB->PIO_PPUER = RS | RW | E | DB4 | DB5 | DB6 | DB7 | BL;
AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_PIOB); // Enable the PIOB peripheral clock

причем если настроить эти 3 лапы на вход, то с подтяжкой на них 3,46В, а без - 0,92В. и если эти лапы направить на периферию, то тоже все нормально (т.е. напряжение не скачет).
не могу понять что за беда.

поделитесь мыслями как решить эту проблему. буду очень благодарен!!!
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 13 2010, 02:07
Сообщение #2


Гуру
******

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



Цитата(mirr @ Jul 13 2010, 05:39) *
не могу понять что за беда.

Действия своей программы полностью исключили? Сделайте тестовый проект, где не будет ничего кроме управления этими лапами.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 13 2010, 02:59
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(mirr @ Jul 13 2010, 04:39) *
подсветка LCD начинает моргать, где-то раза 3 в сек.
Примерно на это время по-умолчанирю настроен watchdog. Если вы его не инициализируете, то он вам и сбрасывает процессор.
Цитата(mirr @ Jul 13 2010, 04:39) *
эти лапы настроены как PIO на выход, но управлять ими не получается, а точнее они не реагируют. с остальными лапами все нормально.
Как пишете - через SODR/CODR или через ODSR?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
mirr
сообщение Jul 13 2010, 03:30
Сообщение #4


Участник
*

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



aaarrr и Сергей Борщ, спасибо что откликнулись!!!

проблему решил, как говориться "работает так как написано".
код программы сначала писался на другой плате пока разрабатывалась новая и там было безобидное моргание светодиодами, о которых я напрочь забыл 01.gif после того как переехал на новую плату. ну а закон подлости и склероз сработали на всю силу sad.gif
Go to the top of the page
 
+Quote Post

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

 


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


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