Поиск сообщества
Показаны результаты для тегов 'AtmelStudio'.
Найдено: 8 результатов
-
1.Создать схему в которой два светодиоды загораются в следующей последовательности: 1 и 2, 2 и 3, 3 и 4, …, 15 и 16, 1 и 2 и т.д. (т.е. создается эффект движения двух светодиодов). Дано условие выше. Решение задачи нужно представить в Proteus. Код для программирования пишу в AtmelStudio 7. Схему собрал в Proteus. Вывел 16 светодиодов через 2 порта (Порт B и Порт D). МК использовал ATMEGA 8 вариации в корпусе DIP с 28 ножками (SPDIL28). До этого смог написать схему, чтобы работали светодиоды в последовательности 1.2.3.4.5....16.1.2.3.4 и тд. Делал через оператор FOR. Однако с этим кодом начались проблемы. Помогите пожалуйста. Нижу представил изображение кода. Заранее спасибо!
-
Здрасте, я хочу разобраться как работает и программируется мк и для этого выбрал среду разработки AtmelStudio. Привлекла она тем, что в ней есть симуляторы микроконтроллеров и покупать отладочные платы с мк не нужно, чтобы просто проверить код, что в какой регистр записывается и т.д. Захотел заглянуть в заголовочный файл, нашёл там строки: if __AVR_ARCH__ >= 100 # define __SFR_OFFSET 0x00 # else # define __SFR_OFFSET 0x20 # endif P.S. модель взял atmega16 Стал искать документацию по этому файлу... так и не нашёл. Потом пришла идея посмотреть значение __AVR_ARCH__ через отладку, поставил там точку, нажал на запуск с отладкой, но не вышло... отладчик сразу переходит на функцию мейн. Подумал, что может это препроцессорная директива, поэтому и не заходит, но потом наткнулся на это: https://docs.microsoft.com/ru-ru/visualstudio/debugger/navigating-through-code-with-the-debugger?view=vs-2019 ... там в конце темы показано что в VS можно отлаживать и исходники. Пытался найти такие же настройки в Atmelstudio... не нашёл. Помогите пожалуйста, есть ли такая возможность в AtmelStudio посмотреть значения констант и переменных в заголовочных файлах?
-
добрый день. Вернулся к микроконтроллерам после длительного перерыва. Сижу туплю и даже гугл не помог. Два вопроса по Atmel Studio 7. Режим отладки. Симуляция. 1. Как включить окно в котором можно посмотреть что контроллер выплевывает в UART? Не содержимое регистра, а типа терминала. 2. Как подсунуть студии файлик с содержимым EEPROM?
-
Доброго времени суток!! Я в замешательстве! Atmega8, AtmelStudio, отладка в Proteus. int main(void) { setup();//Там устанавливаются конфигурации входов и регистров таймера1 while(1) { if(!(PINB&(1<<1)))// pb1 через кнопку на землю. pb1 притянут к питанию внутренним резистором. { TCCR1B |= (1<<0);//Устанавливаем нулевой бит регистра, что бы запустить таймер без делителя частоты, //остальные биты этого регистра в сетапе обнулялись } PORTD = TCCR1B;// в Порт Д засылаем значения регистра и смотрим шо происходит. } } А происходит следующее. При нажатии кнопки загорается PD0, вроде бы норм. Но при отпускании кнопки тухнет. Почему? Стоит вынести TCCR1B |= (1<<0); из тела условия в любое другое место все работает как надо. Но вот еще прикол. int main(void) { setup(); int tmp = 1;// Добавляем переменную while(1) { if((!(PINB&(1<<1))) && tmp)// Тело условия должно выполниться только 1 раз после нажатия { TCCR1B |= (1<<0);//start timer1 tmp = 0; } PORTD = TCCR1B; } } Казалось бы, теперь момент отпускания кнопки никак не должен влиять на результат. Но поведение PD0 то же самое. Горит только во время удержания кнопки. МК для меня новая область изучения, по этому прошу помочь разобраться и установить этот чёртов бит))
-
Здравствуйте, бояре! Уже не помню в какой IDE наблюдал фичу сдвига вверх/вниз выделенных строк кода внутри листинга при помощи клавишных комбинаций. Удобнейшая весчь ) А в AtmelStudio 7 она есть?
-
Здравствуйте. Думаю кто-то сталкивался с таким. Пишу прошивку для двух контроллеров, которые будут общаться через RF модуль. Для них нужны некоторые общие настройки, например частота, время задержки при определенных действиях, и тд. Задавать в каждом проекте в коде - противоречит принципу DRY, да и вообще... Сделал два проекта, для передатчика и приемника. И сделал проект static library для общих настроек, назвал Common. Добавил референсы на статическую библиотеку. Определяю в common: unsigned char KEY = 0b10010110; Пытаюсь использовать в проекте передатчика: send(KEY); При ребилде получаю ошибку, что KEY не определена.
-
Привет. Вот, озадачился такой, на первый взгляд, простой ерундой. Как подключить 24 релюшки к одному микроконтроллеру. Да еще и ножки микросхемы сэкономить. Конечно же 74hc595!!! Да не тут то было. Если с двумя регистрами проблем никаких не возникало, то с тремя, что то пошло не так. Пишу в AtmelStudio на Си. Макро #define DS_PORT PORTD #define DS_PIN 3 #define ST_CP_PORT PORTD #define ST_CP_PIN 4 #define SH_CP_PORT PORTA #define SH_CP_PIN 4 #define DS_low() DS_PORT&=~ (1 << DS_PIN) #define DS_high() DS_PORT|= (1 << DS_PIN) #define ST_CP_low() ST_CP_PORT&=~ (1 << ST_CP_PIN) #define ST_CP_high() ST_CP_PORT|= (1 << ST_CP_PIN) #define SH_CP_low() SH_CP_PORT&=~ (1 << SH_CP_PIN) #define SH_CP_high() SH_CP_PORT|= (1 << SH_CP_PIN) А это функция вывода числа через три последовательно подключенных регистра void output_led_state(unsigned long int __led_state) { SH_CP_low(); ST_CP_low(); for (long int i=0;i<24;i++) { if (((1 << i) & __led_state) == (1 << i)) DS_high(); else DS_low(); SH_CP_high(); SH_CP_low(); } ST_CP_high(); } А тут, в майне, я передаю число. output_led_state(0b000000010000000000000000); Но выводится только 16 бит а не 24!!!!!! Вопрос, что я делаю не так??? В архиве схема и прошивка. proyeck.rar
- 59 ответов
-
- atmelstudio
- 74hc595
-
(и ещё 2 )
C тегом:
-
Добрый день ребят! Помогите пожалуйста с реализацией кода на Attimy2313A с UART Написал вот такой кодик по примерам: #define F_CPU 8000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <stdio.h> #include <stdlib.h> //макросы вычисления скорости #define BAUD 19200 #define UBRR_VAL F_CPU/8/BAUD-1 void usart_init(unsigned int speed) { // устанавливаем скорость Baud Rate: 9600 UBRRH=(char)(speed>>8); UBRRL=(char) speed; UCSRA=0x00; UCSRB|=(1<<RXEN);// Разрешение работы приемника UCSRB|=(1<<TXEN); //Разрешение работы передатчика UCSRB|=(1<<RXCIE);// Разрешение прерываний по приему // Установка формата посылки: 8 бит данных, 1 стоп-бит UCSRC=(1<<UCSZ1)|(1<<UCSZ0); } //выводим принятый байт на порт ISR(USART0_RX_vect) { PORTB=UDR; _delay_ms(100); UDR = PORTB; // "ЭХО" } int main(void) { usart_init(UBRR_VAL);//инициализация модуля sei(); DDRB= 0b11111111; //вывод на все пины порта B while(1); { } Цель текущего кода: принять и отправить по прерыванию. Пробовал тестить в протеусе, что то неочень получается. данные приходят но криво. Приколы с таблицой ASCII я уже просек, поэтому пробовал отправлять с зажатым альтом цифры. Результат неутешил. Конечный код должен принимать подряд 2 байта, где 1- содержит ИД устройства , если BlockID == 1 байту (где BlockID - const), то второй байт кидаем на PORTB Главный вопрос, работает ли мой код и как принимать подряд 2 байта в одном прерывании?? Пишу в Atmel Studio 7 Баудрэйт 19200 бод Частота мк 8МГц
- 46 ответов
-
- UART
- AtmelStudio
-
(и ещё 2 )
C тегом: