Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 11.02.2011, 00:32  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Осваиваем PIC24

Сообщение от Dtolok Посмотреть сообщение
так это... записывает все кроме месяца!!!
вот процедура следует в конце
мк какой?
Эту процедуру надо делать перед записью, а не после.
Реклама:
realid вне форума  
Непрочитано 11.02.2011, 09:47  
Dtolok
Гражданин KAZUS.RU
 
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
Dtolok на пути к лучшему
По умолчанию Re: Осваиваем PIC24

pic24fj64ga004 дак пишет время,день,год - а с месяцем чет нелады... может у кого на Си есть пример?
Dtolok вне форума  
Непрочитано 11.02.2011, 10:49  
varostov
Прописка
 
Регистрация: 14.10.2006
Адрес: Ростов-на-Дону
Сообщений: 113
Сказал спасибо: 14
Сказали Спасибо 32 раз(а) в 21 сообщении(ях)
varostov на пути к лучшему
По умолчанию Re: Осваиваем PIC24

Из примера на 24F16KA102 (плата XLP16):
Код:
#define SetRTCWREN()    __builtin_write_RTCWEN()      //enable RTCC modification

void UpdateRTCC(void)
{

    SetRTCWREN();           //Enable RTCC register write

    RCFGCALbits.RTCPTR = 0x3;
    RTCVAL=rtcc.w[0];     //update year
    RTCVAL=rtcc.w[1];       //update month,day
    RTCVAL=rtcc.w[2];       //update hour,day of week
    RTCVAL=rtcc.w[3];       //update the min,sec

    RCFGCALbits.RTCWREN = 0;    //Disabled RTCC value write
}

void ReadRTCC(void)
{

    RCFGCALbits.RTCPTR = 0b11;    //Setup pointer to RTCVAL
    rtcc.w[0]=RTCVAL;     //read year
    rtcc.w[1]=RTCVAL;     //read month,day
    rtcc.w[2]=RTCVAL;     //read hour,day of week
    rtcc.w[3]=RTCVAL;     //read min,sec
}

Последний раз редактировалось varostov; 11.02.2011 в 10:53.
varostov вне форума  
Сказали "Спасибо" varostov
Dtolok (11.02.2011)
Непрочитано 12.02.2011, 10:10  
Dtolok
Гражданин KAZUS.RU
 
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
Dtolok на пути к лучшему
По умолчанию Re: Осваиваем PIC24

может кому надо на mikroBasice

Код:
module  Real_time_clock
' Compiler  mikroBasic for dsPIC
        ' dim tempVal as word
         dim hours, minutes, seconds as byte
         dim days, months, years,flag_timer   as byte
         dim tempVal as word
         dim SOUND_Alarm as bit
         SOUND as sbit at LATB.9

sub procedure Display_Time()
sub procedure PIC24_RTU_SetTime(dim hours, minutes, seconds as byte)
sub procedure PIC24_RTU_SetDate(dim days, months, years as byte)
sub procedure PIC24_RTU_GetTime() 'dim hours, minutes, seconds  as byte)
sub procedure PIC24_RTU_GetDate() 'dim days, months, years   as byte)
sub procedure PIC24_RTC_Init ()
sub procedure PIC24_RTC_Unlock()
sub function PIC24_RTC_GetWeekdays () as byte
'sub Procedure PIC24_RTC_Alarm_Int ()
sub Procedure PIC24_RTC_ActivateAlarm(dim alarm_mask, alarm_count as byte,dim alarm_int as boolean)
sub Procedure PIC24_RTC_SetAlarm(dim workdays, days, months, hours, minutes, seconds as byte)
sub Procedure PIC24_RTC_DeactivateAlarm ()

