Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/24: Рейтинг темы: голосов - 24, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 59

Нубский вопрос по программированию на AVRStudio

24.11.2012, 22:05. Показов 4744. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
У меня один вопрос, очень глупый и простой, но, как часто бывает, над такой мелочью ломаешь голову, пока не ткнут знающие люди в правильном направлении.
Так вот собственно постановка вопроса:
Необходимо написать программу: мигание кучей светодиодов, когда нажата кнопка, т.е. нажал - начали мигать, отпустил - перестали. Все банально и просто.
Писал на CodeVision:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <tiny2313.h>
#include <delay.h>
 
int i = 0;
 
void main(void)
{
DDRB = 0xFF;
PORTB = 0xFF;
 
DDRD = 0x00;
PORTD = 0xFF;
 
while(1)
{
if (PIND.2 != 0)
{
PORTB= 0xFF;
i = 0;
}
else
{
if (i == 0){i = 1;}
else {
PORTB=~i;
i=i*2;
delay_ms (100);
if (i >128) {i = 1;};
}
}
}
 
}
Закидываю в Протеус - все отлично работает, но надо обязательно написать в AVRStudyo. В ней получается такая штука:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <avr/io.h>
# include <util/delay.h>
 
int i = 0;
 
void _delay_ms (double _delay_ms);
 
int main(void)
{
DDRB = 0xFF;
PORTB = 0xFF;
 
DDRD = 0x00;
PORTD = 0xFF;
while(1)
{
if (PIND & (1<<3) != (0<<3))
{
PORTB= 0xFF;
i = 0;
}
else
{
if (i == 0)
{i = 1;}
else
{
PORTB=~i;
i=i*2;
_delay_ms (100);
if (i >128) {i = 1;};
}
}
}
}
Но, такое чувство будто не работает у меня вот эта строчка:
Code
1
if (PIND & (1<<3) != (0<<3))
не работает.
Подскажите пожалуйста где косяк, день 4ый сижу, не могу понять и если можете посоветуйте неплохую книжечку для прогарммирования в аврстудии Буду благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.11.2012, 22:05
Ответы с готовыми решениями:

Нубский вопрос
В правилах вроде написано, что сайт должен быть расположен на платном хостинге. У меня есть домен *.org.ru, на нем сайт, я могу его к...

нубский вопрос
не индексируются сайты на одном хостере, робот кажись даже не заходит, сначала ждал когда сам придет, потом не раз стучал в...

Нубский вопрос
Адрес страниц имеет влияние относительно своего уровня? Хочу ЧПУ использовать в подпапках. Что лучше: ...

15
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 524
24.11.2012, 22:46
Code
1
2
3
if (PIND.2 != 0)
 
if (PIND & (1<<PD2)) != 0)
Как-то так наверно.
0
1 / 1 / 0
Регистрация: 26.10.2011
Сообщений: 811
24.11.2012, 22:47
а какой смысл вы вкладывали в эту строчку?

if (PIND & (1<<3) != (0<<3))
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 59
24.11.2012, 22:52
[QUOTE="ВитГа"]а какой смысл вы вкладывали в эту строчку?

[QUOTE="Цитата:[/QUOTE]
if (PIND & (1<<3) != (0<<3))
Сравнение. Прочитал на каком-то сайте, не помню название, там как раз описывалось использование логики. И Аналогичная строчка сравнивает нужный бит.
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 59
24.11.2012, 22:57
Цитата Сообщение от Tyfo
Код:
if (PIND.2 != 0)

if (PIND & (1<<PD2)) != 0)

Как-то так наверно.
Не катит =(
Нажимаешь кнопку - ничего не поисходит
0
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
24.11.2012, 23:31
[QUOTE="Mub"][QUOTE="ВитГа"]а какой смысл вы вкладывали в эту строчку?

if (PIND & (1<<3) != (0<<3))
Сравнение. Прочитал на каком-то сайте, не помню название, там как раз описывалось использование логики. И Аналогичная строчка сравнивает нужный бит.
По большому счету она ничего не сравнивает. Что такое по-вашему
Code
1
0<<3
?
0
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 524
24.11.2012, 23:39
if (bit_is_set(PIND, PIND2))

Вот из проекта выдернул(5-6я студия)
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 59
24.11.2012, 23:45
Цитата Сообщение от Bytt
По большому счету она ничего не сравнивает. Что такое по-вашемуКод:
0<<3?

А...Понял ошибку, спасибо)
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 59
25.11.2012, 00:06
Цитата Сообщение от Tyfo
if (bit_is_set(PIND, PIND2))

Вот из проекта выдернул(5-6я студия)
О, спасибо, помогло.

Теперь только задержка не фурычит в протеусе...
В протеусе куча косяков, но такого не было вроде ни разу...
Тупо застывает на первом светодиоде, если юзать задержку, без нее все бегает.
0
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 524
25.11.2012, 00:43
Тупо застывает на первом светодиоде, если юзать задержку, без нее все бегает.
F_CPU подефолту на 1мгц выставлена.
Может в этом дело?
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 59
25.11.2012, 01:34
Цитата Сообщение от Tyfo
F_CPU подефолту на 1мгц выставлена.
Может в этом дело?
Хм...
Добавил
Code
1
#define F_CPU 4000000UL
, в Протеусе поставил тактирование от внутреннего РЦ на 4 МГц, ничего не меняется...
0
0 / 0 / 0
Регистрация: 12.03.2012
Сообщений: 524
25.11.2012, 01:48
Сейчас попробовал с атмегой 8й в протеусе - работает как надо =)
0
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
25.11.2012, 12:04
В Протеусе еще нужно уметь выставлять нужную частоту в самом процессоре.
0
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
25.11.2012, 18:41
А зачем у вас объявлена функция void _delay_ms (double _delay_ms); Она же в библиотеке задержек delay.h должна присутствовать. Студия никаких ворнингов не выдает после компиляции?
Подтверждаю - в протеусе все работает.
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 59
25.11.2012, 22:47
Цитата Сообщение от Финский
А зачем у вас объявлена функция void _delay_ms (double _delay_ms); Она же в библиотеке задержек delay.h должна присутствовать.
Спасибо, не знал. У Шпака вроде, спалил что так объявляется вот и сделал=)

Студия никаких ворнингов не выдает после компиляции?
Все хорошо в студии, в протеусе сделал с мегой 8ой - тоже работает....
Ща буду дальше разбираться почему не хотит с тинькой работать...
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 59
26.11.2012, 19:19
Вопрос решен.
Спасибо всем за помощь=)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.11.2012, 19:19
Помогаю со студенческими работами здесь

Нубский вопрос
Есть конструкции, которые надо закрыть от индексации... точне, это сессии: ...

Нубский вопрос. PHP vs SH
Нубский вопрос. Почему php так популярен? Могу ли я писать динамический контент только shell-скриптами? Насколько php быстрее/медленнее...

Нубский вопрос по IF_THEN_ELSE
Надо составить алгоритм, подтверждающий пароль, используя только многострочную запись IF THEN ELSE на примере. Все бы ничего, но фишка в...

нубский вопрос по FreeRTOS + CDC
Здравствуйте. Пытаюсь освоить STM32 на плате STM32F4 Dyscovery, для своего проекта сразу решил попробовать сделать все на ОСРВ. ...

Нубский вопрос про монтирование
В общем есть жесткий 15 Гб, управляется все это по SSH, система стоит FreeBSD 8. После установки хостером становится доступно 5 Гб,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru