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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> PIC18F4550 не работает
mustelus
сообщение Nov 26 2009, 15:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



Доброго всем времени суток.... У меня возникла проблема с "простой" схемкой...
Использую PIC18F4550, задума простее некуда: при запуске изначально все пины PORTD в состоянии 01010101, при появлении сигнала на RB6 состояния меняються следующим образом 10101010...
Соответственно програма простее некуда:

LIST P=18F4550, F=INHX32, r=dec
#include <P18F4550.INC>

CONFIG FOSC = HS

main:

clrf PORTB
clrf PORTD
movlw b'11111111'
movwf TRISB
movlw b'11111111'
movwf TRISB


LOOP:
btfsc PORTB,6
goto true
goto false

true:
movlw b'10101010'
movwf PORTD
goto LOOP

false:
movlw b'01010101'
movwf PORTD
goto LOOP

END

В отладчике все работает, а вот на практике, даже не дышет...
Подскажите что здесь не так, схема не верна или в програме ошибка???

Ниже прикреплена схема...
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Herz
сообщение Nov 26 2009, 16:25
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Там действительно по 20мкф конденсаторы вокруг кварца?
Go to the top of the page
 
+Quote Post
mustelus
сообщение Nov 26 2009, 17:56
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



А, нет, ошибся ninja.gif , 20pF каждый....
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Nov 26 2009, 20:52
Сообщение #4





Guests






Цитата
... Подскажите что здесь не так, схема не верна или в програме ошибка???

Похоже, и то, и другое...
По программе:
- нужно переключить порт D на выход, если хотите что-то туда выводить. Записать нули в соотв. биты TRISD. В данном случае - во все.
По схеме:
- Вывод RB6 нужно подтянуть к земле резистором (1-10К), если вы замыкаете кнопку на питание. Иначе, при ненажатой кнопке, на RB6 будет непонятно какой (плавающий) потенциал. Кстати, обычно делают наоборот - подтягивают резистором к питанию, а замыкают кнопкой на землю.
- Вывод MCLR нужно подтягивать к питанию, а не к земле. Если используете внутрисхемное программирование, то номинал резистора нужно увеличить до 5-10К.
- Светодиоды, также, лучше подключить общей точкой к питанию, а не к земле. Соответственно, развернув их, и включать подачей не 1, а 0.
- Вообще-то, не рекомендуется подключать всю нагрузку к одному порту (тем более, когда есть выбор). Можно превысить допустимый суммарный ток для порта (см. даташит).
- На питание пика, как правило, ставят два конденсатора: электролитический - емкостью в несколько единиц и десятков микрофарад, и керамический - порядка 0,1 мкф, поближе к выводам Vdd и Vss.
- Рекомендуемые номиналы конденсаторов для кварца нужно смотреть в ДШ...
Go to the top of the page
 
+Quote Post
mustelus
сообщение Nov 29 2009, 09:37
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



На кварц так и написано по 20pF каждый...
А не могли бы вы уточнить насчот питания (использую импульсный источник питания), номиналы кондеров: скажем если электролит 20 микрофорад ну и керамику 0.3 микрофарада, подойдет???
Go to the top of the page
 
+Quote Post
Herz
сообщение Nov 29 2009, 11:32
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(mustelus @ Nov 29 2009, 11:37) *
На кварц так и написано по 20pF каждый...
А не могли бы вы уточнить насчот питания (использую импульсный источник питания), номиналы кондеров: скажем если электролит 20 микрофорад ну и керамику 0.3 микрофарада, подойдет???


Да подойдёт...
Go to the top of the page
 
+Quote Post
mustelus
сообщение Dec 1 2009, 07:50
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



Добрый день еще раз....
Я немного переделал проект следующим образом: по прерыванию от любого из портов (RB0-RB2), меняеться состояние портов RD0-7 (т.е. когда на какомто RB0-RB2 true, то и на RD0-7 true, когда на RB0-RB2 false, то и на RD0-7 false), в отладчике все отлично работает
НО НА ПРАКТИКЕ ПО ПРЕЖНЕМУ НИЧЕГО....
По вашим советам я изменил схему, но никаких изменений (признаков жизни)...
ЧТО Я ЕЩЕ НЕ ТАК СДЕЛАЛ.....

Програма:


LIST P=18F4550, F=INHX32,r=dec ;directive to define processor
#include <P18F4550.INC> ;processor specific variable definitions

;******************************************************************************
;Configuration bits

CONFIG FOSC = HS ;HS oscillator, HS used by USB

;******************************************************************************
;Variable definitions


ds_temp equ 0xdd

UDATA
WREG_TEMP RES 1 ;variable in RAM for context saving
STATUS_TEMP RES 1 ;variable in RAM for context saving
BSR_TEMP RES 1 ;variable in RAM for context saving

UDATA_ACS

EXAMPLE RES 1 ;example of a variable in access RAM


;******************************************************************************
;EEPROM data

DATA_EEPROM CODE 0xf00000

DE "Test Data",0,1,2,3,4,5

;******************************************************************************
;Reset vector


RESET_VECTOR CODE 0x0000

goto Main ;go to start of main code

;******************************************************************************
;High priority interrupt vector

HI_INT_VECTOR CODE 0x0008

bra HighInt ;go to high priority interrupt routine

;******************************************************************************
;Low priority interrupt vector and routine


LOW_INT_VECTOR CODE 0x0018

bra LowInt ;go to low priority interrupt routine

;******************************************************************************
;High priority interrupt routine

CODE

HighInt:
btfss PORTB,2
goto next2
bcf INTCON3,1
bcf INTCON2,4
bsf ds_temp,0
retfie FAST

next2:
btfss PORTB,1
goto next1
bcf INTCON3,0
bcf INTCON2,5
bsf ds_temp,0
retfie FAST

next1:
btfss PORTB,0
goto next0
bcf INTCON,1
bcf INTCON2,6
bsf ds_temp,0
retfie FAST
next0:
bcf INTCON3,0
bsf INTCON2,5
bcf INTCON3,1
bsf INTCON2,4
bcf INTCON,1
bsf INTCON2,6
bcf ds_temp,0
retfie FAST

;******************************************************************************
;Low priority interrupt routine

LowInt:
movff STATUS,STATUS_TEMP ;save STATUS register
movff WREG,WREG_TEMP ;save working register
movff BSR,BSR_TEMP ;save BSR register

; *** low priority interrupt code goes here ***


movff BSR_TEMP,BSR ;restore BSR register
movff WREG_TEMP,WREG ;restore working register
movff STATUS_TEMP,STATUS ;restore STATUS register
retfie

;******************************************************************************
;Start of main program

Main:
; Interrypt
bsf RCON,7
bsf INTCON,7
bsf INTCON,4
bsf INTCON2,0
bsf INTCON2,1
bsf INTCON2,2
bsf INTCON2,5
bsf INTCON2,4
bsf INTCON3,6
bsf INTCON3,7
bsf INTCON3,4
bsf INTCON3,3


;Set PORTs
bcf T0CON,7
bsf T0CON,6
bcf T0CON,5
bcf T0CON,3
bcf T0CON,2
bcf T0CON,1
bcf T0CON,0
bcf INTCON,5
clrf PORTA
clrf PORTB
clrf PORTC
clrf PORTD
clrf PORTE
movlw 0x07
movwf ADCON1
movlw 0x07
movwf CMCON
movlw b'00000111'
movwf TRISB ;Inpyt interrypt 0,1,2
movlw b'11111111'
movwf TRISA ;
movlw b'11111111'
movwf TRISC ;
movlw 0x0;
movwf TRISD ;If interrypt true or false set states of bits
movlw b'00000000'
movwf TRISE
clrf ds_temp;


loop:
btfsc ds_temp,0
goto true
goto false

true:
movlw 0xff;
movwf PORTD
goto loop

false:
movlw 0x00;
movwf PORTD
goto loop

;******************************************************************************
;End of program
END

Схема:

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Dec 1 2009, 08:28
Сообщение #8





Guests






Цитата
Добрый день еще раз....
Я немного переделал проект следующим образом: ....
ЧТО Я ЕЩЕ НЕ ТАК СДЕЛАЛ.....