implements
'вывод на экран
sub procedure Display_Time()
   Lcd_Out(1,1,chr($E0)+chr($BF)+"_")
   Lcd_Chr(1, 4, (days div 10)   + 48)      ' Print tens digit of day variable
   Lcd_Chr(1, 5, (days mod 10)   + 48)      ' Print oness digit of day variable
   Lcd_Chr(1, 6, ".")
   Lcd_Chr(1, 7, (months div 10) + 48)
   Lcd_Chr(1,8, (months mod 10) + 48)
  ' Lcd_Chr(1,15,  year_        + 56)        ' Print year vaiable + 8 (start from year 2008)
   Lcd_Out(1,10,"Bp_")
   Lcd_Chr(1, 13, (hours div 10)   + 48)
   Lcd_Chr(1, 14, (hours mod 10)   + 48)
   Lcd_Chr(1, 15, ":")
   Lcd_Chr(1, 16, (minutes div 10) + 48)
   Lcd_Chr(1,17, (minutes mod 10) + 48)
   Lcd_Chr(1, 18, ":")
   Lcd_Chr(1,19, (seconds div 10) + 48)
   Lcd_Chr(1,20, (seconds mod 10) + 48)
end sub
'*************************************************  *****************************
' запись RTC
'*************************************************  *****************************
sub procedure PIC24_RTU_SetTime(dim hours, minutes, seconds as byte)
    dim tempVal as word
    minutes = ((minutes DIV 10) ‹‹ 4) or (minutes MOD 10)
    seconds = ((seconds DIV 10) ‹‹ 4) or (seconds MOD 10)
    SetBit(RCFGCAL, 8)  'ClearBit (RCFGCAL,8)
    ClearBit (RCFGCAL, 9)
    tempVal = RTCVAL AND 0x0700
    hours = ((hours DIV 10) ‹‹ 4) or (hours MOD 10)
    SetBit(RCFGCAL, 8)
    ClearBit (RCFGCAL, 9)
    RTCVAL = tempVal or hours
    RTCVAL = (minutes  ‹‹ 8 ) or seconds
    PIC24_RTC_Unlock()
end sub
'*************************************************  *****************************
' запись RTC
'*************************************************  *****************************
sub procedure PIC24_RTU_SetDate(dim days, months, years as byte)
    days  = ((days DIV 10) ‹‹ 4) or (days MOD 10)
    months  = ((months DIV 10) ‹‹ 4) or (months MOD 10)
    years  = ((years DIV 10) ‹‹ 4) or (years MOD 10)
    SetBit(RCFGCAL, 8)
    SetBit(RCFGCAL, 9)
    RTCVAL  = years AND 0x00FF
   ' ClearBit(RCFGCAL, 8)
'    SetBit(RCFGCAL, 9)
    RTCVAL  = (months ‹‹ 8) or days
    PIC24_RTC_Unlock()
end sub

'*************************************************  *****************************
' чтение RTC
'*************************************************  *****************************
sub procedure PIC24_RTU_GetTime ()
     SetBit(RCFGCAL, 8)
     ClearBit (RCFGCAL, 9)
     hours  = lo(RTCVAL)
     seconds  = lo(RTCVAL)
     minutes  = hi(RTCVAL)
     hours  = (((hours AND 0x30) ›› 4) * 10) + (hours AND 0x0F)          '
     minutes  = (((minutes AND 0x70) ›› 4) * 10) + (minutes AND 0x0F)    '
     seconds  = (((seconds AND 0x70) ›› 4) * 10) + (seconds AND 0x0F)    '
End sub

'*************************************************  *****************************
' чтение RTC
'*************************************************  *****************************
sub procedure PIC24_RTU_GetDate() '  dim days, months, years   as byte)
   dim tempVal as word
   SetBit(RCFGCAL, 8)                '
   SetBit(RCFGCAL, 9)
   years  = lo(RTCVAL)
   months  = hi(RTCVAL)
   SetBit(RCFGCAL, 9)
   ClearBit(RCFGCAL, 8)
   days  = lo(RTCVAL)                  '
              '           '
   years  = (((years AND 0xF0) ›› 4) * 10) + (years AND 0x0F)      '
   months  = (((months AND 0x10) ›› 4) * 10) + (months AND 0x0F)   '
   days  = (((days AND 0x30) ›› 4) * 10) + (days AND 0x0F)         '
End sub'

'*************************************************  *****************************
' инициализация the RTC on a PIC24 microcontroller
' Function: RTCCInit
' Preconditions: RTCCInit must be called before.
' Overview: Enable the oscillator for the RTCC
' Input: None.
' Output: None.
'*************************************************  ******************/
sub procedure PIC24_RTC_Init ()

    ' Enables the LP OSC for RTCC operation
    asm
    ' move address of OSCCON to W1
    mov #0x0742, W1
    ' move 8-bit literal to W0, 16-bit.
    mov.b #0x02, W0
    'unlock byte 1 for OSCCONL(low byte)
    mov.b #0x46, W2
    ' unlock byte 2 for OSCCONL(low byte)
    mov.b #0x57, W3
    ' move 8-bit of Wn to OSCCON register
    ' write unlock byte 1
    mov.b W2, [W1]
    ' write unlock byte 2
    mov.b W3, [W1]
    ' enable SOSCEN
    mov.b W0, [W1]
    end asm
    ' Unlock sequence must take place for RTCEN to be written
    RCFGCAL = 0
    PIC24_RTC_Unlock()
    RCFGCAL.RTCEN = 1           ' bit15
    'RTCC pin pad conected to RTCC second clock
    PADCFG1.RTSECSEL = 1
    'RCFGCAL.RTCOE = 1         'RTCC Output Enable bit
    '* Enable the RTCC interrupt*/
    IFS3.RTCIF = 0                'clear the RTCC interrupt flag
    IEC3.RTCIE = 1            ' enable the RTCC interrupt
End sub
'*************************************************  ********************
' Function: RTCCUnlock
' Preconditions: None.
' Overview: The function allows a writing into the clock registers.
' Input: None.
' Output: None.
'*************************************************  ******************/
sub procedure PIC24_RTC_Unlock()
    asm
    'move the address of NVMKEY into W1
    MOV #0x0766, W1
    'start 55/AA sequence
    MOV #0x55, W2
    MOV W2, [W1]
    MOV #0xAA, W3
    MOV W3, [W1]
   'set the RTCWREN bit
    BSET RCFGCAL, #13
end asm
end sub
'*************************************************  *****************************
' дни недели (0 - 6) îò RTC
'*************************************************  *****************************
sub function PIC24_RTC_GetWeekdays () as byte
  SetBit(RCFGCAL, 8)
  ClearBit(RCFGCAL, 9)
  result  = (RTCVAL ›› 8) AND 0x07
End sub

''************************************************  ******************************
'' Interrupt procedure for the RTC Alarm
''************************************************  ******************************
'sub Procedure PIC24_RTC_Alarm_Int ()  org $90
'  'PLACE YOUR CODE HERE TO EXECUTE WHEN THE ALARM IS TRIGERED
'  flag_timer = 1     'ôëàã âðàùåíèÿ ëîòêà
'  inc(tempDat)
'     if tempDat › 288 then
'        inc(DW)
'     end if
'  IFS3 = IFS3 AND 0xBFFF   ' Clear RTC flag
'End sub

'*************************************************  *****************************
' Activates the alarm with given Alarm Mask Configuration
' %00000000 = Every half second
' %00000001 = Every second
' %00000010 = Every 10 seconds
' %00000011 = Every minute
' %00000100 = Every 10 minutes
'  %00000101 = Every hour
' %00000110 = Once a day
' %00000111 = Once a week
' %00001000 = Once a month
' %00001001 = Once a year (except when configured for February 29th, once every 4 years)
'*************************************************  *****************************
sub Procedure PIC24_RTC_ActivateAlarm(dim alarm_mask, alarm_count as byte,dim alarm_int as boolean)

  ALCFGRPT  = 0xC000 OR ((alarm_mask AND 0x0F) ‹‹ 10)

  if alarm_int then     '' If true, we activate the interrupt

    IFS3  = IFS3 AND 0xBFFF         ' Clear RTC flag
    IEC3  = IEC3 OR 0x4000          '  Enable RTC Int
  End if
