Отговори на тема  [ 15 мнения ] 
Помощ за 16F871 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Вто Окт 03, 2006 11:58 am
Мнения: 924
Местоположение: Ботевград
Мнение Помощ за 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.


Вто Окт 03, 2006 12:06 pm
Профил
Ранг: Популярен
Ранг: Популярен

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


Вто Окт 03, 2006 12:17 pm
Профил ICQ
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
Виж там има 1 регистър казва се ADCON1 зареди в него 0x06 за да направиш ПОРТА цифрови IN/OUT


Вто Окт 03, 2006 1:17 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Юни 27, 2006 11:13 am
Мнения: 381
Местоположение: Варна
Мнение 
Да бе, верно, най-важното пропуснах да спомена за АДКОН1 регистъра :evil:


Последна промяна didofen на Сря Окт 04, 2006 3:05 pm, променена общо 1 път



Вто Окт 03, 2006 1:39 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

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


Вто Окт 03, 2006 3:17 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Юни 27, 2006 11:13 am
Мнения: 381
Местоположение: Варна
Мнение 
къде не ти го пише точно същия. като си го отвориш в ИС-Прога, си задаваш процесора от скролбарчето. в нех файла не се съдържа вида на процесора, а само валидни машинни кодове на операции за него. Задаваш си го ипосле зареждаш нех файла. а относно примери, вече наистина е малко трудно да намериш. мога да ти пратя някои страници, ама точно за 871 няма много. пиши точно конкретна нужда, и ще ти напиша примерен код.


Вто Окт 03, 2006 4:29 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Вто Окт 03, 2006 11:58 am
Мнения: 924
Местоположение: Ботевград
Мнение 
didofen написа:
къде не ти го пише точно същия. като си го отвориш в ИС-Прога, си задаваш процесора от скролбарчето. в нех файла не се съдържа вида на процесора, а само валидни машинни кодове на операции за него. Задаваш си го ипосле зареждаш нех файла. а относно примери, вече наистина е малко трудно да намериш. мога да ти пратя някои страници, ама точно за 871 няма много. пиши точно конкретна нужда, и ще ти напиша примерен код.


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


Вто Окт 03, 2006 7:15 pm
Профил
Ранг: Популярен
Ранг: Популярен

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


Сря Окт 04, 2006 9:42 am
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

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


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


Сря Окт 04, 2006 1:34 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Юни 27, 2006 11:13 am
Мнения: 381
Местоположение: Варна
Мнение 
никога не можеш да си сигурен дали е наред контролера, но при условие че е нов и му работи кварца, моли се да е наред. а иначе е мн важно да прочетеш пдф, това фактически е най-важното и основното, а и е официална информация на производителя. тук имаш ацп, което е свързано с портА, и по подразбиране порта е включен към него (входовете са избрани за аналогови). затова трябва изрично да му кажеш, че искаш да са цифрови, като запишеш 0х06 в адцон1, който е контролен регистър 1 на ацп-то. а по въпроса, ти пусна ли си схемата, дето искаше да има 0в на портА и портБ?


Сря Окт 04, 2006 3:04 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

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


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


Сря Окт 04, 2006 3:36 pm
Профил
Ранг: Популярен
Ранг: Популярен

Регистриран на: Вто Юни 27, 2006 11:13 am
Мнения: 381
Местоположение: Варна
Мнение 
ама ти нулира ли портовете, СЛЕД като си ги конфигурирал като изходи? защото според програмата, би трябвало да имаш 0 на порта. а и портб не е с ацп, и поне на него трябва да имаш 0в. а по отношение на ОПТИОН регистъра, той има същото значение, като на 84, така че там нямаш проблеми. дано успееш да го подкараш, много е яко да видиш как върви програмата ти наживо!


Сря Окт 04, 2006 4:00 pm
Профил ICQ
Ранг: Напреднал
Ранг: Напреднал

Регистриран на: Нед Авг 14, 2005 1:08 pm
Мнения: 433
Местоположение: Казанлък
Мнение 
Ето ти тест за порт A,B,C i tmr0 всичко по краката на портовете A,B,C трябва да се клати :) трябва да работи с кварц >= 4МХц ако е по-малък осцилатора да е на XT


Прикачени файлове:
io_test.zip [4.5 KiB]
137 пъти
Чет Окт 05, 2006 2:01 am
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Вто Окт 03, 2006 11:58 am
Мнения: 924
Местоположение: Ботевград
Мнение 
VSU написа:
Ето ти тест за порт A,B,C i tmr0 всичко по краката на портовете A,B,C трябва да се клати :) трябва да работи с кварц >= 4МХц ако е по-малък осцилатора да е на XT


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


Чет Окт 05, 2006 3:27 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

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


Чет Окт 05, 2006 8:59 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 15 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни