Страница 85 из 160
Re: AVR studio 4 в вопросах и ответах
Добавлено: Сб апр 26, 2014 13:53:38
a_skr
У Вас выключена оптимизация (-O0)!
для использования функций _delay_ms() и _delay_us()
оптимизация должна быть включена, иначе они сожрут всю память и не факт, что будут работать, как надо.
In order for these functions to work as intended, compiler optimizations must be enabled, and the delay time must be an expression that is a known constant at compile-time. If these requirements are not met, the resulting delay will be much longer (and basically unpredictable), and applications that otherwise do not use floating-point calculations will experience severe code bloat by the floating-point library routines linked into the application.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Сб апр 26, 2014 14:17:00
Kill17
угу, то есть организовать побитную передачу, в принципе я так и делал, хорошо, с этим понятно. А прием как ?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Сб апр 26, 2014 14:24:36
FreshMan
a_skr писал(а):У Вас выключена оптимизация (-O0)!
включил
все удачно скомпилилось
но хотелось бы понять для себя, по простому, почему ф-ция задержки не работает при отключенной оптимизации ?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Сб апр 26, 2014 14:54:16
ИС-пытатель
Kill17 писал(а):А прием как ?
аналогично. отслеживаете в цикле приход 0 (старт бит)
делаете половинную задержку (чтобы попасть на середину импульса)
А потом через каждую полную задержку считываете состояние порта и добавляете их в регистр памяти со сдвигом
Re: AVR studio 4 в вопросах и ответах
Добавлено: Сб апр 26, 2014 15:33:29
a_skr
FreshMan, посмотрите на код _delay_ms():
Спойлер
Код: Выделить всё
void
_delay_ms(double __ms)
{
uint16_t __ticks;
double __tmp = ((F_CPU) / 4e3) * __ms;
if (__tmp < 1.0)
__ticks = 1;
else if (__tmp > 65535)
{
// __ticks = requested delay in 1/10 ms
__ticks = (uint16_t) (__ms * 10.0);
while(__ticks)
{
// wait 1/10 ms
_delay_loop_2(((F_CPU) / 4e3) / 10);
__ticks --;
}
return;
}
else
__ticks = (uint16_t)__tmp;
_delay_loop_2(__ticks);
}
- сплошная плавающая арифметика. Без оптимизации все будет скомпилировано "как есть", с подключением плавающей точки. Что и вынесет всю память и задержку еще увеличит. Если включена оптимизация, и аргументом функции является константа (а это тоже необходимое условие), то компилятор сам все посчитает и соптимизирует код до нескольких(или до одного) пустых циклов с вычисленными заранее значениями счетчиков. Если оптимизацию включить, но передавать в функцию не константу, а значение переменной, то толку тоже не будет, т.к. опять все вычисления будут в процессе выполнения с использованием плавающей точки.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Сб апр 26, 2014 23:25:55
FreshMan
пытаюсь выловит баг в проге
после выполнения тела обработчика прерывания рабочая точка с какого то дуру прыгает ПРЯМО сюда

