Например TDA7294

Форум РадиоКот • Просмотр темы - CodeVision AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Ср авг 13, 2025 12:47:42

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8295 ]     ... , , , 293, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Сб дек 14, 2013 12:33:53 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2316
Рейтинг сообщения: 0
А без инициализации он работать будет?
Сёдня на другом компе попробую.
А можете посоветовать какие нибудь нормальные библиотеки для работы с этим датчиком?
А вобще у людей эта библиотека нормально работает? И задержки большие во время измерений (у меня ато в это время индикатор тухнет на пол секунды, очень неудобно)?
Вчера в железе собрал, сёдня посмотрю как датчик вести себя будет, но индикатор тухнет на пол секунды во время измерений как и в протеусе (динамическая индикация на семисегмеетном индикаторе, поэтому работу его хорошо видно).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Сб дек 14, 2013 14:19:08 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
isx писал(а):
А без инициализации он работать будет?

пробовал в протеусе проект с LCD индикатором (без прерываний) - правильно работало
Цитата:
А можете посоветовать какие нибудь нормальные библиотеки для работы с этим датчиком?

этого сейчас полно в интернете, имхо лучше переделать под себя примеры, которые на сайте производителя - понятнее будет
http://www.maximintegrated.com/app-note ... mvp/id/162
Цитата:
А вобще у людей эта библиотека нормально работает? И задержки большие во время измерений

там используется delay_ms, w1_write и пр. не терпящие прерываний:
Код:
float ds18b20_temperature(unsigned char *addr)
{
unsigned char resolution;
if (ds18b20_read_spd(addr)==0) return -9999;
resolution=(__ds18b20_scratch_pad.conf_register>>5) & 3;
if (ds18b20_select(addr)==0) return -9999;
w1_write(0x44);
delay_ms(conv_delay[resolution]);
if (ds18b20_read_spd(addr)==0) return -9999;
w1_init();
return (*((int *) &__ds18b20_scratch_pad.temp_lsb) & ((int) bit_mask[resolution]))*0.0625;
}

из хэлпа delay_ms:
Before calling the functions the interrupts must be disabled, otherwise the delays will be much longer then expected.
из хэлпа w1_write:
Because the 1 Wire Functions require precision time delays for correct operation, the interrupts must be disabled during their execution.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс дек 15, 2013 00:15:59 
Грызет канифоль

Карма: 1
Рейтинг сообщений: 0
Зарегистрирован: Сб май 29, 2010 00:08:48
Сообщений: 293
Откуда: Харьков
Рейтинг сообщения: 0
Как отправить по юарту двубайтную переменную функцией putchar (); ?

int abc ;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс дек 15, 2013 09:55:40 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Код:
#define Hi(Int)  (char) (Int>>8)
#define Low(Int) (char) (Int)

int abc ;

putchar ( Hi(abc) );
putchar ( Low(abc) );


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс дек 15, 2013 13:07:45 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4568
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
R_ura писал(а):
Как отправить по юарту двубайтную переменную функцией putchar (); ?
Также, как и перенести 2 литра жидкости с помощью литровой банки :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн дек 16, 2013 01:31:36 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2316
Рейтинг сообщения: 0
isx писал(а):
но индикатор тухнет на пол секунды во время измерений как и в протеусе (динамическая индикация на семисегмеетном индикаторе, поэтому работу его хорошо видно).

