P.S. гугль знает все, ну так он пусть и напишет на форуме
WinAvr в вопросах и ответах
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: WinAvr в вопросах и ответах
на счет таймеров и не слыхал, а в первую очередь брезенхам для рисования прямых линий без умножения/деления был применен, если не ошибаюсь
это четвертое?
P.S. гугль знает все, ну так он пусть и напишет на форуме
P.S. гугль знает все, ну так он пусть и напишет на форуме
битва с дураками проиграна, победители торжествуют. слава победителям!
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: WinAvr в вопросах и ответах
так вроде писали
http://www.radiokot.ru/forum/viewtopic. ... &start=600
http://kazus.ru/forums/showthread.php?t=17495&page=9
не, незачет как 4 применение
http://www.radiokot.ru/forum/viewtopic. ... &start=600
http://kazus.ru/forums/showthread.php?t=17495&page=9
не, незачет как 4 применение
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: WinAvr в вопросах и ответах
Как же я люблю срач, но даже меня он начинает уставать ))))
-
BerZerK-ku
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вт июл 22, 2008 08:10:54
Re: WinAvr в вопросах и ответах
Мастер Ломастер писал(а): что ж, выход один - снова подкорректировать константу, которая соответствует "чистой" задержке в1 микросекунду, т.е. взять не 0.8, а меньше. т.е. в моих опытах вместо 100-101-102 и т.п. задержек получалось примерно (десятые доли откидываю) 112-113-114 и т.д.
Подскажите, и что же надо запихнуть в _delay_us() в вашей функции, чтобы получить желаемый результат для 100, 200 и т.д. мкс? Вряд ли ошибусь, если скажу что ничего не получится.
Чтобы не быть голословным:
Частота 10Мгц, измеряю на "задержке 100мкс": значение 0.8 дает 120мкс, 0.5 - 90мкс.
Частота 16Мгц, измеряю на "задержке 100мкс": значение 0.8 дает 113мкс, 0.7 - 94мкс.
- danger3466
- Встал на лапы
- Сообщения: 135
- Зарегистрирован: Ср дек 21, 2011 12:18:39
Re: WinAvr в вопросах и ответах
Не могу получить символ из юарт, отправляю без проблем
Инициализация:
в main:
bufersize в дефайне
даже puts("Hello\r"); не работает, если не закомментировать getstring(a, bufersize);
а в этот момент ВЫВОДИТ в юарт артефакт "g", независимо каким способом получать символ, видимо тут все ломается
Инициализация:
Код: Выделить всё
void UART_Init(void)
{
UBRRH = UBRRH_VALUE;
UBRRL = UBRRL_VALUE;
UCSRB = (1 << TXEN) | (1 << RXEN);
UCSRC = (1 << USBS) | (3 << UCSZ0);
stdin = &UART_console;
stdout = &UART_console;
}Код: Выделить всё
void getstring(char *a, char size){
char ch, i = 0;
do{
//ch = fgetc(stdin);
//ch = getchar(stdin);
while ( !(UCSRA & (1<<RXC)) )
ch = UDR;
if(ch == '\n' || ch == '\r') ch = '\0';
if(i == size) ch = '\0';
a[(int)i] = ch;
i++;
} while(ch != '\0' && i <= size);
}в main:
Код: Выделить всё
puts("Hello\r");
char a[bufersize];
getstring(a, bufersize);
//puts(a);
bufersize в дефайне
даже puts("Hello\r"); не работает, если не закомментировать getstring(a, bufersize);
а в этот момент ВЫВОДИТ в юарт артефакт "g", независимо каким способом получать символ, видимо тут все ломается
Код: Выделить всё
//ch = fgetc(stdin);
//ch = getchar(stdin);
while ( !(UCSRA & (1<<RXC)) )
ch = UDR;- Вложения
-
- source.zip
- (3.75 КБ) 190 скачиваний
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: WinAvr в вопросах и ответах
если не ошибетесь - это будет первое очко в вашу пользуBerZerK-ku писал(а):который раз приходится править "банальный пример", чтобы он заработал?
Подскажите, и что же надо запихнуть в _delay_us() в вашей функции, чтобы получить желаемый результат для 100, 200 и т.д. мкс? Вряд ли ошибусь, если скажу что ничего не получится.
там писали не совсем об этой теме. здесь, очевидно, нерешаемая задача в рамках WinAVR - возможно, на чистом ассемблере и можно добиться почти нормального решения, но на Си - маловероятно. кратко: здесь идет речь о функциях ПРОГРАММНОЙ задержки, задаваемой значением переменной. причем кое-кому хочется иметь возможность получать задержки с шагом в 1 микросекунду в диапазоне от 1 микросекунды до часов и болееurry писал(а):так вроде писали
http://www.radiokot.ru/forum/viewtopic. ... &start=600
http://kazus.ru/forums/showthread.php?t=17495&page=9
не, незачет как 4 применение
в микросекундном диапазоне и тем более с ПРОГРАММНЫМИ задержками (т.е. без аппаратных таймеров) Брезенхам неуместен.
битва с дураками проиграна, победители торжествуют. слава победителям!
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: WinAvr в вопросах и ответах
С новым годом господа! Не деритесь 
Re: WinAvr в вопросах и ответах
Привет всем! Господа не могу найти ошибку: после компиляции выскакивает вот такая ошибка main.c:undefined reference to 'имя функции'.
Ситуация такая: есть главный файл main.c и заголовочный uart.h,который я подключаю как #include "uart.h",функция,имя которой высвечивается в ошибке определена в этом заголовочном файле. В чем может быть проблема?
Ситуация такая: есть главный файл main.c и заголовочный uart.h,который я подключаю как #include "uart.h",функция,имя которой высвечивается в ошибке определена в этом заголовочном файле. В чем может быть проблема?
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: WinAvr в вопросах и ответах
включить в makefile uart.c, возможно.
Re: WinAvr в вопросах и ответах
urry писал(а):включить в makefile uart.c, возможно.
А куда его включать-то
Код: Выделить всё
...
# Target file name (without extension).
TARGET = main
# Object files directory
# To put object files in current directory, use a dot (.), do NOT make
# this an empty or blank macro!
OBJDIR = .
# List C source files here. (C dependencies are automatically generated.)
SRC = $(TARGET).c
# List C++ source files here. (C dependencies are automatically generated.)
CPPSRC =
...а куда включать заголовочный файл,вернее куда вписать его имя?
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: WinAvr в вопросах и ответах
приложите мейкфайл
Re: WinAvr в вопросах и ответах
urry писал(а):приложите мейкфайл
Код: Выделить всё
# List C source files here. (C dependencies are automatically generated.)
SRC = $(TARGET).c uart.c Подправьте меня,если что не так.вроде бы скомпилился
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: WinAvr в вопросах и ответах
это как бы немного неправильно, при очистке может не задеть объектный файл, все как-то проще.
мой мейкфайл от чего-то там
мой мейкфайл от чего-то там
Код: Выделить всё
TARGET = rom_winavr_mob
F_CPU = 20000000
CSRC = main.c lmx2322.c
ASRC =
MCU_TARGET = atmega48
OPTIMIZE = -Os -mcall-prologues
DEFS =
LIBS =
DEBUG = dwarf-2
CC = avr-gcc
ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs $(DEFS)
ALL_ASFLAGS = -mmcu=$(MCU_TARGET) -I. -x assembler-with-cpp $(ASFLAGS)
CFLAGS = -g$(DEBUG) -Wall $(OPTIMIZE) -mmcu=$(MCU_TARGET) $(DEFS)
LDFLAGS = -Wl,-Map,$(TARGET).map
OBJ = $(CSRC:.c=.o) $(ASRC:.S=.o)
OBJCOPY = avr-objcopy
OBJDUMP = avr-objdump
SIZE = avr-size
all: clean $(TARGET).elf lst text size
$(TARGET).elf: $(OBJ)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LIBS)
clean:
rm -rf *.o $(TARGET).elf *.eps *.bak *.a
rm -rf *.lst *.map $(EXTRA_CLEAN_FILES)
rm -rf $(TARGET).hex
size: $(TARGET).elf
$(SIZE) -C --mcu=$(MCU_TARGET) $(TARGET).elf
lst: $(TARGET).lst
%.lst: %.elf
$(OBJDUMP) -h -S $< > $@
%.o : %.S
$(CC) -c $(ALL_ASFLAGS) $< -o $@
text: hex
hex: $(TARGET).hex
%.hex: %.elf
$(OBJCOPY) -j .text -j .data -O ihex $< $@
Re: WinAvr в вопросах и ответах
urry писал(а):это как бы немного неправильно, при очистке может не задеть объектный файл, все как-то проще.
кусок мой мейкфайл от чего-то там
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: WinAvr в вопросах и ответах
не понял вопрос - куда именно ???
в мейк файле выставляется частота, тип контроллера, оптимизация, сишные файлы и при необходимости - ассемблерные вставки (*.S) и еепром.
в мейк файле выставляется частота, тип контроллера, оптимизация, сишные файлы и при необходимости - ассемблерные вставки (*.S) и еепром.
- shurikss123
- Грызет канифоль
- Сообщения: 271
- Зарегистрирован: Пн окт 25, 2010 20:47:04
- Откуда: Казахстан, Астана
Re: WinAvr в вопросах и ответах
Привет всем, есть вопрос по поводу работы внутренней eepprom.
в интернетах надыбал что если задать переменную так volatile int EEMEM butt1=0; то он сформирует файл с данными eeprom, и его можно записать, так вот а как задать адрес этой переменной (чтоб он эти данные засунул не в первую ячейку, а к примеру в 20-ю).
в интернетах надыбал что если задать переменную так volatile int EEMEM butt1=0; то он сформирует файл с данными eeprom, и его можно записать, так вот а как задать адрес этой переменной (чтоб он эти данные засунул не в первую ячейку, а к примеру в 20-ю).
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: WinAvr в вопросах и ответах
Ну в винавр я не знаю если возможно, в IAR возможно точно. Вопрос - а зачем вам это нужно? Может есть другой способ решить проблему?
- shurikss123
- Грызет канифоль
- Сообщения: 271
- Зарегистрирован: Пн окт 25, 2010 20:47:04
- Откуда: Казахстан, Астана
Re: WinAvr в вопросах и ответах
BCluster писал(а):Ну в винавр я не знаю если возможно, в IAR возможно точно. Вопрос - а зачем вам это нужно? Может есть другой способ решить проблему?
может и можно, просто вдруг я страшный извращенец, я спросил, и жду ответа. да или нет, если да то как?
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: WinAvr в вопросах и ответах
Можно сделать массив на весь объем еепрома и тогда можно адресовать как угодно 
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: WinAvr в вопросах и ответах
shurikss123 писал(а):Привет всем, есть вопрос по поводу работы внутренней eepprom.
в интернетах надыбал что если задать переменную так volatile int EEMEM butt1=0; то он сформирует файл с данными eeprom, и его можно записать, так вот а как задать адрес этой переменной (чтоб он эти данные засунул не в первую ячейку, а к примеру в 20-ю).
если вам в жизни не хватает геморроя, то можно его получить. WinAVR для задуманного вами предоставляет 2 способа:
1. определить для вашей переменной отдельную секцию, а затем в командной строке указать линкеру адрес, по которому эту секцию размещать. способ непростой, имхо.
2. определить в программе указатель, присвоить ему нужный адрес, и работать с ним, как с указателем (т.е. адресом) вашей переменной - в этом случае все значительно проще, имхо.
битва с дураками проиграна, победители торжествуют. слава победителям!
