Например TDA7294

Форум РадиоКот • Просмотр темы - CodeVision AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн сен 22, 2025 20:29:34

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8297 ]     ... , , , 24, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 27, 2008 22:40:01 
Мучитель микросхем
Аватар пользователя

Зарегистрирован: Вт сен 25, 2007 19:40:26
Сообщений: 438
Откуда: Челябинск
Рейтинг сообщения: 0
DIM4 писал(а):
Sounds писал(а):
int main(void) { //Ошибка The “main” function must return

в CVAVR функция main должна иметь тип void тоесть void main(void)

Вовсе нет. Если void - ничего не возращает, если bit/char/int, тогда должна возращать этот тип, о чем в сущности и говорит компилятор "function must return" - дословно "функция должна возращать".
2 варианта:
1. в концовке добавить строку "return 0"
2. либо "int main(void)" заменить на "void main(void)".


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 29, 2008 05:55:49 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вт май 27, 2008 23:23:24
Сообщений: 238
Рейтинг сообщения: 0
Всем огромное спасибо за помощь, разобрался=)


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 02, 2008 11:13:44 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вт май 27, 2008 23:23:24
Сообщений: 238
Рейтинг сообщения: 0
Посмотрите пожалуйста, не как не могу с кнопкой разобраться, в чём может быть дело?
Код:
#include <mega8>
#include <delay>
void main(void) {
int i;
DDRD = 0xbf;
if (PIND.1 == 1) {
for (i=0; i<4; i++) {
 PORTD.0=1;
delay_ms(50);
PORTD.0=0;
delay_ms(50);
   }; 
};
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 02, 2008 12:09:07 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18406
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Sounds писал(а):
Посмотрите пожалуйста, не как не могу с кнопкой разобраться, в чём может быть дело?
а в чем, собственно, дело? :)))

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 02, 2008 14:03:37 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 13:14:25
Сообщений: 375
Откуда: Украина
Рейтинг сообщения: 0
Код:
if (PIND.1 == 1) {
выполняется if когда на пине лог. 1 , тоесть кнопка не нажата.

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 02, 2008 14:39:51 
Мучитель микросхем
Аватар пользователя

Зарегистрирован: Вт сен 25, 2007 19:40:26
Сообщений: 438
Откуда: Челябинск
Рейтинг сообщения: 0
Код:
DDRD = 0xbf;
if (PIND.1 == 1) {
...
}


1. Что за "мода" такая определить направление порта и ни строчки не написать для описания начального состояния подтягивающих резисторов?
Добавьте после DDRD -> PORTD=...

2. DDRD = 0xBF = 0b10111111
Логику видите?
На вход настроили порт PIND.6, а опрашиваете PIND.1...


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 02, 2008 16:30:11 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Пт апр 27, 2007 14:32:48
Сообщений: 256
Откуда: Украина Кривой Рог
Рейтинг сообщения: 0
Есть у кого то русский хелп для CodeVision поделитесь пожалуста.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 02, 2008 16:40:43 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вт май 27, 2008 23:23:24
Сообщений: 238
Рейтинг сообщения: 0
Спасибо за подсказку про подтяжку, добавил PORTB=0xFF;
А почему на входе будет PIND.6?
Ведь получается:
PORTD.0 - 1 (Выход)
PORTD.1 - 0 (Вход)
PORTD.2 - 1 (Выход)
PORTD.3 - 1 (Выход)
PORTD.4 - 1 (Выход)
PORTD.5 - 1 (Выход)
PORTD.6 - 1 (Выход )
PORTD.7 - 1 (Выход)
Соответственно на входным будет PIND.1. Правильно?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 02, 2008 19:01:24 
Модератор
Аватар пользователя

Карма: 27
Рейтинг сообщений: 58
Зарегистрирован: Пн апр 03, 2006 11:43:25
Сообщений: 4517
Откуда: Санкт - Петербург
Рейтинг сообщения: 0
Медали: 3
Получил миской по аватаре (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Нет, не правильно. Не с той стороны считаете. Младший разряд - крайний справа.

_________________
Оптимизм х (Опыт + Знания) = const


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 02, 2008 19:01:36 
Мучитель микросхем
Аватар пользователя

Зарегистрирован: Вт сен 25, 2007 19:40:26
Сообщений: 438
Откуда: Челябинск
Рейтинг сообщения: 0
Почему?
Наверное потому что в цифровой технике биты считаются справа налево.
Ваша запись 0b10111111 по правильному будет выглядеть так - 0b11111101, и следовательно DDRD=0xFD.


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 02, 2008 19:51:44 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18406
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
я не сторонник CodeVision. причин много, часть из них чисто субъективные. но, сторонники CVAVR, прочтите эту темку(одну из многих) и скажите - чем так хорош столь кривой компилятор?!

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 02, 2008 20:16:59 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вт май 27, 2008 23:23:24
Сообщений: 238
Рейтинг сообщения: 0
Не как не получается сделать так что бы программа реагировала на кнопку. В чём ещё может быть дело? Причём пробовал исподники и схемы с других сайтов но нечего не помогает. Может я что то не выставил при создание проекта?


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 02, 2008 20:36:52 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18406
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Sounds писал(а):
Не как не получается сделать так что бы программа реагировала на кнопку. В чём ещё может быть дело? Причём пробовал исподники и схемы с других сайтов но нечего не помогает. Может я что то не выставил при создание проекта?
хорошо хоть не прокладки с крылышками пробовали :)))
я задавал ранее вопрос - что вам надо и что не так у вас получается? вы молчите, как рыба об лед. молчите дальше - что сказать...

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 02, 2008 20:40:07 
Родился
Аватар пользователя

