Отговори на тема  [ 29 мнения ]  Отиди на страница 1, 2  Следваща
Проблем с 16F676 - не ми тръгва програмата 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Сеп 27, 2004 8:48 pm
Мнения: 59
Местоположение: София
Мнение Проблем с 16F676 - не ми тръгва програмата
За първи път използвам 16F676. От страна на хардуер е добре. Записвам програмата и я чета без грешки. Обаче не ми се стартира.

Използвам С компилатор и ICProg.
Изключил съм: WDT, PWRT, MCLR, BODEN, CP, CPD
За осцилатор съм избрал IntOSC GP4.

За Bandgap какво трябва да избера?
Изключил съм компараторите.

Как да настроя калибровъчния регистър - OSCCAL?

При начало на запис ICProg чете данни от процесора и ми казва че не съм задал : "Oscillator Calibration Value".
След това по подразбиране взима 3FFF, така че това не би трябвало да ми е проблем.

Програмата ми има само инициалиране на регистри и трябва да светне 2 светодиода, ама не иска.

Къде бъркам?


Сря Дек 01, 2004 5:37 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение Re: Проблем с 16F676 - не ми тръгва програмата
peterhr написа:
За първи път използвам 16F676. От страна на хардуер е добре. Записвам програмата и я чета без грешки. Обаче не ми се стартира.

Използвам С компилатор и ICProg.
Изключил съм: WDT, PWRT, MCLR, BODEN, CP, CPD
За осцилатор съм избрал IntOSC GP4.

За Bandgap какво трябва да избера?
Изключил съм компараторите.

Как да настроя калибровъчния регистър - OSCCAL?

При начало на запис ICProg чете данни от процесора и ми казва че не съм задал : "Oscillator Calibration Value".
След това по подразбиране взима 3FFF, така че това не би трябвало да ми е проблем.

Програмата ми има само инициалиране на регистри и трябва да светне 2 светодиода, ама не иска.

Къде бъркам?


Не, че съм капацитет по въпроса с тез процесори, но не е зле да пуснеш сорса тука. :) Колкото и да е прост, може да има някой дребен, но съществен пропуск. При мен в началото имаше много такива.


Сря Дек 01, 2004 5:41 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Сеп 27, 2004 8:48 pm
Мнения: 59
Местоположение: София
Мнение 
кода е това:

--------------
#include <Charge_Adaptor.h>
#fuses NOWDT, NOPROTECT, NOBROWNOUT, NOMCLR

// Задава адрес за калибровка
#BYTE OSCCAL = 0x90

// Задава адрес за компаратора
#BYTE CMCON = 0x19

void main()
{
// Прави всички изходи
set_tris_a (0); // 0 - out
set_tris_c (0); // 0 - out

// Централна честота - според datasheet-a
OSCCAL = 0b100000;

// Изключва компараторите
CMCON = 0x07;

output_high (PIN_A5);
output_high (PIN_C5);

}
------------------

Трябва да светнат двата светоиода, но не искат. +5В на тези изходи няма.
Сигурно е нещо в настройките ама ...


Забравих да постна и header файла:
---------------
name:Charge_Adapter.h
#include <16F676.h>
#device adc=8
#use delay(clock=4000000)
#fuses INTRC_IO, BANDGAPHIGH, BROWNOUT, MCLR
#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=9)
----------------


Сря Дек 01, 2004 5:51 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
peterhr написа:
кода е това:

--------------
#include <Charge_Adaptor.h>
#fuses NOWDT, NOPROTECT, NOBROWNOUT, NOMCLR

// Задава адрес за калибровка
#BYTE OSCCAL = 0x90

// Задава адрес за компаратора
#BYTE CMCON = 0x19

void main()
{
// Прави всички изходи
set_tris_a (0); // 0 - out
set_tris_c (0); // 0 - out

// Централна честота - според datasheet-a
OSCCAL = 0b100000;

// Изключва компараторите
CMCON = 0x07;

output_high (PIN_A5);
output_high (PIN_C5);

}
------------------

Трябва да светнат двата светоиода, но не искат. +5В на тези изходи няма.
Сигурно е нещо в настройките ама ...


Забравих да постна и header файла:
---------------
name:Charge_Adapter.h
#include <16F676.h>
#device adc=8
#use delay(clock=4000000)
#fuses INTRC_IO, BANDGAPHIGH, BROWNOUT, MCLR
#use rs232(baud=9600,parity=N,xmit=PIN_A3,rcv=PIN_A2,bits=9)
----------------


Странна работа, fuses се определят от кода. :) Сигурен ли си, че 0 е out?


Сря Дек 01, 2004 6:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
С кварц пробва ли??? На асемблер какво излиза (понякога тоя компилатор върши големи глупости).

output_high (PIN_A5);
output_high (PIN_C5);

Ей тука предполагам че има някаква каша, направена от компилатора. Предлагам да го направиш така:

Код:
#bit A5 = 0x05.5  // инициализираш A5 като променлива
#bit C5 = 0x07.5 // инициализираш С5 като променлива
(Не съм сигурен за адресите на портовете, намам даташийт пред мене)
....
....
void main()
{
...
А5 = True;// Вдигаш А5
С5 = True;// Вдигаш С5
...
}


Сря Дек 01, 2004 6:08 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Зависи с кой компилатор си.

ако си с Hi-Tech
наи коректно според мен е да си инклуднеш първо .h фаила за 16F676
и да го направиш така.

