roboforum.ru

Технический форум по робототехнике.

МикроКонтроллер AVR начинающим - общие вопросы

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение EdGull » 10 июн 2008, 10:17

Не!... Мне на Сях писать религия не позволяет... :-D
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение loid » 10 июн 2008, 10:36

Я понимаю что это мелочи, но из них складывается жизнь. :) Подскажите, многие же пишут на СИ. Ощибку говорит: pointless integer comparison with an out of range constant (бессмысленно целое сравнению с вне диапазона постоянная) странно, но когда объявляю переменную и присваиваю к ней значение - ошибку не говорит
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 10 июн 2008, 10:52

loid писал(а):СИ мало знаю.


Вот "Си для МК" - http://avr123.nm.ru/05.htm
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение loid » 10 июн 2008, 11:16

Спасибо, просмотрел ваш курс, но не нашел как использовать символьные переменные в операторе IF

Но нашел вот что
Код: Выделить всёРазвернуть
 char ZNAC;
     int x,y,z;
       :
      if (ZNAC == '-') x = y - z;
      else  if (ZNAC == '+') x = y + z;
            else if (ZNAC == '*') x = y * z;
                  else if (ZNAC == '/') x = y / z;
                        else ...

CodeVisionAVR не принимает этот код
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение blindman » 10 июн 2008, 11:19

В одинарных кавычках - символ - один. В двойных - строка. В C строка - это указатель на массив символов.

Код: Выделить всёРазвернуть
char c = 'a'; // символ 'a'
char *s = "a"; // строка "a"


Сравнивать строки нужно с помощью библиотечных функций (strcmp, strcasecmp). Просто сравнение оператором == сравнивает адреса, на которые указывают переменные, а не то, что содержится по этим адресам.

Ты код на форум с клавиатуры пишешь, или копируешь из файла, который компилируешь? Говоришь о сравнении, а в скобках пишешь присвоение. И что за странная конструкция : int char x; ?

когда объявляю переменную и присваиваю к ней значение - ошибку не говорит

Компилятор какой? GCC выдает как минимум warning.

Вообще, в рамках форума объяснить синтаксис и типы данных C вряд ли возможно. Особенно человеку, мозг которого одурманен бэйсиком :D Шутка. loid , не принимай на свой счет. Читай классиков - Кернигана и Ритчи.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 10 июн 2008, 11:28

blindman писал(а):Читай классиков - Кернигана и Ритчи.

Я уж ему это советовал (там лежит Керниган и Ритчи - http://avr123.nm.ru/05.htm) - говорит "не помогает".

Добавлено спустя 1 минуту 19 секунд:
loid писал(а):просмотрел ваш курс, но не нашел как использовать символьные переменные в операторе IF

Так же как и любые другие переменные.

loid писал(а):CodeVisionAVR не принимает этот код

Приложите проект в архиве.

Добавлено спустя 4 минуты 49 секунд:
loid писал(а):вот что
Код: Выделить всёРазвернуть
 char ZNAC;
     int x,y,z;
       :
      if (ZNAC == '-') x = y - z;
      else  if (ZNAC == '+') x = y + z;
            else if (ZNAC == '*') x = y * z;
                  else if (ZNAC == '/') x = y / z;
                        else ...



Может лучше оператор switch применить ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение loid » 10 июн 2008, 11:50

blindman, спасибо всё по нятно разъяснил. :)
Аватара пользователя
loid
 
Сообщения: 349
Зарегистрирован: 16 окт 2007, 11:57
Откуда: Минycинck

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение Курсант » 13 июн 2008, 16:15

Подскажите кто- нибудь 100% рабочую схему программатора для PIC, желательно через ком.
Заранее большое спасибо!!!!!!!!!!!!!
Курсант
 

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 13 июн 2008, 17:07

Курсант писал(а):Подскажите кто- нибудь 100% рабочую схему программатора для PIC, желательно через ком.


Зырь ВНИМАТЕЛЬНО на http://avr123.nm.ru и http://avr123.nm.ru/09.htm
Программаторы для PIC и русcкая документация по PIC - там же книги - в них есть ВСЁ !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение rig » 13 июн 2008, 19:35

держи, в нутри фотка автора, мой чуток покрасивше только фотки нет, но есть плата в лайоуте.
программатор собран, работает, настройки не требует.
programmator_PIC.rar
(1015.45 КиБ) Скачиваний: 43

pic.GIF
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 14 июн 2008, 21:06

Вышла новая версия VMLAB 3.14 http://www.amctools.com/download.htm

ATiny11, ATiny12, ATiny15, ATiny22, AT90S2343, AT90S2323, AT90S1200, AT90S2313, AT90S4433, AT90S4414, AT90S8515, AT90S4434, AT90S8535, ATmega8, ATmega16, ATmega161, ATmega162, ATmega32, ATmega64, ATmega128, ATmega8515, ATmega8535.

А вот и МОЙ кайф !!! Есть модели: ATmega48, ATmega88, ATmega168. Наконец-то.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение Pavel.d.a » 16 июн 2008, 16:11

Здравствуйте. подскажите пожалуйста, как осуществить следующее: частота на любой ножке порта изменяется от 1 до 1000000 герц с шагом 1 герц. Изменение частоты на 1 герц раз в 6 секунд. В течении этих шести секунд скважность при данной частоте меняется от 20 до 80 % (шим) (10% в секунду соответственно).(ATmegaххх, язык Си).
спасибо.
Pavel.d.a
 
Сообщения: 15
Зарегистрирован: 16 июн 2008, 13:12

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение avr123.nm.ru » 16 июн 2008, 16:23

Pavel.d.a писал(а):изменяется от 1 до 1000000 герц с шагом 1 герц.


69 дней вроде займет процесс.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение Myp » 16 июн 2008, 17:42

ага
с половиной
нужно позаботиться о хорошем бесперебойном питании


раз меняется скважность то видимо без шима не обойтись...
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: МикроКонтроллеры начинающим - общие вопросы

Сообщение Pavel.d.a » 16 июн 2008, 18:18

Если быть совсем точным то 69 дней 10 часов и 40 минут. Если все получится то такие затраты во времени оправданы. Кстати нужно будет еще один канал, но сдвинутый на 180 по фазе. Нужно это для управления инвертором, на который будет подключена катушка индуктивности. Я в микроконтроллерах новичек, поэтому прошу Вашей помощи. Советовали сделать на таймере, как шим реализовывать при использовании таймера понятно, но как задавать частоту тактирования таймера с шагом 1 герц я не представляю. Насколько я понял частоту тактирования можно изменять с помощью предделителя, это отношение частоты кварцевого резонатора к 1, 8, 32, 64, 128, 256, 1024 (предустановка регистра TССRnВ), но это не удовлетворяем условию. Я могу ошибаться. Разъясните пожалуйста.
Pavel.d.a
 
Сообщения: 15
Зарегистрирован: 16 июн 2008, 13:12

Пред.След.

Вернуться в Микроконтроллеры

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

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