Отговори на тема  [ 16 мнения ]  Отиди на страница 1, 2  Следваща
IAR PIC18 и function pointers 
Автор Съобщение
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Апр 27, 2005 2:47 pm
Мнения: 349
Местоположение: Varna
Мнение IAR PIC18 и function pointers
Може ли в иара, указателите към функции да са 2 байта? Дата модела съм го сложил на малък, но указателите към функции са си пак по 3 байта 8O .


Чет Дек 08, 2005 5:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Е не съм в час с ИАР за ПИК, ама датата и да ти е малка - какво от това. Указателя към функцията е по скоро CODE. Т.е според мен модела на кода трябва да е малък. На микрочипския компилатор двете неща са различни и моделите се задават отделно. При малък модел за кода, се простираш в 64К и указателите са двубайтови.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Чет Дек 08, 2005 6:32 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Апр 27, 2005 2:47 pm
Мнения: 349
Местоположение: Varna
Мнение 
В момента се чудя с какъв копилатор да се захвана. Правя сравнение между различните(IAR,CSS,C18,CC8E и т.н.т.) . Интересно ми е каква е цената на микрочипския, че неможах да я изровя. Комилатора е важно да поддържа даннов стек, реентрантни функции и да не ползва много временни данни. Добри оптимизации и удобни типове данни (освен стандартните 8,16,32 битови, добре ще е да има и 24 битови). Пък и не на последно място прилична цена, щото като видях цената на ИАР-а, напрао ми призля.


Чет Дек 08, 2005 7:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Значи когато е Small default size ti e 2 баита.
И е толкова ако си декларираш поинтера така
int __bank1 * p; това е 2 баита но е указател само към банк1.
Проблема с 3те баита не идва от IAR а от организацията на лаиняните пикове.
int *p си е три баита щото се пази и банката.

От компилаторите с наи много екстри е IAR. От всички IAR среди само за PIC16 е по недъгава и неразвита. За PIC18 аз лично предпочитам IAR.
Но наи добре се ориентираи към по истински процсори ако не искаш да ти побелее косата преждевременно.


Чет Дек 08, 2005 10:00 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Ако ще купуваш, тогава IAR просто е прекалено излишен лукс според мен. Аз лично ползвам C18. Отначало беше торба с бъгове, ама постепенно влезе в час. Даннов стек има, реентрантни функции не обичам да ползвам, но ако се налага - става. Само че то винаги трябва да си с едно на ум, щото пиковете не страдат от изобилие от РАМ, и всички тия неща ядат ценните ресурси. Не си спомням колко струва, но ми се мота нещо около 500$.

има си тип short long (24 бита).

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пет Дек 09, 2005 4:48 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Апр 27, 2005 2:47 pm
Мнения: 349
Местоположение: Varna
Мнение 
Никола, въпросът ми беше за указателите към функции, това с указателя към банка1 не го разбрах. Нали за указател към рама са достатъчни 2 байта, от които се ползват само 12-бита (4 бита номер на банка и 8 бита адрес). Цецо разгледах документацията на микрочипския компилатор, но неможах да разбера какво е съдържанието на section .tmpdata и section MATHDATA. Инетересуваме колко са големи, и как да разбера къде се намират.


Пон Дек 12, 2005 12:52 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Маи не съм ти прочел поста внимателно.
Ами за указателите към функции няма май никакви настроики. Малко съм се борил с Iar za picи може и да пропускам нещо.
А указването на банка ва рамките на която да сочи указателя го прави мисля че само 1 баит,но компилатора може да реши и 2 баита да е понякога ако е по добре за оптимизацията на кода. Но сочи само към банката която си му задал. Слагаш си всички променливи с които работиш с този указател в една и съща банка и така намаляваш обема на кода и подобряваш бързодеиствието.
Аз лично при PIC избягвам да ги ползвам указателите към функции. Абе общи линии наи добре е да се избягват самите пикове. Много криво нещо са.


Пон Дек 12, 2005 1:16 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
MoZaKa написа:
Цецо разгледах документацията на микрочипския компилатор, но неможах да разбера какво е съдържанието на section .tmpdata и section MATHDATA. Инетересуваме колко са големи, и как да разбера къде се намират.


1. Колко са големи? Знам ли. Динамични са, т.е всичко зависи от конкретното приложение което компилираш.

2. Къде се намират? Ами също много неясно - май имаше някакъв начин да разбереш, ама не помня.

Общо взето тия две неща са едно от най-слабите места в документацията. Това е и причината поради която не съм се опитвал да подкарам RTOS върху тоя компилатор. Факт е че такива RTOS съществуват, значи проблема е решен някак, ама...

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

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Дек 12, 2005 1:50 pm
Профил ICQ
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Апр 27, 2005 2:47 pm
Мнения: 349
Местоположение: Varna
Мнение 
Гледах FreeRTOS как се справят с проблема. Значи всички темпове на компилатора според тях се намират в началото на аксес бнак. Но това едвали е валидно ако се използва екстендед мод. C18 подържа ли inline функции и ако да как става че нещо немога да зацепа.


Пон Дек 12, 2005 3:36 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Хм и това незнам. Май няма такова нещо при тоя компилатор. Защо са ти?

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Дек 12, 2005 6:21 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Аи стига бе еба ти компилатора да няма inline. То вярно че рзправят че е много дървен ама чак пък толкова,сигурно има.


Пон Дек 12, 2005 6:42 pm
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Апр 27, 2005 2:47 pm
Мнения: 349
Местоположение: Varna
Мнение 
Абре inline май няма. Като гледам микрочеповете го правят с макроси:
#define ClrWdt() {_asm clrwdt _endasm}

Цецо, защо при interrupt функция в началото има едно movf POSTINC1,F и в края movf POSTDEC1,F. FSR1 сочи върха на стека, но за какъв дявол го правят това нещо. Да не е свързано нещо с някоя бъг при някои пикове?

P.S. Тия от freertos, казват че след компилация трябва да се провери map-файла да се види къде са .tmpdata и MATHDATA, за да се провери месторазположението и големината им дали отговарят на кода за task context saving/restoring.


Пон Дек 12, 2005 6:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Ха, ха ти направо уби всичко детско в мен. За първи път я виждам тая инструкция. Определно фигурира в сорса.
Ама защо идея си нямам. Не виждам много смисъл, но сигурно има. Да копираш регистъра в себе си - ползвал съм го само при проверки на флагове. Но тука случая не е такъв. И го има и при двете нива на прекъсване. Странно.

Сега като се замисля идеята явно е да мръдне с едно ниво стека. Направо си мяза на презастраховка срещу някой бъг. Другото е това мъртво ниво да трябва за нещо на компилатора - никъде не съм срещал документация по въпроса.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пон Дек 12, 2005 7:23 pm
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Нед Апр 17, 2005 9:23 am
Мнения: 112
Мнение 
То че има бъг в прекъсванията на 18-ките, има, но това определено не е от методите за заобикалянето му.
Или?...


Вто Дек 13, 2005 8:55 am
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

Регистриран на: Сря Апр 27, 2005 2:47 pm
Мнения: 349
Местоположение: Varna
Мнение 
Цецо с коя версия си на компилатора. Аз тествам 3.00. Интересно в по-старите весии пак ли прави такова напред/назад със стека.


Вто Дек 13, 2005 12:09 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 16 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

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


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

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