Програмирование pic на СИ.

Поклонники продукции Microchip Technology Inc тусуются тут.
misterkuk
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение misterkuk »

Неужели люди которые знают програмирование не знают как зделать так чтоб работала моя арифметика?
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: Програмирование pic на СИ.

Сообщение Roman Venom »

почему компилятор PICC18 ругается на
bit flag_1;
Успех - императив!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

Может потому, что Вы его пытаетесь объявить внутри ф-ии ?
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: Програмирование pic на СИ.

Сообщение Roman Venom »

да нет, как глобальную переменную. Пишет синтакс эррор.
Вложения
ругается на переменную бит.jpg
(175.18 КБ) 619 скачиваний
Успех - императив!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

Попробуйте объявить как static bit.
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: Програмирование pic на СИ.

Сообщение Roman Venom »

static bit это вроде внутри ф-ции... но пробовал и так и сяк. Тоже самое:(
Успех - императив!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

Так у Вас компиль то какой ? Вы написали PICC18. Я так думаю что HI-TECH (?).
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: Програмирование pic на СИ.

Сообщение Roman Venom »

Language tool versions: mpasmwin.exe v5.34, mplink.exe v4.34, mcc18.exe v3.34

PICC18, иначе как бы проект компилился с кодом и инками для 4550 :)))
Успех - императив!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

Language tool versions: mpasmwin.exe v5.34, mplink.exe v4.34, mcc18.exe v3.34
Не вижу ни в Ваших постах, ни в скрине подобной строки.
У меня объявление как bit прокатывает на ура. Не знаю почему у Вас не работает.
Может у Вас какой-нибудь там PRO :roll:
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: Програмирование pic на СИ.

Сообщение Roman Venom »

Аlex
Не вижу ни в Ваших постах, ни в скрине подобной строки.
У меня объявление как bit прокатывает на ура. Не знаю почему у Вас не работает.

Та вроде обычный mcc_18. Только этот глюк... Кстати в хелпе отсутствует этот тип переменной.
Успех - императив!
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение urry »

Вы снесли мозг как мне, так и Алексу.

значение переменной - бит в общем, идет как бонус для этих компиляторов - :)
и, скорее всего, потому что ими хайтек куплен, (в котором оно есть как бы изначально), для совместимости с ним делают примочки.
Попробуйте подключить в проект файл GenericTypeDefs.h
Вложения
GenericTypeDefs.h
(15.7 КБ) 512 скачиваний
Chettuser

Re: Програмирование pic на СИ.

Сообщение Chettuser »

Так MCC18 или PICC18 ? Насколько я понимаю это несколько разные компиляторы... :roll:
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

Конечно разные.
Roman Venom всем мозг запудрил. :))
В PICC есть такой тип данных, в MCC походу нет. Вот и весь ответ. :)
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

Re: Програмирование pic на СИ.

Сообщение Roman Venom »

urry
Вы снесли мозг как мне, так и Алексу.

За файлик спасибо, попробую на досуге.

Аlex
Roman Venom всем мозг запудрил.

:))) Ну прикол в том, что MBLAB подсвечивает... это вводит в заблуждение.

В PICC есть такой тип данных, в MCC походу нет. Вот и весь ответ.

Уже понял.
Успех - императив!
misterkuk
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение misterkuk »

Ребят, ну обьясните как работать с этим флоат float. читал файл который дали выше. но там же не сказано как это всё оформить програмно.



volatile - ставьте если нужно предотвратить возможность повреждения содержимого переменной в прерывании, и не позволить компилятору попытаться выкинуть её при оптимизации кода. ---------- самое нормальное обьяснение.
FlySnake
Мучитель микросхем
Сообщения: 429
Зарегистрирован: Пт ноя 20, 2009 20:38:12
Откуда: Калининград (Koenigsberg)
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение FlySnake »

misterkuk писал(а):Ребят, ну обьясните как работать с этим флоат float. читал файл который дали выше. но там же не сказано как это всё оформить програмно.



volatile - ставьте если нужно предотвратить возможность повреждения содержимого переменной в прерывании, и не позволить компилятору попытаться выкинуть её при оптимизации кода. ---------- самое нормальное обьяснение.

Давай заново подробно показывай что не получается, кто ж помнит всех подробностей
Попутно анализируя свои действия и возможные причины проблем. Более чем в половине таких случаев решение само приходит в голову до того как успеешь до конца набить сообщение на форуме, ибо повторно разбираешься с проблемой не с места возникновения, а самого начала и по порядку.
misterkuk
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение misterkuk »