Вы начали усложнять программу, так и не добившись работоспособности первого варианта. Это не правильно. Нужно вернуться к первоначальной, простой версии вашей программы, и, для начала, заставить работать ее. Пока эту задачку не решите (на реальной схеме, а не в отладчике!) - двигаться дальше нет смысла...
Последний вариант схемы подойдет. Поменяете только в исходной версии программы RB6 на RB0, например, чтобы не переделывать схему. Проверьте все ли биты конфигурации выставлены правильно при прошивке. Посмотрите осциллографом генерит ли кварц...
Go to the top of the page
 
+Quote Post
Herz
сообщение Dec 1 2009, 10:32
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Подождите с прерываниями. Для начала упростите программу по максимуму, пусть она хоть просто моргает одним светодиодом в бесконечном цикле. Добейтесь, чтобы "задышала". WDT отключен? Осциллограф есть? Проверьте генерацию (может и генератор сконфигурирован неправильно), возьмите кварц частотой поменьше для начала.
Go to the top of the page
 
+Quote Post
mustelus
сообщение Dec 1 2009, 10:48
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



Кварц генерит, проверил осциллографам...
WDT отключон....
Меня смущает вот что, кондеры на кварц по 20пФ я взял не новые а выпоял из платы, если быть точнее то один по замерам гдето 18 пФ, а другой 19.5пФ (но кварц та генерит)...
На сколько я знаю ето не критично, кварц та генерит, вот только значение частоты не посмотрел (осцилограф не позваляет)...
Может в етом проблема...
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Dec 1 2009, 11:05
Сообщение #11





Guests






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

LIST P=18F4550, F=INHX32, r=dec
#include <P18F4550.INC>
CONFIG FOSC = HS
main:
clrf PORTD
movlw b'00000000'
movwf TRISD
movlw b'11111111'
movwf PORTD
LOOP:
goto LOOP
END

Если заработает, то все светодиоды должны зажечься, согласно вашей схеме.
Разберитесь со значеними всех битов конфигурации по даташиту и установите нужные значения.
Часто забывают отключить WDT, режим низковольтного программирования и режим отладчика.
P.S. Чем прошиваете-то?
Go to the top of the page
 
+Quote Post
mustelus
сообщение Dec 1 2009, 15:44
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



Прошиваю програматором "Phyton ChipProgUSB"...
Я в курсе про все биты конфигурации rolleyes.gif
Go to the top of the page
 
+Quote Post
mustelus
сообщение Dec 2 2009, 10:15
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



Все, нашол, все дело в MCLR (подтянул вывод MCLR через резистор 5К не к питанию а к общей точке), ну запутался маленько и не туда ткнул.... laughing.gif
Go to the top of the page
 
+Quote Post
mustelus
сообщение Dec 15 2009, 21:04
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 21-11-08
Из: BELARUS
Пользователь №: 41 837



Здравствуйте госпада.... Продолжаю сражаться с микрокантролером...
На сей раз дособрал схему для работы по USB шине, но снова проблема, не осуществляеться подключение к компу (при подключении шнура вообще никаких признаков, ни неопознанных оборудований ничего)....
В чом еще может быть проблема....
Вот схема...

Прикрепленное изображение


Сообщение отредактировал mustelus - Dec 15 2009, 21:12
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Dec 15 2009, 22:01
Сообщение #15


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(mustelus @ Dec 15 2009, 16:04) *
Здравствуйте госпада.... Продолжаю сражаться с микрокантролером...
На сей раз дособрал схему для работы по USB шине, но снова проблема, не осуществляеться подключение к компу (при подключении шнура вообще никаких признаков, ни неопознанных оборудований ничего)....
В чом еще может быть проблема....

А в чем проблема? Все работает как и должно. Чип-то отключен от шины пока вы регистры не проинициализируете. USB это вам не КОМ-порт и не паралелльный порт, все ГОРАЗДО сложнее. Возьмите сампл ЮСБ программу на микрочип.ком. Хотя вряд ли полегчает, учитывая ваши проблеммы со светодиодами.
Go to the top of the page
 
+Quote Post

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

 


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


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