End sub

'*************************************************  *****************************
' Set the time and date the alarm should interrupt. Please consult the datasheet
' for the parameters that is required by the alarm mask specified
'*************************************************  *****************************
sub Procedure PIC24_RTC_SetAlarm(dim workdays, days, months, hours, minutes, seconds as byte)
dim tempALCF as word

  tempALCF  = ALCFGRPT
  ALCFGRPT  = 0                      '  Deactivate the alarm to set time

  SetBit(ALCFGRPT, 9)
  ClearBit(ALCFGRPT, 8)

  hours  = ((hours DIV 10) ‹‹ 4) or (hours MOD 10)
  minutes = ((minutes DIV 10) ‹‹ 4) or (minutes MOD 10)
  seconds= ((seconds DIV 10) ‹‹ 4) or (seconds MOD 10)

  workdays= (((workdays AND 0xF0) ›› 4) * 10) + (workdays AND 0x0F)
  months  = (((months AND 0x10) ›› 4) * 10) + (months AND 0x0F)
  days  = (((days AND 0x30) ›› 4) * 10) + (days AND 0x0F)

  ALRMVAL  = (days ‹‹ 8) or months
  ALRMVAL  = (hours ‹‹ 8) or workdays
  ALRMVAL = (seconds ‹‹ 8) or minutes

  ALCFGRPT  = tempALCF                 '  Activate the alarm again
End sub

'*************************************************  *****************************
' Deactivates the alarm and it's interrupt
'*************************************************  *****************************
sub Procedure PIC24_RTC_DeactivateAlarm ()
  ALCFGRPT = 0x0000
  IEC3 = IEC3 AND 0xBFFF             ' Disable RTC Int
  IFS3  = IFS3 AND 0xBFFF            ' Clear RTC flag
End sub
end.
Dtolok вне форума  
Непрочитано 14.02.2011, 03:03  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Осваиваем PIC24

Сообщение от Dtolok Посмотреть сообщение
ну не велика проблема ... модулей то у меня много просто вызываемые функции кинул в один модуль и все ок..
Нашел решение. Надо декларировать переменную типа external. Вот пример из PIC32:
Цитата:
In the Second_Module we will make a call to the routines defined externally (r_squared and pi_r_squared). First of all, we must declare their prototypes followed with a external modifier. Then, we can proceed to the routine call :

module Second_Module

sub procedure CircleArea()
sub function r_square(dim r as float) as float external ' Declaration of the r_square routine (defined in Main_Module) followed with a external modifier
sub procedure pi_r_square(dim rr as float) external ' Declaration of the pi_r_square routine (defined in Second_Module) followed with a external modifier

implements

sub procedure CircleArea() ' Definition of the CircleArea routine
dim res as real
res = r_square(5) ' Calculate r*r
pi_r_square(res) ' Calculate pi*r*r
end sub

end.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
Dtolok (16.02.2011)
Непрочитано 16.02.2011, 00:59  
Gladkih
Гражданин KAZUS.RU
 
Регистрация: 06.08.2006
Сообщений: 694
Сказал спасибо: 24
Сказали Спасибо 38 раз(а) в 31 сообщении(ях)
Gladkih на пути к лучшему
По умолчанию Re: Осваиваем PIC24

