|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 11:31 pm
|
Страница 1 от 1
|
[ 5 мнения ] |
|
| Автор |
Съобщение |
|
MidNighT_SpiRiT
Ранг: Напреднал
Регистриран на: Нед Сеп 17, 2006 12:00 pm Мнения: 450 Местоположение: Plovdiv
|
 Проблем с порта на PIC
Здравейте,
няколко дни си загубих с тия пикове, използвам 18ф628А, искам да чета порта като нормален регистър (нали е уж така), само че започваше да прави странни неща, а за нещо вярно прочетено да не говорим. Сега проверявам бит по бит и няма проблеми. Сигурно и други са се сблъсквали с този проблем, споделете каква би могла да е причината?
|
| Нед Юли 15, 2007 12:38 pm |
|
 |
|
Yanek
Ранг: Новодошъл
Регистриран на: Пет Юни 29, 2007 10:59 pm Мнения: 113
|
 Re: Проблем с порта на PIC
Да не би да става дума за PIC16F628A, защото 18-ка такава не успях да открия. Ако е 16 гледам че има 2 порта А и Б, но при А, тъй като е мултиплексиран с компараторния модул трябва да има изрична инициализация за ползване на порта като нормални цифрови I/O, тъй като по подразбиране след reset този порт се инициализира към компараторния модул(дано да не греша). Ако не е причината това, пусни част от програмата поне с инициализацията и четенето на порта за да я разгледаме.
|
| Нед Юли 15, 2007 2:05 pm |
|
 |
|
MidNighT_SpiRiT
Ранг: Напреднал
Регистриран на: Нед Сеп 17, 2006 12:00 pm Мнения: 450 Местоположение: Plovdiv
|
Да, пикът е 16ф628А. За порт А знам, че трябва да се инициализира като цифров в началото, но проблемът е с порт Б. За него инициализацията е само да задам входове и изходи и друго няма. Той е цифров по подразбиране. Входове - RB0,RB4-RB7, останалите RB1-RB3 са изходи в началото - има матрична клавиатура, която се чете (тогава няма проблеми, защото чета отделните битове). След това ги променям на изходи всички(към RB4-RB7 освен редовете на клавиатурата има свързан DTMF декодер), когато декодерът вдигне RB0 с RA6 разрешавам изходните му буфери и трябва да прочета 4-ри битовата дума с RB4-RB7. Копирам направо с:
movf PORTB,w
movwf ReceiveNumber
swapf ReceiveNumber
...
Интереснтото е, че на симулацията се чете, а тук не иска. Спазил съм времената иначе за изчакване на сигнала от декодера.
|
| Нед Юли 15, 2007 4:19 pm |
|
 |
|
Yanek
Ранг: Новодошъл
Регистриран на: Пет Юни 29, 2007 10:59 pm Мнения: 113
|
 |  |  |  | MidNighT_SpiRiT написа: Да, пикът е 16ф628А. За порт А знам, че трябва да се инициализира като цифров в началото, но проблемът е с порт Б. За него инициализацията е само да задам входове и изходи и друго няма. Той е цифров по подразбиране. Входове - RB0,RB4-RB7, останалите RB1-RB3 са изходи в началото - има матрична клавиатура, която се чете (тогава няма проблеми, защото чета отделните битове). След това ги променям на изходи всички(към RB4-RB7 освен редовете на клавиатурата има свързан DTMF декодер), когато декодерът вдигне RB0 с RA6 разрешавам изходните му буфери и трябва да прочета 4-ри битовата дума с RB4-RB7. Копирам направо с: movf PORTB,w movwf ReceiveNumber swapf ReceiveNumber ... Интереснтото е, че на симулацията се чете, а тук не иска. Спазил съм времената иначе за изчакване на сигнала от декодера. |  |  |  |  |
Само за пробата, можеш ли да промениш малко четенето. Например:
swapf PORTB,w
movwf ReceiveNumber
Надявам се, че нямаш проблеми с банките.
|
| Нед Юли 15, 2007 7:06 pm |
|
 |
|
MidNighT_SpiRiT
Ранг: Напреднал
Регистриран на: Нед Сеп 17, 2006 12:00 pm Мнения: 450 Местоположение: Plovdiv
|
Да, да банките ги следа. Това не съм се сетил да го пробвам, утре ще го направя,мерси.
|
| Нед Юли 15, 2007 10:55 pm |
|
|
|
Страница 1 от 1
|
[ 5 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 10 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|