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

Помощ за 16F871
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=2994
Страница 1 от 1

Автор:  Zeus [ Вто Окт 03, 2006 12:06 pm ]
Заглавие:  Помощ за 16F871

Пуснах първо тази тема във форума на Hardwarebg.com, но ме насочиха към този форум и мисля че тук и е мястото.
Та имам следния проблем:

Имам следния проблем:

Оптивам се да направя едно управление с микроконтролер, което да има и седемсегментна индикация. Досега съм работил само с 16F84A и не съм имал никакви проблеми. Обаче на него са му малко портовете и за това минах на този. Зададох му най елементарна програма (това е от MPLAB):

list p=16f871
#include <p16f871.inc>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

ORG H'0000'
goto start

start bsf STATUS,RP0
bcf STATUS,RP1
movlw B'10010100'
movwf OPTION_REG
bcf STATUS,RP0
clrf PORTA
clrf PORTB
bsf STATUS,RP0
clrf TRISA
clrf TRISB
loop nop
goto loop
END

и когато меря с мултицет изходите на PORTA и PORTB, все ми дава от 3 до 5 волта, а би трябвало да е логическа 0. Когато задържа ресета на MCLR, за момент стойностите малко падат, и като пусна - пак се възстановяват. Генератора с кварца работи, с осцилоскопа ми излиза синусуидата.
Много ще се радвам някой да помогне, а и да даде някакво инфо или линкове специално за този пик, защото почти нищо не намирам в мрежата.

P.S. Ето и листинга от IC-Prog

; Generated by WinDis84, (c) Nigel Goodwin 1998.

LIST P=16F84, F=INHX8M
include "P16FXX.inc"
ORG 0x0000

GOTO Label_0001
Label_0001 BSF STATUS , RP0
BCF STATUS , RP1
MOVLW 0x94
MOVWF OPTION_REG
BCF STATUS , RP0
CLRF PORTA
CLRF PORTB
BSF STATUS , RP0
CLRF TRISA
CLRF TRISB
Label_0002 NOP
GOTO Label_0002

и се чудя защо ми дава (LIST P=16F84, F=INHX8M), когато съм задал 16F871?

P.P.S Кварца ми е на 4MHz, не знам дали това е проблем, но не намерих 20MHz. Схемата работи на 5V.

Автор:  didofen [ Вто Окт 03, 2006 12:17 pm ]
Заглавие: 

Има няколко неща.
Първо, ти си задал в сорса, че си с 871, но задал ли си го в настройките на МПЛАБ-а? Иначе МПАСМ няма да ти копмилира както трябва.
Второ, след като конгфигурираш портовете в ТРИС-а, е хубаво да си нулираш пак и ПОРТ регистрите.
Трето, има много литература, в сайта на Микрочип има колкото искаш, и за 871 има. Ако не намериш, пиши, ще ти я пратя както искаш.
Птри още въпроси, питай.

Автор:  VSU [ Вто Окт 03, 2006 1:17 pm ]
Заглавие: 

Виж там има 1 регистър казва се ADCON1 зареди в него 0x06 за да направиш ПОРТА цифрови IN/OUT

Автор:  didofen [ Вто Окт 03, 2006 1:39 pm ]
Заглавие: 

Да бе, верно, най-важното пропуснах да спомена за АДКОН1 регистъра :evil:

Автор:  Zeus [ Вто Окт 03, 2006 3:17 pm ]
Заглавие: 

Благодаря Ви много за бързите отговори. Ще изпробвам и ще напиша за резултата. Относно документацията, се рових в microchip.com, но само намерих datasheet-a. А мен ми трябват някакви примерни сорсове специално за този чип, така че ако имате нещо, пратете.
P.S. В MPLAB-a му задавам 16F871, но като отворя HEX файла с IC-PROG не ми го пище точно същия.

Автор:  didofen [ Вто Окт 03, 2006 4:29 pm ]
Заглавие: 

къде не ти го пише точно същия. като си го отвориш в ИС-Прога, си задаваш процесора от скролбарчето. в нех файла не се съдържа вида на процесора, а само валидни машинни кодове на операции за него. Задаваш си го ипосле зареждаш нех файла. а относно примери, вече наистина е малко трудно да намериш. мога да ти пратя някои страници, ама точно за 871 няма много. пиши точно конкретна нужда, и ще ти напиша примерен код.

Автор:  Zeus [ Вто Окт 03, 2006 7:15 pm ]
Заглавие: 

didofen написа:
къде не ти го пише точно същия. като си го отвориш в ИС-Прога, си задаваш процесора от скролбарчето. в нех файла не се съдържа вида на процесора, а само валидни машинни кодове на операции за него. Задаваш си го ипосле зареждаш нех файла. а относно примери, вече наистина е малко трудно да намериш. мога да ти пратя някои страници, ама точно за 871 няма много. пиши точно конкретна нужда, и ще ти напиша примерен код.


Ами ще се радвам на каквото и да е. Просто нещо, което да тръгне, колкото и елементарно да е. Защото зацепих още от самото начало, не мога да подкарам нищо. А с 16F84A нямах никакви проблеми, но за него има доста неща в нета, а и имам книгата на български от Млад конструктор.

Автор:  didofen [ Сря Окт 04, 2006 9:42 am ]
Заглавие: 

ами ето тук има няколко готови примера: http://www.techdesign.be/projects/001/001.htm
просто сменяй 1-та на 2, и т.н., но и на двете места. на някой цифри нищо няма да излезе, давай следващата. примерите са за 874,877, но стават и за 871,872. а наистина посочи нещо конкретно за тема, и ще ти напиша програмата. кажи какви материали имаш, за да може бързо да си сглобиш схемата. инструкциите на цялата 16 серия са еднакви, разликата е в периферията (периферните регистри, с които се работи). така че ако знаеш инструкциите на 84, ще можеш лесно да се справиш и с 871. прочети внимателно пдф на 871 от сайта на микрочип и ще ти просветне, ако си на ти с тая материя.
успех :D

