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

Регистриран на: Съб Ное 01, 2014 1:31 pm
Мнения: 1
Мнение Проблем на начинаещия
Здравейте, от 2 дни се уча да програмирам контролери на MikroC , като ги симулирам на Proteus
При желание да активирам PWM на 16f887 с код (от библиотеката на MikroC)

void main(){

trisc = portc = 0 ;
ansel = anselh = 0 ;

pwm1_init(1999) ;
pwm1_set_duty(122);
PWM1_start ;

}

При симулацията излизат на крачетата C -нулички
и грешки :
Program or EEPROM data has invalid adress [2000;2001;2002;2003] for this device

Пробвах на Real pic simulator и резултата е аналогичен. Моля за съвети.
Поздрави!


Съб Ное 01, 2014 1:49 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пет Авг 07, 2009 4:58 pm
Мнения: 273
Мнение Re: Проблем на начинаещия
Аз не симулирам на Протеус, но бих пробвал да започна от нещо минимално работещо. След като го видя, че работи добре, пиша още малко код, отново се уверявам, че работи ,както трябва, и продължавам така.

Следвайки горния подход, обикновено правя следните неща на нова платка:
1. Пускам светодиод да свети на някой крак на микроконтролера;
2. Пускам таймер и размигвам с него светодиода на определено време;
3. Пускам УАРТ;
4. Продължавам да пиша код и дебъгвам, като гледам стойности на променливи с УАРТ-а.


Вто Ное 04, 2014 4:39 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 10:16 am
Мнения: 1730
Мнение Re: Проблем на начинаещия
А пък още по - преди това, трябва да научи, че от мейн функцията не трябва да излиза.
Добави си
Код:
while (1) {}
например в края на мейн функцията и продължавай с опитите. Естествено кода който пишеш, ще трябва да го слагаш преди безкрайния цикъл..


Вто Ное 04, 2014 8:18 pm
Профил
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Пет Фев 14, 2014 4:45 pm
Мнения: 439
Местоположение: Монтана
Мнение Re: Проблем на начинаещия
Малко екзампълс няма да е във вреда:
http://www.mikroe.com/chapters/view/17/chapter-4-examples/#c4v8

Обаче аз лично нямам доверие на симулатори, когато се касае за програмен код в чипове. Съвета на marcuka68 е по-доброто решение. Ще ти трябва някаква скромна breadboard, малко жички, шепа резисторчета, кондензаторчета, светодиодчета и прочие, нормален програматор за PIC-ове и действай по метода one step at a time.
:partyman:

_________________
Не карай по-бързо от своя ангел-пазител!


Пет Ное 07, 2014 12:14 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: Проблем на начинаещия
А какъв е проблема да се симулира програмен код - много по-лесно е от аналогова симулация...


Пет Ное 07, 2014 10:25 am
Профил ICQ
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Пет Фев 14, 2014 4:45 pm
Мнения: 439
Местоположение: Монтана
Мнение Re: Проблем на начинаещия
Cekins написа:
А какъв е проблема да се симулира програмен код - много по-лесно е от аналогова симулация...

То проблеми да искаш. :D

Ще разкажа един мой случай. Почнах едно мъъъъничко проектче. Много мъничко код, с много мъничък процесор PIC12F683. И по някое време при разширяване на възможностите на устройството ми потрябва и UART. А пък 12F683 няма хардуерен, не ми се пускаше библиотеката за софтуерен UART, понеже много товари като размер на програмата... Промених конфигурацията, смених типа на процесора на PIC12F1840, компилирах, записах в чипа, и... не тръгна. ... Изгубих два дни в чудене. Програмния код за функционалността на проекта до този момент беше написан, тестван, и работещ. По метода на изключването - почнах да премахвам избрани редове от кода, после ги връщах и премахвах други, докато гада не се показа в един на пръв поглед несъмнителен ред. Побитова операция за запис на данна в масив от байтове. Бях написал математическа операция за събиране в параметъра за указване на кой байт от масива да бъде записана данната. При 12F683 си работеше нормално, но за 12F1840 не. Развойната среда е MicroBasic 6.0. И досега не знам дали е заради някаква разлика в процесорите, или компилатора има бъг.

_________________
Не карай по-бързо от своя ангел-пазител!


Пет Ное 07, 2014 12:48 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: Проблем на начинаещия
И двете :) И ядрата са различни и компилатора не е напревен като хората. Ако пишеш на бейсик, пробвай Proton-а.

Да ти обясня ся къв е проблема : 683 паметта му е разпиляна. Като дефинираш масив, той започва от първото свободно място до края на конкретната банка и продължава от първото свободно място на следващата и т.н. С други думи един масив може да е на адреси от 0х030 до края на банката (0х06F примерно) и после от 0х0А0 на следваща банка до някъде си. Зависи как са му SFR регистрите - сега не ми се гледа точно. За да можеш да ги четеш и пишеш вярно, програмата някак си трябва да установи дадения индекс къде точно се намира - абе въобще гоуем секс. Обаче - 1840 (а и цялата серия 18хх и другите нови 14бит коре) имат една екстра всички рам регистри са достъпни ЛИНЕЙНО от физически адрес 0х2000 но САМО с използването на FSR0 и FSR1, като първия свободен рам регистър в банка 0 е на адрес 0х2000, втория на 0х2001 и т.н. и примерно в банката има 80 клетки, последната ще е на адрес 0х204F а първата рам клетка от банка 1 (която е на адрес 0x0A0 примерно) ще дойде на адрес 0х2050 в линейната памет. И т.н. със всички останали банки в които има GPR-и. Комбинирано с няколкото допълнителни инструкции специално за манипулация на FSRх регистрите, работата с големи масиви на тия въшлета става доста удобна. Протон-а ги знае тия работи и се възползва максимално от тях. Не знам микорбейсик-а дали ги знае. Трябва да компилираш и да видиш когато четеш/пишеш някой индекс как точно инициализира FSR регистрите - ако го зарежда с 0х2ххх значи е добре, ама ако задава нормалния адрес е нормално да се омаже програмата. Омазва се защото индекса ти реално сочи към SFR регистър (който е в началото на следващата банка) а не към GPR (който реално е някъде по средата на банката).


Пет Ное 07, 2014 6:35 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 7 мнения ] 

Кой е на линия

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


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

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