Привет форумчане. Начал писать кусок проекта с использованием И2С + ПИК24ФЙ64ЖА02. Так вот использовал кусок кода по обмену между двумя контроллерами с предедущего проекта на 16ф877, запускаю и получается полная лажа. В общем нашел что почемуто при запросе мастера от слейва данных получается фигня. Во первых почему то после СТАРТ взводится флаг коллизии на шине. а потом после адреса линия данных поднимается к "1" на короткое время и затем в "0" при этом байт переданных данных от слейва воспринимаются мастером как бы со сдвигом на один бит.
Передача данных ведется вроде нормально, хотя я осцилограмму не смотрел, проверял в терминале.
Может кто глянет проектик да подскаже где грабли. Да, пишу в ЦЦСПИКе. Отлаживаю в ПРОТЕУСе(может это глюк ПРОТЕУСа?)
Вложения:
Тип файла: rar 123.rar (42.3 Кб, 113 просмотров)
Gladkih вне форума  
Непрочитано 18.02.2011, 10:02  
aramiha
Частый гость
 
Регистрация: 02.08.2008
Сообщений: 35
Сказал спасибо: 4
Сказали Спасибо 1 раз в 1 сообщении
aramiha на пути к лучшему
По умолчанию Re: Осваиваем PIC24

Есть у кого-нибудь пример опроса 4-проводного резистивного тачскрина для PIC24? Может даже для RTOS?
не предлагайте только из библиотеки Microchip, у меня с ним проблемы: опрос тачскрина тормозит из этой библиотеки (не любое касание опознается и др).
Кому не жалко, поделитесь, пожалуйста...
aramiha вне форума  
Непрочитано 23.02.2011, 00:41  
Dtolok
Гражданин KAZUS.RU
 
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
Dtolok на пути к лучшему
По умолчанию Re: Осваиваем PIC24

Easyrider83 не подскажешь ..хочу прикрутить к pic24 датчик влажности SHT10 - вроде как шина I2C ... какую библиатеку использовать в mikrobasic? i2c или softi2c и какая у них разница..не пойму ...
Dtolok вне форума  
Непрочитано 23.02.2011, 00:53  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: Осваиваем PIC24

Сообщение от Dtolok Посмотреть сообщение
Easyrider83 не подскажешь ..хочу прикрутить к pic24 датчик влажности SHT10 - вроде как шина I2C ... какую библиатеку использовать в mikrobasic? i2c или softi2c и какая у них разница..не пойму ...
У SHT не I2C, похож, но не он.
В даташите даже сказано:
Цитата:
The sensor cannot be addressed by I2C protocol; however, the sensor
can be connected to an I2C bus without interference with other devices connected to the bus.
Старт-условие отличается от I2C. Стоп-условия нет.
realid вне форума  
Сказали "Спасибо" realid
Dtolok (23.02.2011)
Непрочитано 26.02.2011, 22:53  
Dtolok
Гражданин KAZUS.RU
 
Регистрация: 28.11.2007
Адрес: харьков
Сообщений: 850
Сказал спасибо: 339
Сказали Спасибо 43 раз(а) в 23 сообщении(ях)
Dtolok на пути к лучшему
По умолчанию Re: Осваиваем PIC24

pic24 датчик влажности SHT10 ...нашел пример в http://www.mikroe.com/eng/products/v...proto-board/#/ для mikroBasic
Dtolok вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Осваиваем USBee Kabron Микроконтроллеры, АЦП, память и т.д 2196 29.11.2020 22:43
Proteus PIC24 CNEN2??Gluk?? rubel Proteus, KiCAD и другие ECAD 1 09.06.2011 17:45
PIC24 CTMU rubel Микроконтроллеры, АЦП, память и т.д 11 20.05.2010 15:56
PIC24 terminal VGA + отладка с USBee AX PRO dosikus Микроконтроллеры, АЦП, память и т.д 7 23.04.2010 19:08
MPLAB C Compiler for PIC24 dsPIC avr123-nm-ru Микроконтроллеры, АЦП, память и т.д 4 25.11.2009 22:53


Часовой пояс GMT +4, время: 22:16.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot