Поиск сообщества
Показаны результаты для тегов 'atmel studio'.
Найдено: 7 результатов
-
Добрый день. Опять ATMega, опять таймер 1, вопрос рутинный, но я за сегодня уже извёлся. Что я хотел сделать: МК должен рассчитывать положения моторов (SG90, регулируются временем импульса), включать их все вместе по совпадению таймера 2, затем рассчитывать, когда какой мотор надо отключить, получившийся список сортировать и ставить таймер 1. Таймер 1 сработал - выключили мотор, переставили таймер 1 на подальше. Снова сработал - снова что-то там сделали, увеличили OCR1A и так далее. Конечно же с первого раза не заработало и я начал упрощать и локализировать проблему. Получилось вот что: при срабатывании прерывания на совпадение таймера 1 с OCR1A я смотрю в отладчик - а там во-первых TIFR = OCF1A + OCF1B + TOV1, а TCNT1 равен чему угодно, но не OCR1A. Таймер как будто срабатывает не тогда. А когда я ставлю значение поменьше, допустим, OCR1A = 1000 и перехожу в пустой цикл while(1){}, то при наступлении OCR1A == 1000 просто ничего не происходит, прерывание не срабатывает. В целом так. Сейчас очень упрощённый, минимально не работающий код выглядит так: #define SET(_REGISTER, _BIT) _REGISTER |= 1 << _BIT #define UNSET(_REGISTER, _BIT) _REGISTER &= ~(1 << _BIT) void local_timer_setup(void) { SET(TCCR1B, CS10); //Setting timer 1 to x1 mode }; void local_timer_start(void) { TCNT1 = 0; SET(TIMSK, OCIE1A); //Allow timer 1 match A interruption }; void local_timer_off(void) { UNSET(TIMSK, OCIE1A); //Prohibit timer 1 match A interruption }; ISR(TIMER1_COMPA_vect) { PORTD = 0xFF; local_timer_off(); }; ISR(TIMER2_COMP_vect) { if (global_timer_count == 2) { global_timer_count = 0; TIFR = 0; PORTD = 0; if (current_step < 10) OCR1A = 0xFFF; else OCR1A = 0xFFFF; if (current_step == 20) current_step = 0; else current_step++; local_timer_start(); } else global_timer_count++; }; Полный код в файле. sei() не забыл. Кстати, таймер нормально выключать/включать через TIMSK, как у меня? Заранее спасибо. Scarecrow_embeded.rar
-
Всем привет! Подскажите, пожалуйста, как правильно считать данные с внешней eeprom по шине spi, в данном случае 25LC256. Написал код ссылаясь на даташит. Собрал схему в протеусе, подключил spi отладчик и вот что получил в итоге. Так же не могу проверить получается записать данные в память или нет. Весь код прикрепил. main.c
-
Всем привет! Я пишу код в Atmel studio для вывода текста на дисплей. В определенном случае мне нужно, чтобы при отображении на дисплее определенного текста, который задается функцией GLCD_String(1,"123") и нажатия клавиши, например PB2=0 Запускалась другая функция. Однако, на while(1) { if ((GLCD_String()=GLCD_String(1,"123"))|PB2=0) { ABC(); } } компилятор ругается "Error too few arguments to function 'GLCD_String'". Однако, сама по себе функция GLCD_String() работает, если брать без if. Как устранить эту ошибку?
-
Atmel Studio 7. Здравствуйте. Занимаюсь в свободное время небольшим проектом. Пару дней был перерыв, всё работало. Сегодня делаю ребилд, вот Output: ------ Rebuild All started: Project: RF, Configuration: Debug AVR ------ Build started. Project "RF.cproj" (Clean target(s)): Target "Clean" in file "D:\Circuits\AtmelStudio\7.0\Vs\Compiler.targets" from project "D:\Circuits\AvrProjects\RadioNanny\RF\RF.cproj" (entry point): Task "RunCompilerTask" Shell Utils Path D:\Circuits\AtmelStudio\7.0\shellUtils D:\Circuits\AtmelStudio\7.0\shellUtils\make.exe clean rm -rf library.o rm -rf library.d rm -rf "libRF.elf" "libRF.a" "libRF.hex" "libRF.lss" "libRF.eep" "libRF.map" "libRF.srec" "libRF.usersignatures" Done executing task "RunCompilerTask". Done building target "Clean" in project "RF.cproj". Done building project "RF.cproj". Build succeeded. ------ Rebuild All started: Project: RF, Configuration: Debug AVR ------ Build started. Project "RF.cproj" (default targets): Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!=''). Target "CoreBuild" in file "D:\Circuits\AtmelStudio\7.0\Vs\Compiler.targets" from project "D:\Circuits\AvrProjects\RadioNanny\RF\RF.cproj" (target "Build" depends on it): Task "RunCompilerTask" Shell Utils Path D:\Circuits\AtmelStudio\7.0\shellUtils D:\Circuits\AtmelStudio\7.0\shellUtils\make.exe all --jobs 2 --output-sync D:\Circuits\AvrProjects\RadioNanny\RF\Release\Makefile(79,1): error: recipe for target 'library.o' failed make: *** [library.o] Error 1 Done executing task "RunCompilerTask" -- FAILED. Done building target "CoreBuild" in project "RF.cproj" -- FAILED. Done building project "RF.cproj" -- FAILED. Build FAILED. ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== В ошибках: Severity Code Description Project File Line Error recipe for target 'library.o' failed RF D:\Circuits\AvrProjects\RadioNanny\RF\Release\Makefile 79 Что находится в Makefile строка 78-82: 78: ./%.o: .././%.c 79: @echo Building file: $< 80: @echo Invoking: AVR/GNU C Compiler : 5.4.0 81: $(QUOTE)D:\Circuits\AtmelStudio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DNDEBUG -I"D:\Circuits\AtmelStudio\7.0\Packs\atmel\ATtiny_DFP\1.2.118\include" -Os -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -Wall -mmcu=attiny13 -B "D:\Circuits\AtmelStudio\7.0\Packs\atmel\ATtiny_DFP\1.2.118\gcc\dev\attiny13" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" 82: @echo Finished building: $< Перестало билдиться именно при ребилде. Если откатить изменения, и сделать просто билд - всё работает. Запускаю студию от администратора, т.е. с правами проблем нет. Да и по логике, если хватает прав удалить при clean файлы, то должно хватать и на создание. Вообще, мне не совсем понятна фраза recipe for target 'library.o' failed.
-
Всем доброго дня. Возникла такая проблема: AVR JTAGICE MK2 отказывается видеть по протоколу JTAG устройство на ATmega-128, как под управлением AVR Studio 4, так и под управлением Atmel Studio 7 на частотах от 1 до 11 МГц, хотя другие устройства видит нормально. В то же время это устройство отлично видится через Atmel-ICE 3, при частотах от 1 до 11 МГц, но при условии, что в настройках Devise Programming параметр JTAG Clock установлен не выше 3,5 МГц, хотя, судя по описанию, этот параметр влияет только на протокол ISP. Параметр JTAG Clock в настройках для JTAGICE MK2 отсутствует. Подскажите, что это может быть, и есть ли где ни будь в студиях "секретные коды". В логах пишут, что JTAG Clock = 0, но где можно поменять это умолчание? Заранее благодарен.
-
Доброго времени суток. Вопрос в названии: есть ли готовая библиотека для работы с дисплеем? Сразу отвечу на пару возникающих вопросов: 1. Да, я уже искал в инете. Если что-то похожее находил, оно обязательно не рабочее! 2. Сам писать не пробовал. ИМХО, приступлю к этому если не будет другого выбора. Спасибо за интерес и помощь
- 9 ответов
-
- библиотека
- atmel studio
-
(и ещё 1 )
C тегом:
-
Приветствую. Написал СИ программу для AVR в Atmel Studio 7. При просмотре вкладки "Disassembly" вместо имен регистров отображаются числа. Можно ли как-то настроить чтоб числа ресолвились об инклуд чипа хотя бы?