Страница 101 из 160
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 09:19:56
akl
И не только RAM, но и все остальное
studio4.19_memory.PNG
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 12:53:24
Jman
Всем привет.... У меня тут есть небольшая проблема. Хочу перейти с CV на ATMEL studio7, естественно траблы. Код который работал в CV, не работает в Atmel studio. Вроде подкорректировал, настроил. Запустил, но что-то не алё =( Подскажите, где я не доглядел. Там в коде со студией ошибки в скобочках, я поправил, но что-то все равно не работает.
Код: Выделить всё
while ((PINB &(1<<PINB1))==0 && (tic_tac>=90)) {
PORTB &= ~(1<<3);}
}
else {
adc_read (); //Функция чтения значения из АЦП (0-255);
if ((on>=90) && ((PINB &(1<<PINB0))==0) && ((PINB &(1<<PINB1))==1) && (outdoor_sensor>=sensivity)) {
PORTB |= (1<<3);} // Порт включен;
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 13:28:33
ARV
вот здесь while ((PINB &(1<<PINB1))==0 && (tic_tac>=90)) скобочку переставьте вот так: while ((PINB &(1<<PINB1)==0) && (tic_tac>=90))
да, ниже та же самая песня - скобочка в коде не там стоит - в самом нижнем if в самом правом выражении с ==
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 13:31:21
креазот
у меня нет опции data, 3 окна только открываются, регистры, регистры ввода\вывода и флеш память. еепром и озу нет.
авр студия 4скопейками

Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 13:49:32
akl
Кликните в одном из окон памяти, допустим Program.
memory_data.PNG
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 13:54:21
Jman
ARV писал(а):вот здесь while ((PINB &(1<<PINB1))==0 && (tic_tac>=90)) скобочку переставьте вот так: while ((PINB &(1<<PINB1)==0) && (tic_tac>=90))
да, ниже та же самая песня - скобочка в коде не там стоит - в самом нижнем if в самом правом выражении с ==
Ругается, я изначально так и сделал.
(Warning suggest parentheses around comparison in operand of '&' [-Wparentheses])
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 14:04:05
креазот
вот.

Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 14:18:21
ARV
Jman писал(а):Ругается
заставляете вы старика за вас думать

((PINB &(1<<PINB1))==0 && (tic_tac>=90)) - я так понимаю, вы хотите, чтобы одновременно пин стал равным 0 и переменная была больше 90, верно?
так вот, условие "пин равен нулю" записывается так !(PINB & _BV(PB1))
если уж хотите явно написать, то так ((PINB & _BV(PB1)) == 0)
в стандартных библиотеках AVR-GCC есть и макрос для удобства bit_is_clear(sfr, bit), то есть можно записать еще "понятнее" bit_is_clear(PINB, PB1)
у вас проблема в том, что вы не учитываете приоритет операций: логические операции, как правило, имеют меньший приоритет по сравнению с другими.
таким образом конкретное выражение должно быть правильно записано одним из следующих способов:
while (((PINB & _BV(PINB1))==0) && (tic_tac>=90))
while (!(PINB & _BV(PINB1)) && (tic_tac>=90))
while (bit_is_clear(PINB, PINB1) && (tic_tac >= 90))
соответственно, нужно подправить и остальные логические выражения
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 14:23:13
Jman
ARV писал(а):соответственно, нужно подправить и остальные логические выражения
Спасибо большое, попробую. Вот вы мне скажите, а макросы как в Cv похоже использовать нельзя? Как-то например так: #define out _BV(PINB1)
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 14:28:15
ARV
Jman писал(а):а макросы как в Cv похоже использовать нельзя?
макросы? очень даже можно использовать. только их делать надо корректно.
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 14:34:14
Jman
ARV писал(а):Jman писал(а):а макросы как в Cv похоже использовать нельзя?
макросы? очень даже можно использовать. только их делать надо корректно.
Если вас не затруднит, проверьте пожалуйста код (объем кстати получается больше чем в CV);
Код: Выделить всё
while (1)
{
if ((PINB &_BV(PINB1)) ==0) { // Если кнопка нажата и на входе PB1=0;
//_delay_ms(100); // "антидребезг" =);
PORTB |=(1<<3); // Приоритет включения по клавише, пока нажат, не реагируем на сенсоры;
while (((PINB & _BV(PINB1))==0) && (tic_tac>=90)) {
PORTB &= ~(1<<3);}
}
else {
adc_read (); //Функция чтения значения из АЦП (0-255);
if ((on>=90) && ((PINB &_BV(PINB0))==0) && ((PINB &_BV(PINB1))==1) && (outdoor_sensor>=sensivity)) {
PORTB |= (1<<3);} // Порт включен;
else{
PORTB &= ~(1<<3); } // Порт выключен;
}
}
На кнопку реагирует, но промаргивает и не выключает. По сенсору ждет задержку 5 сек и промаргивает (светодиод не горит).
Прерывание:
Код: Выделить всё
ISR (TIM0_COMPA_vect)
{
TCNT0=0x00;
if ((PINB &_BV(PINB1))==0){
tic_tac++;}
else tic_tac=0;
if (((PINB &_BV(PINB0))==0) && ((PINB &_BV(PINB1))==1) && (outdoor_sensor>=sensivity)){ // Задержка на включение, антидребезг ПИР дачика;
on++;
}
else {
on=0;
TCNT0=0;
}
}
Частота 128кГц, прескаллер 256.
Код: Выделить всё
TIMSK0=0x06;
TIMSK0 |= 0<<OCIE0B;
TIMSK0 |= 1<<OCIE0A;
TIMSK0 |= 0<<TOIE0;
СLKPR |= 1<<CLKPCE; // Предделитель;
В регистре сравнение 255;
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 14:46:15
ARV
проверять код досконально не буду, уж простите за лень.
но что-то мне подсказывает, что у вас с алгоритмом проблемы и/или с его реализацией - слишком много подозрительных повторов кода в разных местах. то есть я хочу намекнуть, что не работает не из-за ошибок в синтаксисе, а из-за ошибок в логике самого алгоритма.
ну и главное: не забывайте, что все переменные, которые используются в главном цикле, а изменяются в обработчике прерываний, должны быть обязательно volatile - это вам не CV.
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 14:53:33
Jman
ARV писал(а):не забывайте, что все переменные, которые используются в главном цикле, а изменяются в обработчике прерываний, должны быть обязательно volatile - это вам не CV.
Я это делаю и в CV. Просто мне интересно, в CV алгоритм рабочий. В протеусе и на макетке работает. А тут я пока просто не разберусь, может где что не так про инициализировал. После CV Atmel studio прям как темный лес. Нахрапом не получается ) Логика ну совсем простая.
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 15:03:49
ARV
простая логика, говорите? ну, расскажите мне тогда:
1. зачем в обработчике прерываний вы ДВАЖДЫ обнуляете TCNT? один раз в начале функции, другой раз в конце при каком-то условии.
2. if ((PINB &_BV(PINB1))==0){ tic_tac++;} else tic_tac = 0; это вы как бы считаете время присутствия низкого уровня на пине - верно? но тогда в главном цикле вы СНОВА проверяете уровень на пине? ведь у вас tic_tac либо равно нулю, либо растет - строго в соответствии с уровнем на пине! хватило бы просто проверки tic_tac.
3. если уровень на пине PB1 низкий очень долго, то tic_tac перекрутится, т.е. после того, как побудет больше 90 снова станет меньше и будет расти. у вас в коде этот момент никак не отрабатывается. может, так и надо, мне неизвестно...
это несколько вопросов с ходу, но можно и дальше задавать.
если у вас "простая логика", которая приводит к такому отнюдь не простому коду - я удивлен, что он работает. честно - удивлен. и мои подозрения все равно остаются в силе. наводите в коде порядок, заодно с алгоритмом разберитесь. и все заработает.
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 16:18:05
uk8amk
Какой чип вы выбрали в студии? У некоторых самых мелких нет ОЗУ, например Tiny11, Tiny15.
креазот писал(а):авр студия 4скопейками
Копейки бывают важны. В старых версиях могут содержаться ошибки в базе данных устройств и симуляторов.
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 17:31:09
Pnjom-Penb
Jman писал(а):Хочу перейти с CV на ATMEL studio7, естественно - траблы.
Устами ребенка глаголет Истина, мля!

