Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2022, 17:13   #1
Kirill2022
Новичок
Джуниор
 
Регистрация: 18.01.2022
Сообщений: 1
По умолчанию помощь в atmel studio

Нужна помощь! При составление программы на языке С+ возникает проблема с точками остановки. Может кто подскажет что я делаю не так.
Код:
#include "compiler.h"
#include <avr/interrupt.h>
#include "conf_example.h"

// Only use Pin Change Interrupt handler for devices supporting this.
#ifdef EXAMPLE_PCINT_vect


ISR(EXAMPLE_PCINT_vect)
{
	
	PIND = (1 << PIND0);
}

#endif


int main(void)
{
	
	uint8_t val;

	DDRD = 0xff;

	// Set output levels high. Will turn off STK600 LEDs.
	PORTD = 0xff;

	// Set output levels low. Will turn on STK600 LEDs.
	PORTD = 0;

	PORTB = 0xff;

	val = PINB;
	
	while (1)
	{
		PORTD |= (1 << PORTD0);

		PORTD &= ~(1 << PORTD0);
	}
}

Последний раз редактировалось BDA; 18.01.2022 в 23:18.
Kirill2022 вне форума Ответить с цитированием
Старый 18.01.2022, 17:54   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,659
По умолчанию

Надо посмотреть сформированный hex. Может быть, компилятор "оптимизнул" программу: один и тот же бит в PORTD устанавливается и тут же сбрасывется, и он решил: да ну его! - и выбросил оба оператора. Я для для AVR на С++ не пишу, но утверждают, что в таких случаях volatile решает проблему.
Вот тут детально это обкусано: https://www.radiokot.ru/forum/viewtopic.php?p=4163144
---------------
PS Остановки бывают автобусные. У отладчика это называют "точка останова" .

Последний раз редактировалось digitalis; 18.01.2022 в 17:57.
digitalis вне форума Ответить с цитированием
Старый 18.01.2022, 20:20   #3
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 747
По умолчанию

Цитата:
Сообщение от Kirill2022 Посмотреть сообщение
PIND = (1 << PIND0);
- с PIND обычно считывают, а не записывают туда.
Прерывание не должно иметь слово EXAMPLE в имени, это взято с какого-то примера, у Вас будет по-другому. Также PCINT(прерывание) имеет номер.

Цитата:
Сообщение от Kirill2022 Посмотреть сообщение
#ifdef EXAMPLE_PCINT_vect
- обычно не пишут условие, т.к. прерывание работает всегда в Вашей программе.

Цитата:
Сообщение от Kirill2022 Посмотреть сообщение
DDRD = 0xff;
- направление портов, все на выход, т.е. Вы считываете с пина, в этом случае, направление надо ставить на вход: DDRD = 0 на соответствующем бите.

Цитата:
Сообщение от Kirill2022 Посмотреть сообщение
PORTD = 0xff;
- переключать порты без задержек бессмысленно, если на них подключены светодиоды. Используйте задержки __delay_ms() и __delay_us().

И не забудьте подключить заголовочный файл
#include <avr/delay.h>
или
#include <utils/delay.h>
Кстати, не совсем понял что это?
#include "compiler.h"

Последний раз редактировалось BDA; 18.01.2022 в 21:16.
Cuprum5 вне форума Ответить с цитированием
Старый 18.01.2022, 23:15   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,659
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
- с PIND обычно считывают, а не записывают туда.
В последних версиях АВР на порт PINX возложена парадоксальная, на первый взгляд, функция: запись бита в PINX ... инвертирует соответствующий бит PORTX !
Изображения
Тип файла: jpg IO2.jpg (9.3 Кб, 22 просмотров)
digitalis вне форума Ответить с цитированием
Старый 03.02.2022, 12:47   #5
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 135
По умолчанию

В atmel studio gcc . А это самый коварный компилятор и сложный. Все как не стараися, а предупреждение напишет. Если бинарник будет сразу проверь, может рабочий быть
Немного о GoAsm.
Nif-naf вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ассемблер и микроконтроллер Atmel AVR masterwolf Помощь студентам 6 03.02.2022 18:13
Помощь по Studio Vizual AnnetDolmatova Помощь студентам 1 20.02.2017 20:40
Atmel Studio 6.0 симулятор для отладки Владимрл Микроконтроллеры, робототехника, схемотехника, 3D принтеры 0 13.06.2016 14:37
Необходимо написать софт для Atmel на языке “С++” rwnsk Фриланс 3 18.04.2016 20:09
Atmel ATA5811/ATA5812 Android Компьютерное железо 0 12.10.2009 14:45