Вопросы по С/С++ (СИ)
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
вроде правильно,только как я понял очищать функцию нужно простыми числами в виде 0
кто будет уверен в том,что в нулевой ячейке вашего массива 0?
кто будет уверен в том,что в нулевой ячейке вашего массива 0?
В поисках истины человек развивается.
- Реклама
Re: Вопросы по С/С++ (СИ)
Не будет это работать.xVekx писал(а):Код:
uint8_t crc8=_crc_ibutton_update(0x00,data[0]);
for(int crc8_size=1;crc8_size<size;crc8_size++)
{
uint8_t crc8=_crc_ibutton_update(crc8,data[crc8_size]);
}
if(crc8!=data[size-1]){return 0x00;}
1. Надо убрать объявление переменной crc8 внутри цикла.
2. Надо учесть что последним байтом массива является CRC.
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
передается указатель на массив, который нужно посчитать и количество байт в массиве
код не оптимальный по шустрости, но, поскольку работает, меня как бы ломает его переделывать...
Код: Выделить всё
unsigned char fnCalcCrc(unsigned char *mas, unsigned char lenght)
{
unsigned char i,data,crc,fb,st_byt;
st_byt=0;
crc=0;
do{
data=mas[st_byt];
for (i=0;i<8;i++)// счетчик битов в байте
{
fb =crc ^ data;
fb&=1;
crc >>= 1;
data >>=1;
if (fb == 1)crc^=0x8c;// полином, мля
}
st_byt++;
}while (st_byt != lenght);// счетчик байтов в массиве
return crc;
}
//---------------------------------------------------
Re: Вопросы по С/С++ (СИ)
вот мой код
коректна ли сия команда ?
компилятор на нее ругается....., как ее переписать корректно ?
Код: Выделить всё
// Timer2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
// Reinitialize Timer2 value
TCNT2=0x05;
// Place your code here
static int counter;
counter++;
OCR2-=0,5;
if (counter>=500) {counter=0; OCR2=0xFA; sec++;};
if (sec>=10) sec=0;
PORTD=sec;
anod_min_l;Код: Выделить всё
OCR2-=0,5;
Tell Me The Truth
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Вообще значение счетчика изначально ФИЗИЧЕСКИ это целое число.
Чувствую опять все таки придется за вас делать.Хоть и говорите, что самому все хочется сделать.
Я же вам весь алгоритм уже раскатал в личке, что изменилось?
В поисках истины человек развивается.
- Реклама
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: Вопросы по С/С++ (СИ)
Подскажите начинающему плиз. Есть переменная, как в ней изменить один конкретный бит (допустим с 0 на 1).
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
В поисках истины человек развивается.
Re: Вопросы по С/С++ (СИ)
Здравствуйте!
Я только-только пытаюсь освоить язык программирования Си (хочу научиться программировать микроконтроллеры). И вот сразу возник вопрос: функция delay вызывается из delay.h или dos.h? А то мне попадается самая противоречивая информация.
Заранее спасибо за ответ.
Я только-только пытаюсь освоить язык программирования Си (хочу научиться программировать микроконтроллеры). И вот сразу возник вопрос: функция delay вызывается из delay.h или dos.h? А то мне попадается самая противоречивая информация.
Заранее спасибо за ответ.
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
dos.h? ни разу не встречал.
возьмите слово delay вставьте в словарь. вопросы сами собой отпадут.
тем более,что даже название функции совпадает с названием файла .h
возьмите слово delay вставьте в словарь. вопросы сами собой отпадут.
тем более,что даже название функции совпадает с названием файла .h
В поисках истины человек развивается.
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: Вопросы по С/С++ (СИ)
Сначала устанавливаем частоту кварца или внутреннего резонатора
#define F_CPU 12000000L //частота кварца, Гц
Она нужна чтобы контроллер правильно считат задержки, и далее:
#include <delay.h> // delay.h - этот файл содержит функции для создания пауз в программе.
Теперь чтобы сделать паузу вам нужно лишь написать :
delay_ms(x); // сделать паузу x милиСек
delay_us(x); // сделать паузу x микроСек
#define F_CPU 12000000L //частота кварца, Гц
Она нужна чтобы контроллер правильно считат задержки, и далее:
#include <delay.h> // delay.h - этот файл содержит функции для создания пауз в программе.
Теперь чтобы сделать паузу вам нужно лишь написать :
delay_ms(x); // сделать паузу x милиСек
delay_us(x); // сделать паузу x микроСек
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: Вопросы по С/С++ (СИ)
В программе есть некая переменная (не порт контроллера), а именно число, допустим x. Как у нее инвертировать один бит?
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Вопросы по С/С++ (СИ)
... именно число - это константа, так что никакeess9 писал(а):....а именно число, допустим x. Как у нее инвертировать один бит?
Инвертировать бит переменной можно так var^=1<<bit_num, где var - переменная, а bit_num - номер бита
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: Вопросы по С/С++ (СИ)
Спасибо за основательный ответ
Re: Вопросы по С/С++ (СИ)
Спасибо!
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: Вопросы по С/С++ (СИ)
У контроллера ATTiny25таймер 0 выдает ШИМ 2кГц. Таймер 1 работает в режиме таймера при переполнении инвертируя вывод OC1A. Но как только приходит внешнее прерывание он почему-то сбрасывается даже если закомментировать обработчик прерывания. Если запрещаю прерывания, то все нормально. В чем моя ошибка?
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
volatile int PWM=0xCC;
volatile unsigned int Data=0x00;
volatile int FlagWrite=0;
volatile int TimerData=0x00;
volatile int i=13;
ISR(TIMER1_OVF_vect)
{
Data=0x0000;
FlagWrite=0;
TimerData=0x00;
i=13;
}
/*ISR(INT0_vect)
{
if (i == 13)
{
TimerData=TCNT1;
TCNT1=0x00;
if ((PINB & (1 << PB2)) == 0)
asm("nop");
else
Data^=1<<i;
FlagWrite=1;
i--;
}
}*/
int main()
{
//---Instal Port---
DDRB=0b00011011;
PORTB=0x00;
//---Instal PWM---
TCCR0A=0b11000001;
TCNT0=0x00;
OCR0A=PWM;
TCCR0B=0b00000001;
//---Timer 1---
TIMSK=0b00000100;
TCCR1=0b00000101;
GTCCR=0b00010000;
PLLCSR=0x00;
TCNT1=0x00;
//---Interrupt---
GIMSK=0b01000000;
MCUCR=0b00000001;
sei();
return 0;
}
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Вопросы по С/С++ (СИ)
eess9 писал(а):... В чем моя ошибка?
Код: Выделить всё
int main()
{
.....
sei();
return 0;
}- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
это стандарт си, если функция объявлена как инт,то она обязана чего либо вернуть.
впрочем студия вместе с Гцц и без этого пропускает.
впрочем студия вместе с Гцц и без этого пропускает.
В поисках истины человек развивается.
Re: Вопросы по С/С++ (СИ)
[подскажите, почему дефолтные параметры в дефолтном конструкторе вызываются, а в главной проге я не могу их поменять
вот файл radio.cpp
CRadio::CRadio()
{
init(0x2020); // standart werte
setFreq(88.0); // werden automatisch beim standart construktor initialisiert
}
мой порт 2020, если я ставлю стандартный 378, то не работает
вот файл fsteuer.h
мой класс cradio является основным (насколько я это понимаю) и от него наследуюется класс cfsteuer
насколько я опять же понимаю, должны быть методы класса cradio быть доступны
в том числе конструктор с переменными параметрами
#include "Radio.h"
class cfsteuer: public CRadio
{
public:
float hoch(float);
float tief(float);
};
в главном файле создана переменная
cfsteuer st;
если делать st.CRadio (0x2020, f); , то тут ошибка возникает
типа оператор . нельзя использовать
1>c:\documents and settings\admin\my documents\htw\programmierung\edik\main.cpp(25): error C2274: 'function-style cast' : illegal as right side of '.' operator
не забудьте положить длл в папку с ехе
вот файл radio.cpp
CRadio::CRadio()
{
init(0x2020); // standart werte
setFreq(88.0); // werden automatisch beim standart construktor initialisiert
}
мой порт 2020, если я ставлю стандартный 378, то не работает
вот файл fsteuer.h
мой класс cradio является основным (насколько я это понимаю) и от него наследуюется класс cfsteuer
насколько я опять же понимаю, должны быть методы класса cradio быть доступны
в том числе конструктор с переменными параметрами
#include "Radio.h"
class cfsteuer: public CRadio
{
public:
float hoch(float);
float tief(float);
};
в главном файле создана переменная
cfsteuer st;
если делать st.CRadio (0x2020, f); , то тут ошибка возникает
типа оператор . нельзя использовать
1>c:\documents and settings\admin\my documents\htw\programmierung\edik\main.cpp(25): error C2274: 'function-style cast' : illegal as right side of '.' operator
не забудьте положить длл в папку с ехе
- Вложения
-
- edik.zip
- (23.85 КБ) 182 скачивания
тематические ответы только в форуме, в приват не пишите
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Я конечно дико извиняюсь, что на барский стол со свиным рылом лезу(не понимаю я стилей и наследования),
Но по моему компилятор пишет что то вроде :
функцие- подобное приведение типов не допускается как правая часть выражения с точкой.
Но по моему компилятор пишет что то вроде :
функцие- подобное приведение типов не допускается как правая часть выражения с точкой.
В поисках истины человек развивается.