Проблема решена исправлением библиотеки.
Нашел блок чтения температуры, убрал обращение к нему, и поставил этот код в свою программу:
Код:
if (ontemp == 0) {   

ontemp = 1;
if (ds18b20_read_spd(0)==0) {temper =  -9999; goto endoff;}
if (ds18b20_select(0)==0) {temper =  -9999; goto endoff;}
w1_write(0x44);
} else {


ontemp = 0;
if (ds18b20_read_spd(0)==0) {temper =  -9999; goto endoff;}
temper = (*((int *) &__ds18b20_scratch_pad.temp_lsb) & ((int) bit_mask[resolution]))*0.0625;



Код выполняется раз в пол секунды (программный таймер так настроил). Датчик в системе один, иначе ругается на не найденную переменную addr. Я хотел её глобально объявить, но не смог найти, кто знает где она, скажите, вдруг понадобится несколько датчиков подключить.
В протеусе работает, на железе гонял 30мин. Глюков не было....
Инициализация и прочие функции делаются через стандартную библиотеку...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 19, 2013 20:37:24 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб май 25, 2013 21:14:11
Сообщений: 142
Откуда: Москва
Рейтинг сообщения: 0
Всем привет.
Как получить один конкретный бит из байта?
Допустим, есть число(чар) 0x00 мне нужно из него "вернуть" 3-й бит и положить в другое число(чар)на место 3-его бита конечно, или просто вывести в переменную(1/0).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 19, 2013 21:11:41 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4568
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
С помощью битовых масок.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 19, 2013 23:01:30 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб май 25, 2013 21:14:11
Сообщений: 142
Откуда: Москва
Рейтинг сообщения: 0
Я знаю как работают
&=0bxxxxxxxx единицы в нули
^=0bxxxxxxxx единицы в инвертирование
|=0bxxxxxxxx единицы в единицы
Но не знаю действия которое возвращало бы значение.

_________________
Если возникнут вопросы - посмотрите на мой аватар.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 19, 2013 23:06:50 
Держит паяльник хвостом
Аватар пользователя

Карма: 11
Рейтинг сообщений: 43
Зарегистрирован: Вс май 23, 2010 13:55:42
Сообщений: 908
Откуда: Украина, Александрия
Рейтинг сообщения: 0
0867532 писал(а):
Я знаю как работают
&=0bxxxxxxxx единицы в нули
^=0bxxxxxxxx единицы в инвертирование
|=0bxxxxxxxx единицы в единицы
Но не знаю действия которое возвращало бы значение.

Ну не совсем так, как вы написали. Все-таки почитайте про это где-то, например здесь.

_________________
«И всё-таки она вертится!»


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт дек 19, 2013 23:29:25 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4568
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
0867532 писал(а):
Но не знаю действия которое возвращало бы значение.
Это действие называется - условие (if) :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт дек 20, 2013 00:29:37 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
0867532 писал(а):
Я знаю как работают
&=0bxxxxxxxx единицы в нули
^=0bxxxxxxxx единицы в инвертирование
|=0bxxxxxxxx единицы в единицы
Но не знаю действия которое возвращало бы значение.

Или вы не совсем точно представляете себе как это работает, или второй вопрос куда нужно, чтобы этот бит возвращался?
И вот правильнее
&=~0bxxxxxxxx единицы в нули
а &=0bxxxxxxxx нули в нули
Эти самые операторы и вовращают некое значение, которое присваивается левому операнду.
someNumber&=0bxxxxxxxx ;
Аналогично более длинной форме записи
someNumber= someNumber&0bxxxxxxxx ;
В которой (someNumber&0bxxxxxxxx) это и есть функция, возврающая некое значение его мы и назначаем переменной someNumber

Можно назначить тот же бит переменной так:
Код:

temp=someNumber&0b0000 0001; 
NumberForCopy&=~0b0000 0001; 
NumberForCopy |= temp; 

По варианту Алекса:
Код:
if(!(someNumber&0b0000 0001)){
NumberForCopy&=~0b0000 0001;}
else {NumberForCopy |= temp;

Как то так или что то около того...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт дек 20, 2013 01:19:39 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
в файле из SPL для STM8 (stm8s.h) есть удобные макросы:
Код:
/*!< Signed integer types  */
typedef   signed char     int8_t;
typedef   signed short    int16_t;
typedef   signed long     int32_t;

/*!< Unsigned integer types  */
typedef unsigned char     uint8_t;
typedef unsigned short    uint16_t;
typedef unsigned long     uint32_t;
/*============ Handling bits ==================*/
/*----------
Method : I
Description : Handle the bit from the character variables.
Comments :    The different parameters of commands are
              - VAR : Name of the character variable where the bit is located.
              - Place : Bit position in the variable (7 6 5 4 3 2 1 0)
              - Value : Can be 0 (reset bit) or not 0 (set bit)
              The "MskBit" command allows to select some bits in a source
              variables and copy it in a destination var (return the value).
              The "ValBit" command returns the value of a bit in a char
              variable: the bit is reset if it returns 0 else the bit is set.
              This method generates not an optimised code yet.
----------*/

#define SetBit(VAR,Place)         ( (VAR) |= (uint8_t)((uint8_t)1<<(uint8_t)(Place)) )
#define ClrBit(VAR,Place)         ( (VAR) &= (uint8_t)((uint8_t)((uint8_t)1<<(uint8_t)(Place))^(uint8_t)255) )

#define ChgBit(VAR,Place)         ( (VAR) ^= (uint8_t)((uint8_t)1<<(uint8_t)(Place)) )
#define AffBit(VAR,Place,Value)   ((Value) ? \
                                   ((VAR) |= ((uint8_t)1<<(Place))) : \
                                   ((VAR) &= (((uint8_t)1<<(Place))^(uint8_t)255)))

#define MskBit(Dest,Msk,Src)      ( (Dest) = ((Msk) & (Src)) | ((~(Msk)) & (Dest)) )

#define ValBit(VAR,Place)         ((uint8_t)(VAR) & (uint8_t)((uint8_t)1<<(uint8_t)(Place)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт дек 20, 2013 16:36:29 
Первый раз сказал Мяу!

Зарегистрирован: Вт фев 21, 2012 15:05:12
Сообщений: 32
Рейтинг сообщения: 0
Уважаемые коты пожалуйста. Программа в основном цикле считывает температуру с датчиков по запросу a001e Usart отсылает некоторые данные по нему же, но при запросе адреса она отсылает данные и перестает считывать температуру.Может со стеком надо делать чего не понимаю.


Вложения:
Голова комата.rar [17.33 KiB]
Скачиваний: 176
голова_примерно.rar [114.58 KiB]
Скачиваний: 154
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пт дек 20, 2013 23:14:50 
Встал на лапы
Аватар пользователя

Зарегистрирован: Сб май 25, 2013 21:14:11
Сообщений: 142
Откуда: Москва
Рейтинг сообщения: 0
Apparatchik писал(а):

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

_________________
Если возникнут вопросы - посмотрите на мой аватар.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс дек 22, 2013 16:30:23 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 16:00:25
Сообщений: 236
Откуда: нижний новгород
Рейтинг сообщения: 0
подскажите пожалуйся про ацп на тини 13
задача сделать программу для измерения разряда литиевого аккумулятора и отображать состояние 4мя светодиодами.
верхний прог заряжен это 4в
нижний порог разряжен это 2.5в разница между ними составляет 1.5в
что бы мне расчитать показания с которыми буду сравнивать показания ацп мне нужно 1024/4(количество уровней отображения)????
сли да то получается шаг в 0,255, 510, 1020.
в кавре с помощью визарда сгенерировал начальный код , кое что дописал из инета но вцелом нефига не работает(((
вот мой код
СпойлерChip type : ATtiny13
AVR Core Clock frequency: 9,600000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 16
*****************************************************/

#include <tiny13.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x00

// Read the AD conversion result
void ADC_init() // инициализация портов
{
ADMUX=0x10; //отключен внутренний ион, вход адц pinb.4
ADCSRA=0xE6; //БИТ7 АЦП включен.бит6 начать преобразование. бит5 непрерывное преобразование.бит4 установится когда будет завершено ацп.
// бит3 запрещены прерывания от ацп. бит 2-0 делитель на 64.
}
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
unsigned int resultat;
// Declare your global variables here

void main(void)
{
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
PORTB=0x00;
DDRB=0x2F; //PINB4 (ADC2) на вход с делителя.
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
GIMSK=0x00;
MCUCR=0x00;
ACSR=0x80;
ADCSRB=0x00;
DIDR0=0x00;

// ADC initialization
// ADC Clock frequency: 150,000 kHz
// ADC Bandgap Voltage Reference: Off
// ADC Auto Trigger Source: ADC Stopped
// Digital input buffers on ADC0: Off, ADC1: Off, ADC2: On, ADC3: Off
DIDR0&=0x03;
DIDR0|=0x2C;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x86;

while (1)
{
ADC_init();
resultat=read_adc(0);
if(resultat> 100)
{PORTB.0=1;}

}
}

еще вопрос про внутренний ион у тини он 1.1, мне нужно его подключать или нет ???
и по поводу делителя сколько мне можно подать на ацп??что бы безболезненно для мк. а то возможно можно и без него прямо напрямую с аккумулятора подавать напряжение??
по поводу кода скажите я правильно понял что ADCW записывается в read_adc(0) ???
вот кое что тут вычитал, если включать ион внутренний то при 4в на выходе делителя должно быть 1.1в и это будет 1024???


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс дек 22, 2013 17:39:01 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Вт дек 10, 2013 13:57:37
Сообщений: 25
Рейтинг сообщения: 0
Ув. коты подскажите пожалуйста как покрасивей запилить значение переменной unsigned long в массив unsigned char[10];


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс дек 22, 2013 17:40:49 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4568
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Mechanicalhand писал(а):
как покрасивей запилить
Сделать код разноцветный ? :roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс дек 22, 2013 17:45:24 
Первый раз сказал Мяу!
Аватар пользователя

Зарегистрирован: Вт дек 10, 2013 13:57:37
Сообщений: 25
Рейтинг сообщения: 0
Аlex писал(а):
Mechanicalhand писал(а):
как покрасивей запилить
Сделать код разноцветный ? :roll:

:shock:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вс дек 22, 2013 17:49:27 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4568
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Mechanicalhand писал(а):
:shock:
Я предложил вариант, что не так ? :)
Где то, красивее чего нужно запилить ? И что означает "покрасивей" ?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8295 ]     ... , , , 293, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 290


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y