реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> HI-TECH C
DL36
сообщение Oct 20 2008, 04:43
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(Евгений Германович @ Oct 19 2008, 13:50) *
Вы немного неправильно указали адрес,но я туда все равно попал smile.gif
Проблема не в программе задержки,я её сам написал.
Проблема в том,что я не смог вызвать вышеозначенную функцию,и это меня сильно огорчает.
Также я не смог указать частоту посредством XTAL_FREQ .
Вот в чем основная проблема.

Ссылку поправил delay.h. Хотя странно это вроде проверял.

Приведите функцию и участок программы с локализацией проблемы, короткий.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 20 2008, 13:16
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(DL36 @ Oct 20 2008, 07:43) *
Ссылку поправил delay.h. Хотя странно это вроде проверял.

Приведите функцию и участок программы с локализацией проблемы, короткий.


#include <pic.h>

#include "C:\Program Files\HI-TECH Software\PICC\std\9.60\samples\delay\delay.h";
near char reload = 0;
_XTAL_FREQ=4MHZ;

extern void DelayMs(unsigned char);
main()
{

__CONFIG(HS & WDTDIS & PWRTEN & BORDIS & LVPDIS);


TRISA=0X00;
TRISB=0XFF;
TRISD=0X0F;



while(1)
{PORTA=0X00;
DelayMs(3);
PORTA=0xff;


}

}

С вызовом я разобрался при написании вам ответа,до этого момента не мог добиться победы.
Однако _XTAL_FREQ=4MHZ; в любых вариантах вызывает бурную реакцию хайтека.
И пользуясь случаем что такое и для чего near.И у меня еще есть кучка вопросов.Ответите???
Go to the top of the page
 
+Quote Post
DL36
сообщение Oct 21 2008, 19:18
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(Евгений Германович @ Oct 20 2008, 16:16) *
#include <pic.h>

#include "C:\Program Files\HI-TECH Software\PICC\std\9.60\samples\delay\delay.h";
near char reload = 0;
_XTAL_FREQ=4MHZ;

С вызовом я разобрался при написании вам ответа,до этого момента не мог добиться победы.
Однако _XTAL_FREQ=4MHZ; в любых вариантах вызывает бурную реакцию хайтека.
И пользуясь случаем что такое и для чего near.И у меня еще есть кучка вопросов.Ответите???

Так и должно быть в delay.h макрос описан.
Код
#ifndef XTAL_FREQ
#define XTAL_FREQ   4MHZ        /* Crystal frequency in MHz */
#endif

#define MHZ *1000L              /* number of kHz in a MHz */
#define KHZ *1                  /* number of kHz in a kHz */

#define DelayUs(x)  { unsigned char _dcnt;   \
_dcnt = (((long)(x))*(long)(XTAL_FREQ))/(long)(12MHZ);  \
        while(--_dcnt != 0) \
        continue; }

и указать компилятору значение можно только так #define XTAL_FREQ 4MHZ /* Crystal frequency in MHz */

Поменяй этот
#include "C:\Program Files\HI-TECH Software\PICC\std\9.60\samples\delay\delay.h";
на тот, что я указал.
Да еще лучьше просто копировать в папку проекта.
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 22 2008, 15:31
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(DL36 @ Oct 21 2008, 22:18) *
Так и должно быть в delay.h макрос описан.
Код
#ifndef XTAL_FREQ
#define XTAL_FREQ   4MHZ        /* Crystal frequency in MHz */
#endif

#define MHZ *1000L              /* number of kHz in a MHz */
#define KHZ *1                  /* number of kHz in a kHz */

#define DelayUs(x)  { unsigned char _dcnt;   \
_dcnt = (((long)(x))*(long)(XTAL_FREQ))/(long)(12MHZ);  \
        while(--_dcnt != 0) \
        continue; }

и указать компилятору значение можно только так #define XTAL_FREQ 4MHZ /* Crystal frequency in MHz */

Поменяй этот
#include "C:\Program Files\HI-TECH Software\PICC\std\9.60\samples\delay\delay.h";
на тот, что я указал.
Да еще лучьше просто копировать в папку проекта.

Я так и сделал.Но вылезла куча ошибок.Как мог убрал,но задержка генерируется фиксированная ,что бы не менял.При использовании #define XTAL_FREQ ХХХ MHZ с любой частотой ничего не меняется.
Это я про пример из samples я попробовал _delay_ms() из описания на хайтек таже фигня,но я не успокоился и нашел #define uS_CNT 163 и все стало хорошо 163 это период моего кварца.
Я так и не прорубил про XTAL_FREQ это что явное надувательство?Кстати или нет но в 18 пике мой текст,верхний,не пошел.
Go to the top of the page
 