mode_button я нигде принудительно в ноль не выставлял !
это шшо баг студии или баг моей проги ?
как понять ?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Вс апр 27, 2014 01:15:36
*скрыто*
avr studio 4.18
как сделать чтобы РОН отображались в симуляторе ?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Вс апр 27, 2014 11:01:23
Jack_A
Элементарно, Ватсон. View - Register
Re: AVR studio 4 в вопросах и ответах
Добавлено: Вт апр 29, 2014 01:35:22
*скрыто*
все получилось
AVR studio 4, assembler помогите победить ошибку
Добавлено: Сб май 10, 2014 11:58:02
Айвен
Для Atmega128 пишу программу, скажем для "домофона". Только учусь. Возникла проблема, на которую не могу найти конкретного решения. Смотрел по темам- подобное находил но проблему они, к сожалению, не решали. Вот что пишу:
Код: Выделить всё
".include "m128def.inc"
.def temp = r16
.def knopa = r17
.def counter = r20
.def vizg = r21
.set TOP1slope = 6249
.set TOP2slope = 23424
.set TOPdelay = 1563
rjmp RESET
.org INT0addr
rjmp SIGNAL
.org OC1Aaddr
rjmp T1_Compare1A
.org OC0addr
rjmp T0_Compare0_launch
RESET:
ldi temp, high(RAMEND)
out SPH, temp
ldi temp, low(RAMEND)
out SPL, temp
data:
.DB 0b00000000 , 0 ;0
.DB 0b00000001 , 0 ;1 !!!!!!!<--- в данном месте
.DB 0b00000010 , 0 ;2
.DB 0b00000011 , 0 ;3
.DB 0b00000100 , 0 ;4
.DB 0b00000101 , 0 ;5
.DB 0b00000110 , 0 ;6
.DB 0b00000111 , 0 ;7
.DB 0b00001000 , 0 ;8
.DB 0b00001001 , 0 ;9
.DB 0b00001010 , 1 ;ключ
.DB 0b00001100 , 1 ;звонок
.DB 0b00001101 , 1 ;сброс
clr temp
out DDRC, temp
cbi DDRD, DDD0
sbi DDRB, DDB0
ldi temp, (1<<INT0)
out EIMSK, temp
ldi temp, (1<<ISC01)|(1<<ISC00)
sts EICRA, temp
sei
MAIN:
rjmp MAIN"
Вот выдержка из программы. Когда пробую проверить работоспособность программы, на моменте ".DB 0b00000001 , 0 " выдает ошибку
"AVR Simulator: Invalid opcode 0x0001 at address 0x000024". Подскажите пожалуйста как же ее можно побороть.
Re: AVR studio 4, assembler помогите победить ошибку
Добавлено: Сб май 10, 2014 19:38:50
Kavka
У тебя управление попадает в секцию с данными!
Оно тебе надо так?

Или вынеси данные заведомо за область выполнения кода, или "перепрыгнуть" данные можно.
Спойлер
Код: Выделить всё
jmp skip_data
data:
.DB 0b00000000 , 0 ;0
.DB 0b00000001 , 0 ;1 !!!!!!!<--- в данном месте
.DB 0b00000010 , 0 ;2
.DB 0b00000011 , 0 ;3
.DB 0b00000100 , 0 ;4
.DB 0b00000101 , 0 ;5
.DB 0b00000110 , 0 ;6
.DB 0b00000111 , 0 ;7
.DB 0b00001000 , 0 ;8
.DB 0b00001001 , 0 ;9
.DB 0b00001010 , 1 ;ключ
.DB 0b00001100 , 1 ;звонок
.DB 0b00001101 , 1 ;сброс
skip_data:
Re: AVR studio 4 в вопросах и ответах
Добавлено: Сб июн 07, 2014 09:06:12
FreshMan
интересует такое вопрос: раз студия бесплатная то почему компания не сделает натурпродукт под линукс ?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Сб июн 07, 2014 09:20:32
BOB51
Re: AVR studio 4 в вопросах и ответах
Добавлено: Сб июн 07, 2014 09:37:05
Kavka
FreshMan, они дают
AVR toolchain под линукс. А редакторов (сред разработки) под линкус и так хватает. Ну, разве что, с симулятором не так всё гладко.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Сб июн 07, 2014 11:33:22
FreshMan
Kavka писал(а):Ну, разве что, с симулятором не так всё гладко.
в этом то и проблемма

Re: AVR studio 4 в вопросах и ответах
Добавлено: Ср июн 11, 2014 14:16:50
FreshMan
как во время отладки симитировать нажатие кнопки ?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Ср июн 11, 2014 14:22:46
ARV
протеусом
а в студии установкой битика в регистре PINx в нужный момент отладки. либо составлением stimuli-файла и загрузки его в отладчик (довольно муторная и негибкая штука). я об этом писал вот здесь:
http://www.simple-devices.ru/attachment ... 7-2010.pdf и здесь:
http://www.simple-devices.ru/attachment ... 8-2010.pdf
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн июн 16, 2014 21:50:53
FreshMan
как в режиме пошаговой отладки сделать несколько шагов назад ?
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн июн 16, 2014 22:07:29
Alexeyslav
Никак. Это все равно что фарш обратно в мясо прокрутить.
Re: AVR studio 4 в вопросах и ответах
Добавлено: Пн июн 16, 2014 22:22:40
FreshMan
фигово
у меня на 16 секунде глюк сидит
каждый раз запускать и ждать столько времени не очень-то и радостно
