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

 
 
> PIC32МХ695F512Н, не читает порт Б
andreichk
сообщение Jul 26 2012, 10:16
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



Привет Народ, Подскажите как правильно оформить запись для чтения и записи данных в массиивы с порта Б , так, чтобы в один массив записывались младшие байты, а в другой старшие.
Предварительно в код вписаны след. строки:

созданы 2 глоб. массива
unsigned int TFT_A[512]; // Глобальный буфер А
unsigned int TFT_B[512]; // Глобальный буфер Б

порт Б настроен на вход
TRISB = 0b1111111111111111;//читаем данные с A,B на PORTB

и собственно кусок кода для записи в массивы:

Код
   unsigned int x;  
for( x=0;x<512;x++){

       TFT_A[x] = *(((unsigned char*)(&PORTB)));//чтение порта RB0-7

       TFT_B[x] = *(((unsigned char*)(&PORTB))+1);//чтение порта RB8-15
}


Для отладки на порт подаётся 16ти битный сигнал со счётчика запрограмированного в плиске.проверено осциллографом. В результате чтение и запись старших битов кое-как, а младшие вообще не записываются.
Что я не так сделал? Заранее спасибо.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andreichk
сообщение Jul 26 2012, 20:24
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 507
Регистрация: 15-04-06
Из: Германия
Пользователь №: 16 143



простите не понял, исхронизация с чем?


--------------------
Go to the top of the page
 
+Quote Post
evc
сообщение Jul 27 2012, 09:06
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 206
Регистрация: 17-03-07
Из: Москва
Пользователь №: 26 266



Цитата(andreichk @ Jul 27 2012, 00:24) *
простите не понял, исхронизация с чем?


Вы передаете данные с плисины на процессор, так? Должна быть синхронизация. Сигнал по которому процессор будет "узнавать", что на порте есть валидные данные и (опционально) сигнал по которому плиска будет "узнавать" что данные процессор уже получил и можно подавать новые.

По коду, уточняю: В моем варианте каждый раз читается порт а затем совершается математическая операция над данными. Это медленнее вашего варианта, но проще некуда и гарантированно работает.
В вашем же варианте, адрес откуда будут сниматься данные, вычисляется один раз компилятором и поэтому потом код выполняется быстрее.
Если в обоих вариантах "не работает", значит проблема не в адресации.


--------------------
УЭР
Go to the top of the page
 
+Quote Post



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

 


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


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