02.08.2012, 22:14
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
rexdn, Проект выложите целиком . Не видно как ваши тикеры определены в программе и в окне переменных.
В примере Ticker 32 битная , а Proteus некорректно отображает их.
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 02.08.2012 в 22:17.
|
|
|
|
02.08.2012, 22:21
|
|
Прописка
Регистрация: 20.10.2008
Сообщений: 103
Сказал спасибо: 95
Сказали Спасибо 25 раз(а) в 18 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Собственно код
В принципе файлы проэкта не особо нужны, но выложил тоже.
Код:
|
// Some small optimizations by C.Kielstra.
///////////////////////////////////////////////////////////
#include ‹18F458.h›
#use delay(clock=20000000)
#fuses HS,NOWDT,NOLVP
//RTC variables
#define XTAL_FREQUENCY 20000000
#define TIMER1_FREQUENCY (XTAL_FREQUENCY / 4) // 1 clock tick = 1 instr. cycle = crystal frequency / 4
int32 Ticker, Ticker_1, Ticker_2, Ticker_3;
int8 Seconds=0;
#define IS_LEAP(year) (year%4 == 0)
////////////////////////////////////////////////////////////////////////////////
// Initialize RTC
////////////////////////////////////////////////////////////////////////////////
void Initialize_RTC(void)
{
Ticker_1 = XTAL_FREQUENCY;
Ticker_2 = XTAL_FREQUENCY / 4;
Ticker_3 = TIMER1_FREQUENCY;
Ticker = TIMER1_FREQUENCY; // initialize clock counter to number of clocks per second
setup_timer_1( T1_INTERNAL | T1_DIV_BY_1 ); // initialize 16-bit Timer1 to interrupt
// exactly every 65536 clock cycles
// (about 76 times per second)
enable_interrupts( INT_TIMER1 ); // Start RTC
}
////////////////////////////////////////////////////////////////////////////////
// -=Process Zero Drift Real Time Clock Information=-
//
// Most algorithms configure the timer to generate an interrupt every 100ms, and
// then count the number of interrupts. The problem in that approach is that most
// clock frequencies can't be divided by 256 and you don't get an exact 100ms.
// The small errors will add up to an error of several seconds a day.
//
// The algorithm presented here is exact in the long run because it doesn't
// count the number of interrupts but counts the number of clock cycles.
////////////////////////////////////////////////////////////////////////////////
#int_TIMER1
void TIMER1_isr()
{
Ticker -= 65536; // Decrement ticker by clocks per interrupt
if ( Ticker ‹ 65536 ) // If second has expired
{ Ticker += TIMER1_FREQUENCY; // Increment ticker by clocks per second
seconds++; // Increment number of seconds
}
/* --- Optional part start ---
if (Seconds == 60) {Minutes++; Seconds=0;
if (Minutes == 60) {Hours++; Minutes=0;
if (Hours == 24) {Days++; Hours=0;
if ( (Days == 29 && Month==2 && !IS_LEAP(Year)) // February in leap year
|| (Days == 30 && Month==2) // February in normal years
|| (Days == 31 && (Month==4 || Month==6 || Month==9 || Month==11 )) // All months with 30 days
|| (Days == 32) // All months with 31 days
) {Month++; Days=1;}
if (Month == 13) {Year++; Month=1;}
}}}
--- Optional part end --- */
}
////////////////////////////////////////////////////////////////////////////////
// Example program for using the RTC
////////////////////////////////////////////////////////////////////////////////
void main()
{
int8 prev_second;
Initialize_RTC();
enable_interrupts( GLOBAL );
// loop forever
while(1)
{
// Toggle output every second
if (seconds != prev_second)
{
prev_second = seconds;
output_toggle(PIN_A1);
}
}
} |
|
|
|
|
02.08.2012, 22:39
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Сообщение от dosikus
|
В примере Ticker 32 битная , а Proteus некорректно отображает их.
|
Это понятно ?
__________________
Осторожно , злой кот
|
|
|
|
02.08.2012, 22:44
|
|
Прохожий
Регистрация: 11.09.2010
Сообщений: 2
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
теперь да
|
|
|
|
02.08.2012, 22:48
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Сообщение от Rex72
|
теперь да
|
Добавьте эти переменные в окно Watch по адресам - тип double word .
Адреса берите в окне переменных , они правильные.
__________________
Осторожно , злой кот
|
|
|
|
03.08.2012, 02:42
|
|
Прописка
Регистрация: 20.10.2008
Сообщений: 103
Сказал спасибо: 95
Сказали Спасибо 25 раз(а) в 18 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Прога по ссылке - просто супер.
Проста как веник и достаточно точна.
Спасибо за ссылочку.
Незнаю, офтоп это наверно, но не удержался.
|
|
|
|
03.08.2012, 09:16
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
rexdn, Там официальный форум поддержки CCS .
Много чего есть интересного в плане кода . Особенно что все библиотеки открыты и понятны . Главное суть понять ...
__________________
Осторожно , злой кот
|
|
|
|
05.08.2012, 21:40
|
|
Вид на жительство
Регистрация: 09.12.2006
Сообщений: 337
Сказал спасибо: 422
Сказали Спасибо 34 раз(а) в 26 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Как одновременно вывести значения с двух АЦП ( с разных входов) Проект прикладываю.
Понимаю , что поблема в строках
adc_value1 = read_adc();
adc_value2 = read_adc();
Выводится только последнее значение (В проекте одна из этих строк ///)
(Я не программист не пинайте сильно)
|
|
|
|
05.08.2012, 23:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,530
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
set_adc_channel(0);
adc_value1 = read_adc();
set_adc_channel(1);
adc_value2 = read_adc();
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
05.08.2012, 23:41
|
|
Вид на жительство
Регистрация: 09.12.2006
Сообщений: 337
Сказал спасибо: 422
Сказали Спасибо 34 раз(а) в 26 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Работает как надо
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:25.
|
|