По поводу подтягивающих резисторов КРАМ ответил. Вместо них можно использовать ноги МК, переключая их на вход на время гашения.
Как бы у входа наоборот, высокое входное сопротивление. Если подтяжка нулем на выходе не помогает, то перевод на вход...... база транзистора висит в воздухе.
Значит поставил я pnp транзистор..И это сильно снизило засветку индикатора(пауза менее 1мс) правда тупит немного.видимо пересчитать резистор базы надо..я думаю еще лучше ставить полевики.Вроде они намного быстрее переключаются.. Заодно спасибо и может кто подскажет типа аналога uln2003 .?только чтобы нагрузка подключалась не перед ней (uln2003) а после нее /него (драйвера )
Собственно чтобы научиться писать на Си, собственно для PIC это основной язык программирования, вам потребуется всего ничего. 1. Четко выучить синтаксис языка, любая вменяемая книга по Си в помощь, для начала нужно знать где правильно ставить точку с запятой и пару операторов. 2. Представлять структуру микроконтроллера под который пишете код. без этого вы ничего вменяемого не напишите. 3. Основательно изучить описание на ваш компилятор, этот хитрый парень может напутать вам все карты, в своей манией оптимизации все вам может изгадить. 4. Правильные примеры исходников и структуры проектов.
Начал осваивать С для пиков через протеус и наткнулся на странный прикол. У меня не компилируется больше ОДНОЙ функции! Причём поменял хайтековский с на ХС8 - та же хрень! На синтаксис софтина не матерится, симуляцию запускает, но в листинге напротив всех функций, кроме первой, опкоды ОТСУТСТВУЮТ и обращение к оным в пошаговом режиме просто проскакивается, как комментарий.
Это какое-то ограничение самого Протеза, бесплатной версии компилятора или я что-то пропустил?
С язък хорошии и мощнъй, но не терпит своеволия Как оределяется функция Пример: int - тип возвращаемого резултата my_func( - имя функции int a, int b) - тип и имя параметров { return a+b; - тело функции }
- здесь ничего не надо ставить, даже и ; можно директивъ препроцессора, но ето плохой стил void main(void) { ....
думаю что у тебя компилятор ругается из за наличие ; там где ему не место.
_________________ Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Для нерусских повторю: компилятор НЕ РУГАЕТСЯ. Он честно и без ошибок переводит остаток программы в код и запускает симулятор. Но для приведённых в листинге ПУСТЫХ (void) функций (т.е. процедур) даже адресов не назначает!
При этом если в них нарушить синтаксис, компилятор выматерится.
Спасибо, брат-славянин! Книга сия у меня есть, но, пока размышлял, что тебе могло не понравиться, обратил внимание, что процедуры типа void всё равно при вызове должны содержать скобки. О чём я, не писавши на Си уже добрых лет 15, благополучно забыл. Можно было сразу носом ткнуть.
Собственно, вопрос не вопрос, но интересно. Компилятор МикроСи для PIC от Микроэлектронники. Писал код для 16Ф628. Т.к. код получился больше и не компилировался, указал 16Ф648. Потихоньку оптимизировал, получилось ровно 2048. Вернул тип камня 16Ф628 и код скомпилировался ещё меньше. Въедливо разницу меж камнями не вычитывал, кроме объёма флеши, но на вскидку они не отличаются. Тем более, что код не имеет аппаратнозависимых функций, используется только прерывание по таймеру, софт-UART и библиотека 1602. Интересно, почему компилируется разный объём прошивки?
И более существенный вопрос. В МикроСи есть возможность задавать уровень оптимизации? Полазив по менюшкам - не нашёл.
_________________ Ох уж эти сказки... Ох уж эти сказочники...
Немного глупый вопрос. В С есть функции для работы с WDT? Нужно просто менять время срабатывания в коде. А компилятор даёт вроде только через #pragma. Регистра CW1 ваще нету в дефайнах. Или только __asm ("") делать?
Заголовок сообщения: Re: Програмирование pic на СИ.
Добавлено: Ср май 18, 2016 07:24:58
Открыл глаза
Зарегистрирован: Вт сен 27, 2011 09:27:40 Сообщений: 77
Рейтинг сообщения:0
Всем привет! А нельзя ли использовать модуль CCP, конкретнее PWM стандартный режим в любых портах выводить? Мне пока известно, что выход CCP1 настроен только на один вывод, а мне нужно в трех пинах? ECCP не нужен.
void Start_Bootload(){ char i = 0, xx, yy; long j = 0;
while (1) { if (i == 64) { //--- If 32 words (64 bytes) recieved then write to flash if (!j) Write_Begin(); if (j<BOOTLOADER_START_ADDR){ FLASH_Erase_Write_64(j, block); }
i = 0; j += 0x40; } //--- Ask for yy UART2_Write('y'); while (!UART2_Data_Ready()) ; //--- Read yy yy = UART2_Read(); //--- Ask for xx UART2_Write('x'); while (!UART2_Data_Ready()) ; //--- Read xx xx = UART2_Read(); //--- Save xxyy in block[i] block[i++] = yy; block[i++] = xx; } }
void main() org BOOTLOADER_START_ADDR{ // ANSELC = 0; // Configure PORTC pins as digital UART2_Init(115200); // Init USART at 115200 if (UART_Write_Loop('g','r')) { // Send 'g' for ~5 sec, if 'r' Start_Bootload(); // received start bootload } else { Start_Program(); // else start program } }
В результате: соединение устанавливается, прошивка заливается через бутлоадер. Но после ресета, загрузки залитой программы не происходит. Почему то всё время загружается бутлоадер. Подскажите, в чем может быть дело?
здравствуйте . подскажите пожалуйста существуют ли переменные длинной в 64 бита под pic16 pic18 если нет то как выйти из положения если требуется простая арифметика с числами в 64бита и болие спасибо!
Заголовок сообщения: Re: Програмирование pic на СИ.
Добавлено: Чт июл 14, 2016 13:16:13
Модератор
Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4590 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
В PIC16 и PIC18 нет переменных. В них есть область памяти, которая выделяется компилятором под переменные. Соответственно, всё зависит от компилятора, а не платформы.
это я понимаю ,спасибо постараюсь изъяснятся точнее
Покажите пожалуйста пример создания целочисленной без знаковой переменной длиной в 64 бита и еще хотелось бы знать какой именно компилятор "такое проглотит"
Вот здесь возникает вопрос - 1. Кто и как напишет код для "простой арифметикой" с переменной в 64 бита? и 2. Зачем вам такие числа 2^64? Въ атомъ в Вселенную будете считать?
_________________ Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Сейчас этот форум просматривают: Google [Bot] и гости: 19
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения