Перейти к содержанию

часы реального времени PCF8563, использование TWI в codevision


okolocxem

Рекомендуемые сообщения

привет! есть кто живой? всех с праздниками!

пока ждал заказанных rtc, поигрался с разными часами в протеусе (1302, 1307, 8563). пользовался встроенными библиотеками кодвижона - все работает, все норм. разве что 8563 подключил с помощью либы "i2c" - рабоатает, но часы явно отстают. как я понял из-за того, что во встроенной i2c.h нет настройки частоты.

вот решил попробовать эти часы запустить с библиотекой TWI.h из того же кодвижена, но вылазят ошибки, причем в местах, тупо скопированных из комментария либы по подключению. код добавил ниже, объясните, в чем ошибки?

 ОШИБКИ В КОММЕНТЫ ДОБАВИЛ

/*---------------------------------------------------------------
pcf8563 test
---------------------------------------------------------------*/

#include <mega88pa.h>
#include <pcf8563_twi.h>

#define TWI_CLK_RATE 100000
#define MCU_FREQ_ 8000000
TWI_MASTER_INFO_t twi_master; // ЗДЕСЬ ВЫДАЕТ ОШИБКУ " '(' expected " !!!

interrupt [TWI] void twi_master_isr(void)
 { twi_master_int_handler(&twi_master); // ОШИБКА " undefined symbol 'twi_master_int_handler' " }

void main(void)
{
  unsigned char day=1, month=1, hour=6, min=6, sec=6;
  int year=8;

  twi_init(&TWI0,TWI_SDASETUP_4CYC_gc,TWI_SDAHOLD_OFF_gc,false); // ОШИБКА " undefined symbol 'twi_init' "
  twi_master_init(&twi_master,&TWI0,TWI_BAUD_REG(MCU_FREQ_,TWI_CLK_RATE));
  pcf8563_twi_init(&twi_master);
  #asm("sei")
   
  while(1) {}
}

чушь какая-то... особенно смущает, что про функции из "twi.h" (которая в этом проекте видится кодвижоном) компилятор пишет как про какие-то символы...

Изменено пользователем okolocxem
Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

10 минут назад, snn_krs сказал:

В библиотеке перед примером написано: Пример использования для atXmega

там в ней дальше написано:

"FOR AVR8X CHIPS THE TWI PERIPHERAL
  USED FOR COMMUNICATION WITH THE PCF8563
  CHIP MUST BE FIRST INITIALIZED, AS IN THE
  EXAMPLE BELOW: ..."

и оттудаво я и копировал.

по ошибкам нет мыслей, что это может быть? может я структуру как-то не правильно определяю?

 

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

#ifdef _ATXMEGA_DEVICE_
#include <twix.h>
#pragma used+
void pcf8563_twi_init(TWI_MASTER_INFO_t *ptwim);
#pragma used-
#else
#include <twi.h>
#endif

 В twi.h нет объявлений TWI_MASTER_INFO_t и других на которые ошибки

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

45 минут назад, snn_krs сказал:

В twi.h нет объявлений TWI_MASTER_INFO_t и других на которые ошибки

может я чего не понимаю, но вроде есть...

вот мой twi.h в кодвижн

Скрытый текст

/******************************************************************************
 TWI driver library for the CodeVisionAVR C V3 Compiler
 
 Copyright (C) 2010-2017 Pavel Haiduc, HP InfoTech S.R.L., All rights reserved.
*******************************************************************************/

#ifndef _TWI_INCLUDED_
#define _TWI_INCLUDED_

#include <stdbool.h>

#ifdef _AVR8X_DEVICE_
// TWI functions for AVR8X devices (ATtiny416/417/814/816/817)

#include <string.h>
#include <io.h>

// TWI module general initialization
// module - pointer to the TWI peripheral module to be initialized
// sda_setup - specify the SDA setup time of 4 or 8 cycles
// sda_hold - specify the internal hold time on SDA with respect to the
//            SCL negative edge
// fast_mode - enable using the Fast Mode Plus 1MHz bus speed
void twi_init(TWI_t *module,TWI_SDASETUP_t sda_setup,TWI_SDAHOLD_t sda_hold, bool fast_mode);

// TWI master definitions & functions

// structure that holds information used by the TWI master
// for performing a TWI bus transaction
typedef struct
{
TWI_t *module;                // ptr. to the used TWI interface module 
unsigned char slave_address;  // I2C slave address
unsigned char *tx_buffer;     // ptr. to transmit buffer
unsigned char bytes_to_tx;    // number of bytes to transmit to the slave
unsigned char tx_counter;     // number of transmitted bytes
unsigned char *rx_buffer;     // ptr. to receive buffer
unsigned char bytes_to_rx;    // number of bytes to receive from the slave
unsigned char rx_counter;     // number of received bytes
unsigned char result;         // transaction result
} TWI_MASTER_INFO_t;

// TWI master transaction result values
#define TWIM_RES_UNKNOWN 0
#define TWIM_RES_OK 1
#define TWIM_RES_BUFFER_OVERFLOW 2
#define TWIM_RES_ARBITRATION_LOST 3
#define TWIM_RES_BUS_ERROR 4
#define TWIM_RES_NACK_RECEIVED 5
#define TWIM_RES_FAIL 6

// macro used for calculating the value of the BAUD register for the desired
// TWI clock rate TWI_CLK_RATE [bps] based on the System Clock SYS_CLK [Hz]
#define TWI_BAUD_REG(SYS_CLK,TWI_CLK_RATE) (((SYS_CLK)/((TWI_CLK_RATE)*2))-5)

// TWI module general initialization
// module - pointer to the TWI peripheral module to be initialized
// sda_setup - specify the SDA setup time of 4 or 8 cycles
// sda_hold - specify the internal hold time on SDA with respect to the
//            SCL negative edge
// fast_mode - enable using the Fast Mode Plus 1MHz bus speed
void twi_init(TWI_t *module,TWI_SDASETUP_t sda_setup,TWI_SDAHOLD_t sda_hold, bool fast_mode);

// TWI master initialization
// twi - pointer to the structure that holds information used by the TWI master
// for performing a TWI bus transaction
// module - pointer to the TWI peripheral module to be initialized as TWI master
// int_level - interrupt priority level to be used for TWI master
// baud_reg - initialization value for the TWI master BAUD register
void twi_master_init(
     TWI_MASTER_INFO_t *twi,
     TWI_t *module,
     unsigned char baud_reg);
     
// TWI master interrupt handler
// twi - pointer to the structure that holds information used by the TWI master
void twi_master_int_handler(TWI_MASTER_INFO_t *twi);

// function used for performing a TWI master transaction
// twi - pointer to the structure that holds information used by the TWI master
// slave_addr - 7 bit address of the TWI slave with which the transaction must be performed
// tx_data - pointer to the buffer that holds the data to be transmitted to the slave
// tx_count - number of bytes that must be transmitted to the slave during the transaction
// rx_data - pointer to the buffer that holds the data received from the slave
// rx_count - number of bytes that must be received from the slave during the transaction
// returns true on success
bool twi_master_trans(
     TWI_MASTER_INFO_t *twi,
     unsigned char slave_addr,
     unsigned char *tx_data, unsigned char tx_count,
     unsigned char *rx_data, unsigned char rx_count);

// TWI slave definitions & functions
     
// structure that holds information used by the TWI slave
// for performing a TWI bus transaction
typedef struct
{
TWI_t *module;                // ptr. to the used TWI interface module
unsigned char *rx_buffer;     // ptr. to receive buffer
unsigned char rx_buffer_size; // receive buffer size
unsigned char rx_index;       // index in the receive buffer of the last received byte
unsigned char *tx_buffer;     // ptr. to transmit buffer
unsigned char tx_index;       // index in the transmit buffer of the last transmitted byte
unsigned char bytes_to_tx;    // number of bytes to transmit to the master
void (*twi_trans) (void);     // pointer to TWI slave transaction processing function
unsigned result;              // transaction result
} TWI_SLAVE_INFO_t;

// TWI slave transaction result values
#define TWIS_RES_UNKNOWN 0
#define TWIS_RES_OK 1
#define TWIS_RES_ADDR_MATCH 2
#define TWIS_RES_BUFFER_OVERFLOW 3
#define TWIS_RES_TRANSMIT_COLLISION 4
#define TWIS_RES_BUS_ERROR 5
#define TWIS_RES_FAIL 6
#define TWIS_RES_HALT 7

// TWI slave initialization
// twi - pointer to the structure that holds information used by the TWI slave
// for performing a TWI bus transaction
// module - pointer to the TWI peripheral module to be initialized as TWI slave
// int_level - interrupt priority level to be used for TWI slave
// match_any_addr - if true, the slave match address logic responds to all received addresses
// addr - 7 bit address of the TWI slave
// addr_mask_reg - value for the SADDRMASK register:
//                 if bit 0=0 -> bits 1..7 = slave address bit mask
//                 if bit 0=1 -> bits 1..7 = second slave address
// rx_buffer - pointer to the slave receive buffer
// rx_buffer_size - size of the slave receive buffer
// tx_buffer - pointer to the slave transmit buffer
// twi_slave_trans - pointer to the TWI slave transaction processing function
void twi_slave_init(
     TWI_SLAVE_INFO_t *twi,
     TWI_t *module,
     bool match_any_addr,
     unsigned char addr,
     unsigned char addr_mask_reg,
     unsigned char *rx_buffer,
     unsigned char rx_buffer_size,
     unsigned char *tx_buffer,
     void (*twi_slave_trans)(void));
     
// TWI slave interrupt handler
// twi - pointer to the structure that holds information used by the TWI slave 
void twi_slave_int_handler(TWI_SLAVE_INFO_t *twi);

// function used to halt a TWI slave transaction
// twi - pointer to the structure that holds information used by the TWI slave 
void twi_slave_halt_trans(TWI_SLAVE_INFO_t *twi);

#pragma library twi8x.lib
          
#else
// TWI functions for AVR8 devices

// TWI transaction result values
#define TWI_RES_OK 0
#define TWI_RES_BUFFER_OVERFLOW 1
#define TWI_RES_ARBITRATION_LOST 2
#define TWI_RES_BUS_ERROR 3
#define TWI_RES_NACK_RECEIVED 4
#define TWI_RES_BUS_TIMEOUT 5
#define TWI_RES_FAIL 6
#define TWI_RES_UNKNOWN 7

extern unsigned char twi_tx_index; // data index in the transmit buffer
extern unsigned char twi_rx_index; // data index in the receive buffer
extern unsigned char twi_result; // holds the result of the last TWI transaction

// TWI master initialization
// bit_rate - SCL bit rate [kHz]
void twi_master_init(unsigned int bit_rate);

// function used for performing a TWI master transaction
// slave_addr - 7 bit address of the TWI slave with which the transaction must be performed
// tx_data - pointer to the buffer that holds the data to be transmitted to the slave
// tx_count - number of bytes that must be transmitted to the slave during the transaction
// rx_data - pointer to the buffer that holds the data received from the slave
// rx_count - number of bytes that must be received from the slave during the transaction
// returns true on success
bool twi_master_trans(
     unsigned char slave_addr,
     unsigned char *tx_data, unsigned char tx_count,
     unsigned char *rx_data, unsigned char rx_count);

// TWI slave initialization
// match_any_addr - if true, the slave match address logic responds to all received addresses
// addr - 7 bit address of the TWI slave
// rx_buffer - pointer to the slave receive buffer
// rx_buffer_size - size of the slave receive buffer
// tx_buffer - pointer to the slave transmit buffer
// slave_rx_handler - pointer to the TWI slave receive processing function
// slave_tx_handler - pointer to the TWI slave transmit processing function
void twi_slave_init(
     bool match_any_addr,
     unsigned char addr,
     unsigned char *rx_buffer,
     unsigned char rx_buffer_size,
     unsigned char *tx_buffer,
     bool (*slave_rx_handler)(bool rx_complete),
     unsigned char (*slave_tx_handler)(bool tx_complete)
     );

#pragma library twi.lib

#endif

#endif
 

если комменты убрать то получается вот что:

#ifdef _AVR8X_DEVICE_

#include <string.h>
#include <io.h>

void twi_init(TWI_t *module,TWI_SDASETUP_t sda_setup,TWI_SDAHOLD_t sda_hold, bool fast_mode);

typedef struct
{
TWI_t *module;                // ptr. to the used TWI interface module 
unsigned char slave_address;  // I2C slave address
unsigned char *tx_buffer;     // ptr. to transmit buffer
unsigned char bytes_to_tx;    // number of bytes to transmit to the slave
unsigned char tx_counter;     // number of transmitted bytes
unsigned char *rx_buffer;     // ptr. to receive buffer
unsigned char bytes_to_rx;    // number of bytes to receive from the slave
unsigned char rx_counter;     // number of received bytes
unsigned char result;         // transaction result
} TWI_MASTER_INFO_t;

как раз та самая структура.

upd. блин. "AVR8X_DEVICE" относится к ATtiny416/417/814/816/817, судя по комментам библиотеки...

в любом случае спасибо за помощь

Изменено пользователем okolocxem
Ссылка на комментарий
Поделиться на другие сайты

Литиевые аккумуляторы EVE Energy и решения для управления перезаряжаемыми источниками тока (материалы вебинара)

Опубликованы материалы вебинара Компэл, посвященного литиевым аккумуляторам EVE Energy и решениям для управления перезаряжаемыми источниками тока.

На вебинаре мы представили информацию не только по линейкам аккумуляторной продукции EVE, но и по решениям для управления ею, что поможет рассмотреть эти ХИТ в качестве дополнительной альтернативы для уже выпускающихся изделий. Также рассмотрели нюансы работы с производителем и сервисы, предоставляемые Компэл по данной продукции. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

В 03.01.2018 в 10:30, snn_krs сказал:

У меня CV 3.12, а библиотеки сильно старые от 2.05. Надо искать обновления

у меня 3.30 evaluation стоит, по-моему с офиц.сайта скачанная - попробуйте оттуда стянуть.

вообще я, конечно, рано радовался. сейчас пытался простейшие функции попользовать (установка/чтение даты/времени) - ничего не работает. да и инициализация как-то криво проходит: например устанавливаю выход clkout на 32кГц - выход молчит...

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...