след това

#define PB(port,bit) ((unsigned)&(port)*8+(bit))
static bit PIN1 @ PB(PORTA,5);
static bit PIN2 @ PB(PORTC,5);


TRISA = 0;
TRISC = 0;

PIN1 = 1;
PIN2 = 1;


Сря Дек 01, 2004 7:15 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Съб Сеп 25, 2004 4:33 pm
Мнения: 273
Местоположение: София
Мнение 
Писал го е на CCS C.

Predatore и на мен ми се стори необичайно да виждам нещо като
output_high (PIN_A5);
но си бачка. Пък и щом от CCS препоръчват така да се прави, мисля да го правя. Не знам, тези с повечето опит с този компилатор ползват ли fast_io , т.е.

#bit A5 = 0x05.5;
А5 = 1

или

output_high(pin_A5); ?

_________________
Adios
Mozfet


Сря Дек 01, 2004 7:35 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Aма и ти си ги избрал... :wink:
PA5 се шерва с аналоговите входове, докато не запишеш с ADCON1 каквото трябва, напр. 0x06, няма да стане.
За PC5 май че е същото. Виж SPI/I2C модула, да не би той да ги държи.


Сря Дек 01, 2004 7:38 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Нед Ное 28, 2004 10:02 pm
Мнения: 141
Местоположение: София
Мнение 
bateAz написа:
PA5 се шерва с аналоговите входове, докато не запишеш с ADCON1 каквото трябва, напр. 0x06, няма да стане.
За PC5 май че е същото. Виж SPI/I2C модула, да не би той да ги държи.


TRIS-регистрите са с приоритет пред ADCON-a. Aко го ориентираш като изход, след това може да се пробваш да четеш колкото искаш - резултат - никакъв. Пробвано (не точно на тоя, ама не вярвам този да е различен от всички останали). А SPI/I2C (както и всяка периферия май) си е изключен по default.


Сря Дек 01, 2004 11:40 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Грешиш. ADCON1 трябва да се инициализира пръв.


Сря Дек 01, 2004 11:58 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Нед Ное 28, 2004 10:02 pm
Мнения: 141
Местоположение: София
Мнение 
Не мисля. И не за друго, ами щото досега всичките ми програми работят така (трис-овете винаги ги инициализирам първи, след intcon-a, option-a и тук-таме някое ресет-битче). Налагало ми се е да го лъжа - конфигурирам краката като аналогови с АДКОН-а (щото пик-а друга възможност не ми дава :evil: ), а с ТРИС-а ги ориентирам като изходи. И си имам напълно функционални няколко аналогови входа (които са входове и в трис-а) и няколко цифрови изхода (даже работят :D - в трис-а са изходи, а в АДКОН-а са аналогови)... Между другото, в началото и аз се чудех дали ще стане, но на всеки пик, който съм хванал, е така... :roll:

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


Чет Дек 02, 2004 12:10 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Сеп 27, 2004 8:48 pm
Мнения: 59
Местоположение: София
Мнение 
Мерси за отговорите.
Със CCS компилирам.

Според мен проблема не е в инициализирането на портовете с TRIS.
Някъде четох че командата output_high (???) прави изход този пин, т.е. включва и обръщането му в изход и подаването на високо ниво. Но това мисля не ми е проблема. Писах няколко програми за 16Ф628А и там всичко си вървеше.

Функциите на A5 са:
-I/O
-Timer1 clock
-Crystal/Resonator
-External clock input

Искам да използвам само вътрешния кварц, нямам външен за да правя опити.

Тук е нещо или с основните регистри или с настройките при самото програмиране.

Може ли да ми кажете нещо повече за bandgap?

Това GP4 какво означава?
Има го като допълнение на INTOSC GP4 (при избора от ICProg).

И последно - как да разкарам това калибриране което ми го иска в началото?

Много въпроси станаха, ама...


Чет Дек 02, 2004 9:56 am
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Нед Ное 28, 2004 10:02 pm
Мнения: 141
Местоположение: София
Мнение 
peterhr написа:
Това GP4 какво означава?
Има го като допълнение на INTOSC GP4 (при избора от ICProg).

И последно - как да разкарам това калибриране което ми го иска в началото?


Първото ти е, че GP4 си го ползваш като входно, изходен пин, ако му напишеш CLKOUT, оттам ще ти изкара изход на вътрешния генератор.

За калибрирането - мисля, че няма начин да го разкараш, поне с айсипрог-а, принципно той май така или иначе си е калибриран.


Чет Дек 02, 2004 10:30 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Сеп 27, 2004 8:48 pm
Мнения: 59
Местоположение: София
Мнение 
Да, ако избера да изкарва CLOCKOUT на А4 ми изкарва честотата.
Това е единственото което успях да подкарам.

Направих всички пинове изходи, вдигам ги в 1-за ама никой не слуша. Стоят си на 0V.

Според мен нещо не тръгва програмата. Ама защо ...


Чет Дек 02, 2004 11:12 am
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Нед Ное 28, 2004 10:02 pm
Мнения: 141
Местоположение: София
Мнение 
Подкарай я със симулатор - дръпни си някакъв МПЛАБ (преди 6), и я трасирай... Иначе май гадаем... Аз лично залагам на някаква простотийка, дето е като я гледаш - нищо, а иначе може да ти отрови живота (както в случая)...


Чет Дек 02, 2004 3:56 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 29 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

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


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

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