Время компиляции уже есть в переменной __TIME__Gudd-Head писал(а):Номер компиляции это круто. А можно также заливать рандомное число или текущее время?
Рандомное число можно, если из .bat сможете его сгенерировать.
Время компиляции уже есть в переменной __TIME__Gudd-Head писал(а):Номер компиляции это круто. А можно также заливать рандомное число или текущее время?
Увы, хотя пользуюсь этим доком как справочником....ARV писал(а):вот это http://www.simple-devices.ru/attachment ... 3_2011.pdf не проливает свет на ваш вопрос о внешнем ОЗУ?
Хз, в протеусе не работаю, только на реальных камнях и без эмулятора.ARV писал(а):что именно не работает? что показывает протеус?
должно, но к сожалению не работает...ARV писал(а):ну так в случае с WinAVR и пользуйтесь принудительным указанием секции для массива - должно работать
Код: Выделить всё
#include <avr/io.h>
#include <avr_helper.h>
#include <stdlib.h>
#define SZ 100
static uint8_t earray[SZ] __attribute__((section(".xdata")));
static uint16_t sr = 1;
volatile uint8_t *ptr = (void*)0x2000;
int main(void){
MCUCR = _BV(SRE);
XMCRB = _BV(XMBK) | (1<<XMM1) | (1<<XMM0);
while(1){
srand(sr++);
ptr = 0x2000;
for(uint8_t i=0; i<SZ; i++){
*ptr++ = rand();
PORTB = earray[i];
}
}
}попадало во внутренее ОЗУ как раз в область стека, и все портило_dark писал(а):LDFLAGS += -Wl,-section-start=.xdata=0x801000
ARV cорри за долгое молчание, тут небольшой отпуск образовался...ARV писал(а): P.S. Пиво я заработал?
Заработало, важно чтобы в исходник вставить ссылку на ver.h именно как ARV написал (на разных строках).ARV писал(а):решение для windows может быть таким (для линуксоидов не привожу, ибо там все элементарно делается башем)
1. создается файл ver.h, в котором вводится начальный номер версии, например, 0. то есть только 1 символ '0'
2. этот файл инклюдится в вашем исходнике в нужном месте, например, так3. создается файл increment_version.bat следующего содержимогоКод: Выделить всё
int version = #include "ver.h" ;4. если вы компилируете проект из IDE, то задаете этой IDE команду запускать increment_version.bat после успешной сборки проекта. если для компиляции используется makefile, то аналогично в нем заставляете исполнить этот батничек после успешной сборки проектаКод: Выделить всё
@echo off set /p version=<ver.h set /a version=version+1 echo %version% >ver.h
5. радуетесь и ликуете, поднимая тосты за мое здоровье
Код: Выделить всё
# Define programs and commands.Код: Выделить всё
VERIONS_INCREMENT_SCRIPT = increment_version.batКод: Выделить всё
# Default target.
all: begin gccversion sizebefore build sizeafter endКод: Выделить всё
@$(VERIONS_INCREMENT_SCRIPT)Код: Выделить всё
missing separator. Stop. Спасибо!WiseLord писал(а):https://ru.wikipedia.org/wiki/Препроцессор_Си