Или, как говаривал Шахрияр,
эти слова должны быть записаны алмазными иглами в уголках (ваших)
глаз!
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 17:38:06
Alexeyslav
Надо изначально было не отвлекаться на CV...
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 18:07:23
Jman
Pnjom-Penb писал(а):Jman писал(а):Хочу перейти с CV на ATMEL studio7, естественно - траблы.
Устами ребенка глаголет Истина, мля!

Или, как говаривал Шахрияр,
эти слова должны быть записаны алмазными иглами в уголках (ваших)
глаз!
Поговорить любой мастак, я задал конкретные вопросы и выложил исходники.
Надо изначально было не отвлекаться на CV...
Надо было изначально не отвлекаться на мой пост. Я задал вопрос, ветка форума как-бы предполагает. Надо было, или не надо было, поздно пить боржоми.
Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 19:12:09
Pnjom-Penb
Jman писал(а):Надо было, или не надо было, поздно пить боржоми.
О, как Вы заблуждаетесь!

Этот "боржоми" - тухлый изначально и, поскольку испортиться еще больше он не может, он вечен! Жертв ЦВ так много и они им так отравлены, что любой положительный пример хорош уже хотя бы тем, что он высказан. Так что - спасибо, что не промолчали.

Re: AVR studio в вопросах и ответах
Добавлено: Ср фев 10, 2016 19:42:15
Jman
Pnjom-Penb писал(а): Так что - спасибо, что не промолчали.

1. Вы знаете, мне с пеной у рта доказывали люди обратное =);
2. FlowCode - некоторые даже деньги зарабатывают, отравляя себя рисованием;
3. О! Arduino!;
ATMEL Studio? А как же IAR Workbench?
Лучше помогите, дайте, как вы говорите "отравленному", противоядие
