roboforum.ru

Технический форум по робототехнике.
Текущее время: 26 ноя 2024, 17:34

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Программирование микроконтроллеров
СообщениеДобавлено: 04 июн 2019, 14:56 
Не в сети

Зарегистрирован: 04 июн 2019, 14:55
Сообщения: 1
Всем привет, возникла проблема с кодом. Препод злюка не хочет помогать с этим. Суть проблемы. Пишу код на микроконтроллер Atmega 32, в Atmel Studio 7.0, возникает проблема что в этом коде не работает задержка. #define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

char M, a=1, b=2;


int main(void)
{








while (1)
{
PORTA=0b00000000;
DDRA=0b11111111;
PORTB=0b00000000;
DDRB=0b11111111;
PORTC=0b00000000;
DDRC=0b11111111;
PORTA|=0b00000001;
_delay_ms(100);
PORTA|=0b00000000;
_delay_ms(300);
/*M=b;
switch (M)
{
case 1: ;
{
PORTB|=(1<<0);
_delay_ms(100);
PORTB|=(1<<0);
_delay_ms(300);


break;}
case 2: ;
{
PORTA|=(1<<0);
_delay_ms(100);
PORTA|=(1<<0);
_delay_ms(300);
PORTA|=(1<<0);
_delay_ms(300);

break;}

default :;
}/*/
}
}
Как только убираю delay ms, программа работает и Proteus показывает как диод мигает по циклу. Мне нужно что бы диод мигал с задержкой которая указана в скобках, помогите прошуу..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование микроконтроллеров
СообщениеДобавлено: 09 июн 2019, 13:31 
Не в сети
Аватара пользователя

Зарегистрирован: 07 янв 2005, 23:39
Сообщения: 228
Откуда: г.Норильск, Россия
прог. языки: Pascal, C, C++
ФИО: Раф Попов
Протеус симулирует работу микроконтроллера не в режиме реального времени, то есть сотни миллисекунд в программе могут растянуться на секунды-десятки секунд в Протеусе.
Если без задержек программа работает, значит скорее всего, просто надо посидеть подождать, у Протеуса внизу отображается реальное симулируемое время, прошедшее с начала запуска.
Или на время отладки уменьшить значение задержек.
Инициализацию регистров DDR, если при выполнении не меняется направление ввода/вывода, не надо производить каждый цикл программы, достаточно сделать это один раз перед началом главного программного цикла. Тоже самое и с заданием первоначального состояния портов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование микроконтроллеров
СообщениеДобавлено: 12 янв 2022, 12:17 
Не в сети
Аватара пользователя

Зарегистрирован: 30 июл 2021, 08:58
Сообщения: 20
Насколько помню в задержке пишут микросекунды


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программирование микроконтроллеров
СообщениеДобавлено: 12 янв 2022, 18:49 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2009, 13:37
Сообщения: 750
Откуда: Porto Franco "Odessa"
какой конкретно кусок кода по вашему должен отвечать за мигание светодиода?

_________________
die Wahrheit ist irgendwo da draußen


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO