Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Проблем с порта на PIC
http://mcu-bg.com/mcu_site/viewtopic.php?f=2&t=4512
Страница 1 от 1

Автор:  MidNighT_SpiRiT [ Нед Юли 15, 2007 12:38 pm ]
Заглавие:  Проблем с порта на PIC

Здравейте,
няколко дни си загубих с тия пикове, използвам 18ф628А, искам да чета порта като нормален регистър (нали е уж така), само че започваше да прави странни неща, а за нещо вярно прочетено да не говорим. Сега проверявам бит по бит и няма проблеми. Сигурно и други са се сблъсквали с този проблем, споделете каква би могла да е причината?

Автор:  Yanek [ Нед Юли 15, 2007 2:05 pm ]
Заглавие:  Re: Проблем с порта на PIC

MidNighT_SpiRiT написа:
Здравейте,
няколко дни си загубих с тия пикове, използвам 18ф628А, искам да чета порта като нормален регистър (нали е уж така), само че започваше да прави странни неща, а за нещо вярно прочетено да не говорим. Сега проверявам бит по бит и няма проблеми. Сигурно и други са се сблъсквали с този проблем, споделете каква би могла да е причината?


Да не би да става дума за PIC16F628A, защото 18-ка такава не успях да открия. Ако е 16 гледам че има 2 порта А и Б, но при А, тъй като е мултиплексиран с компараторния модул трябва да има изрична инициализация за ползване на порта като нормални цифрови I/O, тъй като по подразбиране след reset този порт се инициализира към компараторния модул(дано да не греша). Ако не е причината това, пусни част от програмата поне с инициализацията и четенето на порта за да я разгледаме.

Автор:  MidNighT_SpiRiT [ Нед Юли 15, 2007 4:19 pm ]
Заглавие: 

Да, пикът е 16ф628А. За порт А знам, че трябва да се инициализира като цифров в началото, но проблемът е с порт Б. За него инициализацията е само да задам входове и изходи и друго няма. Той е цифров по подразбиране. Входове - RB0,RB4-RB7, останалите RB1-RB3 са изходи в началото - има матрична клавиатура, която се чете (тогава няма проблеми, защото чета отделните битове). След това ги променям на изходи всички(към RB4-RB7 освен редовете на клавиатурата има свързан DTMF декодер), когато декодерът вдигне RB0 с RA6 разрешавам изходните му буфери и трябва да прочета 4-ри битовата дума с RB4-RB7. Копирам направо с:
movf PORTB,w
movwf ReceiveNumber
swapf ReceiveNumber
...
Интереснтото е, че на симулацията се чете, а тук не иска. Спазил съм времената иначе за изчакване на сигнала от декодера.

Автор:  Yanek [ Нед Юли 15, 2007 7:06 pm ]
Заглавие: 

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

Надявам се, че нямаш проблеми с банките.

Автор:  MidNighT_SpiRiT [ Нед Юли 15, 2007 10:55 pm ]
Заглавие: 

Да, да банките ги следа. Това не съм се сетил да го пробвам, утре ще го направя,мерси.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/