Зарегистрирован: Пн янв 21, 2008 20:21:02
Сообщений: 16
Рейтинг сообщения: 0
я думаю оператор if надо взять в бесконечный цыкл while (1)


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 02, 2008 21:45:22 
Грызет канифоль
Аватар пользователя

Зарегистрирован: Пт апр 27, 2007 14:32:48
Сообщений: 256
Откуда: Украина Кривой Рог
Рейтинг сообщения: 0
Sounds писал(а):
Посмотрите пожалуйста, не как не могу с кнопкой разобраться, в чём может быть дело?
Код:
#include <mega8>
#include <delay>
void main(void) {
int i;
DDRD = 0xbf;
if (PIND.1 == 1) {
for (i=0; i<4; i++) {
 PORTD.0=1;
delay_ms(50);
PORTD.0=0;
delay_ms(50);
   }; 
};
}


Я не специалист но можно попробывать так.
Код:

#include <mega8>
#include <delay>

void main(void)
{
 
PORTD=0x00;
DDRD=0x01;


    while (1)                             // бесконечній цикл
{
 int i;


    while (PIND.1 == 1)        //условие обработки кнопки
    {
        for (i=0; i<4; i++)
             {                            //цикл
        PORTD.0=1;                //включаем пин порта
        delay_ms(200);             //задержка
        PORTD.0=0;                 //віключаем пин порта
        delay_ms(200);             //задержка
            };

    };
};
}

 

незнаю какая была задумка работы программы но то что я подправил работает так при нажатии и отпускании кнопки светодио моргает 4 раза и ждет потом следующего нажатия программа работает проверил ее в протеусе.
:))


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 03, 2008 00:33:10 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вт май 27, 2008 23:23:24
Сообщений: 238
Рейтинг сообщения: 0
To ARV
Извини не заметил твоего поста!
Мне надо что бы программа хоть как то реагировала на замыкание кнопки.
Не получается у меня вообще нечего, программа не как не реагирует на замыкание и размыкание кнопки.
To sheva_s
Твой вариант к сожалению тоже неработает.=(


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 03, 2008 01:42:04 
Потрогал лапой паяльник
Аватар пользователя

Зарегистрирован: Вс мар 04, 2007 13:14:25
Сообщений: 375
Откуда: Украина
Рейтинг сообщения: 0
To Sounds
Кнопка подключена одним выводом к пину МК (PIND.1), а другим на минус (GND)?!
To sheva_s
Код:
...
PORTD=0x00;
DDRD=0x01;
...

Тут нет программной подтяжки входа. Вот для PIND.1:
Код:
PORTD=0xFF;
DDRD=0xFD;

И кажется что правельнее будет если while (PIND.1 == 0) , тоесть выпольнять когда появится лог. 0

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 03, 2008 02:01:41 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Вт май 27, 2008 23:23:24
Сообщений: 238
Рейтинг сообщения: 0
Да, совершенно верно, одна нога кнопки подключена к PD1, а другая нога кнопки к GND.
В итоги у меня получился вот такой код:
Код:
 #include <mega8>
#include <delay>
void main(void) {
int i;
DDRD = 0xFD;
PORTD=0xff;
if (PIND.1==1){
for (i=0; i<4; i++) {
 PORTD.0=1;
delay_ms(50);
PORTD.0=0;
delay_ms(50);
}
}
}

Но работает он неправильно, во первых он не реагирует на действия с кнопкой. А во-вторых светодиод который подключён к PD0 всё время горит. Горение светодиода скорее всего связанно с тем что строка PORTD=0xff; на всех портах D устанавливает единицу, а не включает подтяжку. Если проблема в этом, то это можно как то обойти?
[/code]


Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 03, 2008 06:19:40 
Мучитель микросхем
Аватар пользователя

Зарегистрирован: Вт сен 25, 2007 19:40:26
Сообщений: 438
Откуда: Челябинск
Рейтинг сообщения: 0
Глюк сайта


Последний раз редактировалось mr.Kirill Ср дек 03, 2008 06:21:51, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения:
СообщениеДобавлено: Ср дек 03, 2008 06:20:31 
Мучитель микросхем
Аватар пользователя

Зарегистрирован: Вт сен 25, 2007 19:40:26
Сообщений: 438
Откуда: Челябинск
Рейтинг сообщения: 0
Цитата:
Но работает он неправильно, во первых он не реагирует на действия с кнопкой.

Так этот код и не будет работать так как Вы хотите. Что у Вас сделано по тексту:
1. Настроили пины на вход и выход
2. Выставили на всех пинах лог.1
3. Далее если на входе 1, то цикл из 4х морганий
По логике вещей у Вас на входе всегда будет лог.1, так как включили резистор подтяжки. Чтобы реагировало на кнопку - нужно ждать на входе не лог.1, а лог.0!
Цитата:
А во-вторых светодиод который подключён к PD0 всё время горит. Горение светодиода скорее всего связанно с тем что строка PORTD=0xff; на всех портах D устанавливает единицу, а не включает подтяжку. Если проблема в этом, то это можно как то обойти?

По Вашему мнению что тогда такое "включение подтяжки", если не включение внутренних резисторов между пином контроллера и напряжением питания? Что равносильно появлению ("выставлению") лог.1 на выводе.
Отключите подтяжку от PD0, чтобы исключить свечение.

Для явной наглядности моргания светодиода сделайте задержку не 50мс, а хотя бы >200мс.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8297 ]     ... , , , 24, , , ...  

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y