+Quote Post
DL36
сообщение Oct 22 2008, 15:48
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(Евгений Германович @ Oct 22 2008, 18:31) *
Я так и сделал.Но вылезла куча ошибок.Как мог убрал,но задержка генерируется фиксированная ,что бы не менял.При использовании #define XTAL_FREQ ХХХ MHZ с любой частотой ничего не меняется.
Это я про пример из samples я попробовал _delay_ms() из описания на хайтек таже фигня,но я не успокоился и нашел #define uS_CNT 163 и все стало хорошо 163 это период моего кварца.
Я так и не прорубил про XTAL_FREQ это что явное надувательство?Кстати или нет но в 18 пике мой текст,верхний,не пошел.

Все работает, приложите к сообщению короткий запакованный проект, поправлю. У Вас нет понимания процесса.
Go to the top of the page
 
+Quote Post
xemul
сообщение Oct 22 2008, 17:57
Сообщение #21



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Евгений Германович @ Oct 20 2008, 17:16) *
Код
#include "C:\Program Files\HI-TECH Software\PICC\std\9.60\samples\delay\delay.h";

_XTAL_FREQ=4MHZ;

extern void DelayMs(unsigned char);
...

Однако _XTAL_FREQ=4MHZ; в любых вариантах вызывает бурную реакцию хайтека.

Кто такой _XTAL_FREQ, я не знаю, как, похоже, и компилятор.
Может быть так пройдет?
Код
#define XTAL_FREQ 4MHZ
#include "C:\Program Files\HI-TECH Software\PICC\std\9.60\samples\delay\delay.h"

// а это уже есть в delay.h
//extern void DelayMs(unsigned char);
...

Интересно, для кого я писал:
Цитата
Вы можете задать XTAL_FREQ обычным
#define XTAL_FREQ 4MHZ
перед
#include "path_to/delay.h"
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 23 2008, 12:41
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



xemul считаю своим долгом извиниться перед вами-виноват недоглядел smile.gif
Однако :#include <pic18.h>

//#define XTAL_FREQ=5MHZ


#include "C:\Program Files\HI-TECH Software\PICC-18\STD\9.51\samples\delay\delay.h";
#define XTAL_FREQ=9MHZ
//#define XTAL_FREQ=1MHZ

main()
{
__CONFIG(1,HS & OSCSDIS);
__CONFIG(2,BOREN & BORV42 & PWRTEN & WDTPS128 & WDTDIS);
__CONFIG(4,DEBUGEN & LVPDIS & STVREN);

TRISA=0X00;
TRISB=0XFF;

TRISD=0X00;
LATD=0x0f;



while(1)
{
PORTA=0X00;
// DelayMs(10);
DelayUs(10);

PORTA=0xff;
//DelayMs(40);
DelayUs(40);
}
}

Если поставить #define перед #include то транслятор начинает возмущаться.
Должен отметить,что если заменить DelayUs(10); на DelayMs(10); то появляется сообщение об ошибке 07.gif Естественно что изменение цифр в #define XTAL_FREQ=5MHZ ни к чему не приводит.

Для DL36 запрошенные вами файлы прилагаются.
Прикрепленные файлы
Прикрепленный файл  ______WinRAR.rar ( 1.32 килобайт ) Кол-во скачиваний: 36
 
Go to the top of the page
 
+Quote Post
xemul
сообщение Oct 23 2008, 14:10
Сообщение #23



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Вы таки невнимательны.
Код
#define a b  // OK
#define a=b  // препроцессор Вас не поймет


ЗЫЖ попробуйте использовать в сообщении теги code и /code для текстов программ (теги заключаются в [])
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 23 2008, 15:21
Сообщение #24


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



smile.gif да.
про code можно подробнее.Я готов их использовать только объясните где smile.gif и зачем

В железе не проверял,но после
#define XTAL_FREQ 5MHZ или сколь надо,в list файле отмечена положительная реакция на смену цифры.
Однако транслятор выкинул предупреждение о нежелательности задания частоты подобным образом.
Вы правы.
не подскажете как облагородить list такого кол-ва ненужных букв я ещё нигде не видел.
Go to the top of the page
 
+Quote Post
xemul
сообщение Oct 23 2008, 17:31
Сообщение #25



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Евгений Германович @ Oct 23 2008, 19:21) *
про code можно подробнее.Я готов их использовать только объясните где smile.gif и зачем

Без тегов:
main()
{
while(1)
{
}
}

С тегами:
Код
main()
{
   while(1)
   {
      сохраняется форматирование кода, и не приходится ломать глаза и голову
   }
}

В окне редактирования сообщения в панели инструментов есть кнопка с буквой #. Вот она и вставляет теги code и /code.
Еще одна полезная кнопка там же - красная буква Хе (а может быть и крестsmile.gif) поверх буквы T - "Закрыть все теги".
Цитата
В железе не проверял,но после
#define XTAL_FREQ 5MHZ или сколь надо,в list файле отмечена положительная реакция на смену цифры.
Однако транслятор выкинул предупреждение о нежелательности задания частоты подобным образом.

