AVR studio в вопросах и ответах
Tell Me The Truth
- Реклама
да ну....., бросте...., то же eclipse компилит без единого вздоха 
Tell Me The Truth
Так, может, лучше оптимизирует?
У Вас там дословно написано, что:
"Секция text переполнена на 466 байт"
Секция text - это секция кода. Попробуйте изменить настройки оптимизации на более сильные
"Секция text переполнена на 466 байт"
Секция text - это секция кода. Попробуйте изменить настройки оптимизации на более сильные
У Вас выключена оптимизация (-O0)!
для использования функций _delay_ms() и _delay_us() оптимизация должна быть включена, иначе они сожрут всю память и не факт, что будут работать, как надо.
для использования функций _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.
- Реклама
угу, то есть организовать побитную передачу, в принципе я так и делал, хорошо, с этим понятно. А прием как ?
включилa_skr писал(а):У Вас выключена оптимизация (-O0)!
все удачно скомпилилось
но хотелось бы понять для себя, по простому, почему ф-ция задержки не работает при отключенной оптимизации ?
Tell Me The Truth
аналогично. отслеживаете в цикле приход 0 (старт бит)Kill17 писал(а):А прием как ?
делаете половинную задержку (чтобы попасть на середину импульса)
А потом через каждую полную задержку считываете состояние порта и добавляете их в регистр памяти со сдвигом
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);
}
- Сообщения: 39
- Зарегистрирован: Пн дек 31, 2012 13:16:59
avr studio 4.18
как сделать чтобы РОН отображались в симуляторе ?
как сделать чтобы РОН отображались в симуляторе ?
- Сообщения: 39
- Зарегистрирован: Пн дек 31, 2012 13:16:59
- Сообщения: 1
- Зарегистрирован: Сб май 10, 2014 11:48:13
Для Atmega128 пишу программу, скажем для "домофона". Только учусь. Возникла проблема, на которую не могу найти конкретного решения. Смотрел по темам- подобное находил но проблему они, к сожалению, не решали. Вот что пишу:
Вот выдержка из программы. Когда пробую проверить работоспособность программы, на моменте ".DB 0b00000001 , 0 " выдает ошибку
"AVR Simulator: Invalid opcode 0x0001 at address 0x000024". Подскажите пожалуйста как же ее можно побороть.
Код: Выделить всё
".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""AVR Simulator: Invalid opcode 0x0001 at address 0x000024". Подскажите пожалуйста как же ее можно побороть.
У тебя управление попадает в секцию с данными!
Оно тебе надо так?
Или вынеси данные заведомо за область выполнения кода, или "перепрыгнуть" данные можно.
Оно тебе надо так?
Или вынеси данные заведомо за область выполнения кода, или "перепрыгнуть" данные можно.
Спойлер
Код: Выделить всё
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:
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
интересует такое вопрос: раз студия бесплатная то почему компания не сделает натурпродукт под линукс ?
Tell Me The Truth
Скажи "СПАСИБО", что 4.19 ПОКА еще бесплатная...
А 6-я основана на компонентах микрософта - без оных работать не будет в принципе.
Это "привязка" к продукту, абы не соскочили.
А 6-я основана на компонентах микрософта - без оных работать не будет в принципе.
Это "привязка" к продукту, абы не соскочили.
FreshMan, они дают AVR toolchain под линукс. А редакторов (сред разработки) под линкус и так хватает. Ну, разве что, с симулятором не так всё гладко.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
в этом то и проблеммаKavka писал(а):Ну, разве что, с симулятором не так всё гладко.
Tell Me The Truth
как во время отладки симитировать нажатие кнопки ?
Tell Me The Truth