Автор:  Zeus [ Сря Окт 04, 2006 1:34 pm ]
Заглавие: 

didofen написа:
ами ето тук има няколко готови примера: http://www.techdesign.be/projects/001/001.htm
просто сменяй 1-та на 2, и т.н., но и на двете места. на някой цифри нищо няма да излезе, давай следващата. примерите са за 874,877, но стават и за 871,872. а наистина посочи нещо конкретно за тема, и ще ти напиша програмата. кажи какви материали имаш, за да може бързо да си сглобиш схемата. инструкциите на цялата 16 серия са еднакви, разликата е в периферията (периферните регистри, с които се работи). така че ако знаеш инструкциите на 84, ще можеш лесно да се справиш и с 871. прочети внимателно пдф на 871 от сайта на микрочип и ще ти просветне, ако си на ти с тая материя.
успех :D


Благодаря за информацията отново :). Ще трябва да прочета pdf на 16F871 подробно, защото явно има някой тънкости с този контролер, като ADCON1. Ще се помъча малко да го пусна, и ако имам въпроси ще пиша пак в тази тема. А възможно ли е чипа да е нещо дефектен, при условие че съм го взел нов, програмира се без проблеми и му работи тактовия генератор?

Автор:  didofen [ Сря Окт 04, 2006 3:04 pm ]
Заглавие: 

никога не можеш да си сигурен дали е наред контролера, но при условие че е нов и му работи кварца, моли се да е наред. а иначе е мн важно да прочетеш пдф, това фактически е най-важното и основното, а и е официална информация на производителя. тук имаш ацп, което е свързано с портА, и по подразбиране порта е включен към него (входовете са избрани за аналогови). затова трябва изрично да му кажеш, че искаш да са цифрови, като запишеш 0х06 в адцон1, който е контролен регистър 1 на ацп-то. а по въпроса, ти пусна ли си схемата, дето искаше да има 0в на портА и портБ?

Автор:  Zeus [ Сря Окт 04, 2006 3:36 pm ]
Заглавие: 

didofen написа:
никога не можеш да си сигурен дали е наред контролера, но при условие че е нов и му работи кварца, моли се да е наред. а иначе е мн важно да прочетеш пдф, това фактически е най-важното и основното, а и е официална информация на производителя. тук имаш ацп, което е свързано с портА, и по подразбиране порта е включен към него (входовете са избрани за аналогови). затова трябва изрично да му кажеш, че искаш да са цифрови, като запишеш 0х06 в адцон1, който е контролен регистър 1 на ацп-то. а по въпроса, ти пусна ли си схемата, дето искаше да има 0в на портА и портБ?


Снощи пак опитах като зададох 0х06 на ADCON1 и пак същия проблем. На PORTA си излизат логически единици на всички изводи. Предполагам, че сработва безкрайния цикъл, дето съм го дал накрая. Относно стойностите на OTION регистъра не съм сигурен 100% дали трябва да са така, защото ги взех примерно от 16F84A но би трябвало да са така. Следващия път ще пробвам с някой от другите портове, дето не са мултиплексирани, да видя какво ще излезе. В най-лошия случай ще потърся някой друг вид пик с повече портове, без допълнителни екстри като АЦП (и без това няма да го ползвам)

Автор:  didofen [ Сря Окт 04, 2006 4:00 pm ]
Заглавие: 

ама ти нулира ли портовете, СЛЕД като си ги конфигурирал като изходи? защото според програмата, би трябвало да имаш 0 на порта. а и портб не е с ацп, и поне на него трябва да имаш 0в. а по отношение на ОПТИОН регистъра, той има същото значение, като на 84, така че там нямаш проблеми. дано успееш да го подкараш, много е яко да видиш как върви програмата ти наживо!

Автор:  VSU [ Чет Окт 05, 2006 2:01 am ]
Заглавие: 

Ето ти тест за порт A,B,C i tmr0 всичко по краката на портовете A,B,C трябва да се клати :) трябва да работи с кварц >= 4МХц ако е по-малък осцилатора да е на XT

Прикачени файлове:
io_test.zip [4.5 KiB]
137 пъти

Автор:  Zeus [ Чет Окт 05, 2006 3:27 pm ]
Заглавие: 

VSU написа:
Ето ти тест за порт A,B,C i tmr0 всичко по краката на портовете A,B,C трябва да се клати :) трябва да работи с кварц >= 4МХц ако е по-малък осцилатора да е на XT


Ей, благодаря много 8) . Довечера ако имам време ще пробвам програмката, но съботa и неделя обезателно ще се позаровя в нещата, защото това ми е влязло под кожата и не ми дава мира. Като има резултати, ще пиша в тази тема.

Автор:  Zeus [ Чет Окт 05, 2006 8:59 pm ]
Заглавие: 

Най-накрая открих проблема. Благодаря много VSU (също така и на didofen). Програмирах чипа с програмата дето ми я прати VSU и като че ли всичко беше наред. И започнах да сравнявам нещата. След неколкократни проби и програмирания на чипа се оказа, че проблема е в първоначалната инициализация, а именно _LVP_OFF. Доколкото намерих информация, това се ползва за програмиране на чипа с ниски напрежения. Когато не се изключи, просто каквото и да му пробвам, явно не тръгва. След като го зададох, изкарах нулите на портовете. Предполагам, че няма да възникнат повече проблеми, но все пак... не се знае. Важното е, че има хора дето разбират нещата и са готови да помогнат. Много Ви благодаря отново. Ако има нещо друго, пак ще питам :roll:

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