Вот ведь гад... Не знаю, у меня он на XTAL_FREQ, заданный любым допустимым образом, не ругается.
Цитата
не подскажете как облагородить list такого кол-ва ненужных букв я ещё нигде не видел.

Вы имеете в виду файлы листингов *.lst? Опять же не знаю - мне там все буквы нравятся и кажутся весьма полезными.smile.gif
Go to the top of the page
 
+Quote Post
DL36
сообщение Oct 24 2008, 06:12
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Все до безобразия просто

результат:
Цитата
Memory Summary:
Program space used 24h ( 36) of 4000h bytes ( 0.2%)
Data space used 0h ( 0) of 300h bytes ( 0.0%)
EEPROM space used 0h ( 0) of 100h bytes ( 0.0%)
External data memory None available
ID Location space used 0h ( 0) of 8h nibbles ( 0.0%)
Configuration bits used 4h ( 4) of 7h words ( 57.1%)

Loaded C:\#Work\tmp\Tst\Tst.cof.

********** Build successful! **********

С правками
Код
#include    <pic18.h>

#define XTAL_FREQ   4MHZ
#include "dl36.h";  //Этот файл надо всключить в проект

main()
{
    __CONFIG(1,HS & XT);
    __CONFIG(2,BOREN & BORV42 & PWRTEN & WDTPS128 & WDTDIS);
    __CONFIG(4,DEBUGEN & LVPDIS & STVREN);

TRISA=0X00;
TRISB=0XFF;

TRISD=0X00;
LATD=0x0f;

а это править нииииизя, пока понимание не прийдет
Код
#ifndef    XTAL_FREQ
#define    XTAL_FREQ    4MHZ        /* Crystal frequency in MHz */
#endif

#define    MHZ    *1000L                /* number of kHz in a MHz */
#define    KHZ    *1                    /* number of kHz in a kHz */

#define DelayUs(x)  { unsigned char _dcnt;   \
_dcnt = (((long)(x))*(long)(XTAL_FREQ))/(long)(12MHZ);  \
        while(--_dcnt != 0) \
        continue; }
/*
#define    DelayUs(x)
{
    unsigned char _dcnt;
    _dcnt = (unsigned char)((x)*((XTAL_FREQ*1.0)/(12MHZ)));
    while(--_dcnt != 0) continue;
}
*/
extern void DelayMs(unsigned char);

Прикрепленные файлы
Прикрепленный файл  Tst.rar ( 58.58 килобайт ) Кол-во скачиваний: 32
 
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 24 2008, 12:36
Сообщение #27


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Ответ увидел поздно но обязательно проверю и сообщу.
Однако сегодня ,предварительно,грязно отматерив весь хайтек,воткнул запись
#define _XTAL_FREQ 4MHZ
этот гад её спокойно заглотил,без единого возражения.
DL36 ваше отношение к функции я теперь разделяю,200% это ещё мягко сказано.функция явное барахло.
Go to the top of the page
 
+Quote Post
DL36
сообщение Oct 24 2008, 13:15
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(Евгений Германович @ Oct 24 2008, 15:36) *
Ответ увидел поздно но обязательно проверю и сообщу.
Однако сегодня ,предварительно,грязно отматерив весь хайтек,воткнул запись
#define _XTAL_FREQ 4MHZ
этот гад её спокойно заглотил,без единого возражения.
DL36 ваше отношение к функции я теперь разделяю,200% это ещё мягко сказано.функция явное барахло.

Эту строку я повторял несколько раз smile.gif
Go to the top of the page
 
+Quote Post
Евгений Германов...
сообщение Oct 24 2008, 14:53
Сообщение #29


Профессионал
*****

Группа: Свой
Сообщений: 1 079
Регистрация: 24-06-07
Из: г.Екатеринбург
Пользователь №: 28 654



Цитата(DL36 @ Oct 24 2008, 16:15) *
Эту строку я повторял несколько раз smile.gif

Простите,но мой _XTAL_FREQ 4MHZ длиннее вашего на одно подчеркивание smile.gif
Или я опять чтото проглядел?
Go to the top of the page
 
+Quote Post
DL36
сообщение Oct 25 2008, 06:01
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(Евгений Германович @ Oct 24 2008, 17:53) *
Простите,но мой _XTAL_FREQ 4MHZ длиннее вашего на одно подчеркивание smile.gif
Или я опять чтото проглядел?

Должно быть одинаково если #define _XTAL_FREQ 4MHZ то и
Код
#define DelayUs(x)  { unsigned char _dcnt;   \
_dcnt = (((long)(x))*(long)(_XTAL_FREQ))/(long)(12MHZ);  \
        while(--_dcnt != 0) \
        continue; }

Вам же символ _ ни к чему. В хайтеке _используется если надо из асма обратиться к сишной переменной.
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 02:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01521 секунд с 7
ELECTRONIX ©2004-2016