Значит так. Хочу сделать тахометр. По сути своей это частотомер в котором результат умножается на 60. Тоесть оборотов в минуту. Планирую снимать сигнал с датчика коленвала. 1 оборот=1импульс. Я в своей програме меряю время между импульсами (между задними фронтами, мне кажется так удобней). При кварце в 20 мегагерц 1машинный цикл (Далее мц) выполняется за 200 наносекунд. Зная количество машинных циклов с момента падения сигнала до момента падения сигнала( так как прерывание по заднему фронту) и время 1 мц то можем расчитать частоту по формуле 1/Т ( где Т- периуд)( тоесть 200 умноженые на количество МЦ и переведённые в секунды). Далее унас выходит частота за секунду. Умножаем на 60 и получаем Количество оборотов за минуту.
В програме так. Таймер1 считает количество МЦ между импульсами. При каждом переполнении таймера1 (Если время между циклами больше чем 65536) инкрементируется переменная tmr1temp и выходит из ПОП. Когда происходит прерывание, тоесть когда сигнал падает в ноль. Программа уходит в ПОП. Здесь я хотел сделать её как можно короче, то мы опускаем алаг прерывания int , обьединяем число с 2 половинок TMR1 в одну переменную и количество переполнений таймера в другую переменную. обнуляем переменную хранящюю количество переполнений ( мы их сохранили уже) и таймер1 обнуляем ( тоже сохранили обьединив 2 половинки тайймера) и выходим из прерывания. В основной программе мы считаем количество МЦ которые мы сохраняли. Тоесть количество переполнений умножим на 65536 и прибавим то что оттавалось в таймере до до момента обьединения их в одно число( так как я понимаю таймер работает когда мы в прерывании находимся). получили количество МЦ за периуд. Умножим это всё на 200наносекунд. Просто на 200 тупо множим, получается огромное число с точкой. Потом переводим это в секунды деля на МИЛЛИАРД. Потом единицу делим на то сто получилось и получаем частоту. Умножив на 60 получим частоту в минуту.
Проблема в том что янезнаю как считать большие числа , умножать и делить их в програме и как например вывести число которое с точкой разбить на целые и вывисть на 7сег индикатор. как вывести я знаю а вот как разбить число с точкой нет. Тоесть как разбить число типа float. Там как я понял степени какието, множители , идентификаторы плюса или минуса. как такое число вывести на дисплей.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

Вам совсем не нужен тип float, можно обойтись числами без точки.
Тактовая частота известна (20'000'000 Гц), период тоже (T).
Теперь просто берём тактовую, умножаем её на 60 и делим на период.
об/мин = 1'200'000'000 / T
Проверяем.
К примеру у нас 3000 об/мин. Это 50Гц. За 1 период(20 мс.), таймер отсчитает 400'000 тактов. Делим 1'200'000'000 на 400'000, получаем 3000. Что и требовалось доказать :)
Всё до боли просто :P

Если, к примеру, нужно показывать по 10 об/мин, а не по 1 (что-бы в глазах не мельтишило), то тактовую надо умножить не на 60, а на 6. А конечный результат умножить на 10.

Математика 5 класс :))
misterkuk
Мучитель микросхем
Сообщения: 400
Зарегистрирован: Сб апр 17, 2010 10:30:13
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение misterkuk »

Аlex писал(а):Вам совсем не нужен тип float, можно обойтись числами без точки.
Тактовая частота известна (20'000'000 Гц), период тоже (T).
Теперь просто берём тактовую, умножаем её на 60 и делим на период.
об/мин = 1'200'000'000 / T
Проверяем.
К примеру у нас 3000 об/мин. Это 50Гц. За 1 период(20 мс.), таймер отсчитает 400'000 тактов. Делим 1'200'000'000 на 400'000, получаем 3000. Что и требовалось доказать :)
Всё до боли просто :P

Если, к примеру, нужно показывать по 10 об/мин, а не по 1 (что-бы в глазах не мельтишило), то тактовую надо умножить не на 60, а на 6. А конечный результат умножить на 10.

Математика 5 класс :))

Класс. всё гениальное-просто. Это нужно сделать прерывание в 1сек и считать за секунду импульсы. Верно?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Програмирование pic на СИ.

Сообщение Аlex »

считать за секунду импульсы. Верно?
:shock:
:тут смайл - кот повесился:
Ответить

Вернуться в «PIC»