Jump to content

    

Vny4ek

Участник*
  • Content Count

    145
  • Joined

  • Last visited

Everything posted by Vny4ek


  1. Спасибо, но "черный ящик" мне не нужно, хочется разобраться, полностью согласен что исходник с другой платформы скорее запутает. "Будем искать" (с)
  2. Конечно, был бы очень признателен если дали бы посмотреть примеры
  3. Спасибо за ответ. Тоесть трансивер+всю обвязку все же необходимо использовать (если разговор про AVR) Функционал предполагается такой (посмотреть что в шине передается, в последующем попытаться что нибудь отправить) Скорее изучение интересно STM23 к сожалению не подойдет. А для таких задач реально ли найти какие-нибудь примеры на Си. что бы освоить или достаточно закрытая тема?
  4. Здраствуйте, подскажите пожалуйста, задача вроде простая Хочу поиграться с автомобильной CAN шиной, тоесть планирую сделать устройство которое можно подключить к шине и для начала прочитать пакеты гуляющие в ней с выводом в UART. Сразу вопросы следующего порядка 1) Хочу использовать AVR с CAN на борту, но вижу что есть еще CAN трансиверы, нужны ли мне они при использовании AVR с поддержкой CAN, ну и как оптимальней вообще организовать схему и на каких деталях, что еще нужно в обвязке как правило. 2) если по программной части видели на Си исходники где все не слишком сложно, хотелось бы тоже посмотреть. Устройство не промышленное, просто любительская поделка
  5. читаю даташит но там нет такой частоты, параметр отвечающий за это как я понимаю это CS<1:0>: Clock Source Select bits 00 = FOSC/8192 01 = T1OSC (Timer1)/32 1x = LFINTOSC (31 kHz)/32 и прескалер LP<3:0>: LCD Prescaler Select bits 1111 = 1:16 1110 = 1:15 1101 = 1:14 1100 = 1:13 1011 = 1:12 1010 = 1:11 1001 = 1:10 1000 = 1:9 0111 = 1:8 0110 = 1:7 0101 = 1:6 0100 = 1:5 0011 = 1:4 0010 = 1:3 0001 = 1:2 0000 = 1:1 кварц 1мгц, у меня стоит как тут реализовать 30гц, правильно ли понимаю что нужно установить 00 = FOSC/8192 и прескалером выбрать частоту что бы получилось 30гц ? Так и сделал, но у меня все сегменты начинают моргать по очереди снизу дисплея вверх. Причем в LCDDATA я ничего не присваивал. Подскажите пожалуйста на что еще посмотреть
  6. Спасибо за совет, действительно думал над этим, но поторопился и залил уже свою прошивку, сейчас уже все что нужно работает, единственное контрастность как то особо не радует, на штатном варианте лучше высвечивалось. Может каким то регистрам обратить больше внимания в этом случае. LP<3-0> меняют картину, но как то не полно, конечно нашел оптимальную, но все как описал выше
  7. Вызвонил на дисплее выводы, схему рисовать нет смысла я думаю, напишу какие выводы дисплея приходят на какие ножки PIC'a 1 -SEG2 2 -SEG3 3 -SEG4 4 -SEG5 5 -SEG6 6 -SEG7 7 -SEG8 8 -SEG9 9 -SEG10 10 -SEG15 11 -SEG16 12 -SEG17 13 -SEG18 14 -SEG19 15 -SEG20 16 -SEG21 17 -SEG22 18 -COM0 19 -COM1 20 -COM2 21 -COM3 Подскажите пожайлуста как запустить дисплей Может кто поделится примером использования на си Что то выводится, и я уже разобрался как назначать сегменты, но вот одно плохо, сегменты зажигаются нужные, но если наклонить дисплей то еле видно другие или если в другую сторону наклонить то тускло видно те сегменты что зажигаю командой.
  8. Тогда сегодня как раз эти и займусь, то есть вызвоню выводы идущие от мк к дисплею.
  9. Добрый день. Ковыряю пейджер от сигналки, и поскольку там пик внутри захотелось попробовать выводить на дисплей что то свое. Сразу появились вопросы 21 вывод на LCD (гибкий шлейф прям на стекло с PIC) Вопросы: 1) Так понял что разработчики использовали аппаратный драйвер LCD в пике для того что бы зажигать значения или не факт? 2) что мне нужно узнать из схемы устройства что бы инициализировать дисплей, не понятно просто ни в каком режиме работает дисплей, вызвонить ножки ПИКа идущие на дисплей, но что мне это даст? 3) посоветуйте план действий, что сделать и как начать использовать дисплей, имея только устройство в руках. Может быть есть пример исходников на Си, компилятор HI-TECH. Я пробовал пытаться запустить дисплей с разными режимами, но это все не помогло, в лучшем случае нелепо загорались несколько элементов, и то очень тускло, либо плавно гасли. Спасибо
  10. Ну то что имею по этому и взялся за этот проц CONFIG регистр я посмотрел там все в принципе понятно, но как сконфигурировать порт А как обычный цифровой порт с входами выходами не догоняю если не сложно подскажите куда смотреть Забыл еще спросить как в двух словах можно по наименованию пика определить примерно его функционал ну то что 12 16 18 это как тини мега хмега у авр условно я понял но что значит C или F и цифры после них не особо ясно у Авр понятней хотя может просто с неривычки и незнания так
  11. Извините, просто поставил MPLAB и попытался задействовать прерывание, ну что бы понять как это выглядит. Использую пример с компилятора. "вывел на B порт кнопку все заработало" :) ну входом с кнопки сделал не RA0 а RB3 До дребезга, как и до чего то путного еще очень далеко, начал только разбираться изучаю :) проц PIC16F913 сильно не пинайте пытаюсь программировать как хобби чтоли
  12. ну я пытаюсь проверить переполнился ли таймер (дотикал до 255) затем делаю что то и снова сбрасываю флаг переполнения в ожидании следующего такого события. ну тоесть прерывание для того что бы вызывать определенные функции через заданные промежутки времени. и фоном пока таймер не переполнился что то могло еще выполняться А по порту А действительно Вы правы дело в аналоговых функциях порта
  13. Пипец 40 просмотров и 0 ответов :) Я понял в чем ошибка, порта А сконфигурировать надо, вывел на B порт кнопку все заработало
  14. Подскажите пожалуйста начал разбираться с мплаб и HI-TECH такой код простой, по переполнению таймера меняет состояние одной из ножек и по нажатию кнопки (появлению там единицы) должен подать на RA3 проверяю в протеусе подцепил кнопку на RA0 подаю +5в туда но это событие не обрабатывается а если в коде меняю параметр в условии на противоположном то условие выполняется (вывод на RA3 единицу и запрет прерывания) вот сам код #include <htc.h> /* * Interrupt test for PIC * * Copyright (C)1997 HI-TECH Software. * Freely distributable. */ #define BUTTON RA0 //bit 1 of PORTC static volatile long count; static volatile bit bad_intr; void main(void) { /* setup stuff */ T0CS = 0; // Timer increments on instruction clock TRISA = 0x01; // Port A is input TRISB = 0xFE; // Port B bit 0 is output T0IE = 1; // Enable interrupt on TMR0 overflow GIE = 1; // Global interrupt enable CLRWDT(); // Idly kick the dog //RA3=1; while(1){ if (BUTTON==1){RA3=1; GIE=0;}; }; }//End of main static void interrupt isr(void) // Here be interrupt function - the name is // unimportant. { if(!T0IF) // Was this a timer overflow? bad_intr = 1; // NO! Shock horror! count++; // Add 1 to count - insert idle comment T0IF = 0; // Clear interrupt flag, ready for next PORTB ^= 1; // toggle bit 0 of Port B, to show we're alive } заранее спасибо
  15. Ага спасибо, к сожалению на этот пример нигде ссылку не видел.
  16. Доброе время суток! Вопрос очень простой, первый день сегодня разбираюсь с MPLAB и Hi-TECH на си с кодом вроде вопросов нет т.к. раньше кодил на Си для AVR в кодвижен, а тут возникли вопросы. Покажу на аналогии В кодвижене так: // External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) { // Place your code here } // Declare your global variables here void main(void) { // External Interrupt(s) initialization // INT0: On // INT0 Mode: Low level // INT1: Off GICR|=0x40; MCUCR=0x00; GIFR=0x40; // Global enable interrupts #asm("sei") while (1) { // Place your code here }; } тоесть я мог вставить код в обработчик прерываний и он выполнится когда сработает прерывание INT0 а в MPLAB читаю исходник и не пойму как например такое же прерывание организовать по изменению состоянии на ножке если не сложно поделитесь примером.
  17. Всем большое спасибо за помощь. Сам понимаю что тупо не хватает знаний языка. Сейчас стараюсь это устранить. to zltigo, я разве сказал что в программировании гуру, просто раздел называется для новичков, а то что появляется желание что либо сделать не коммерческое на МК делаю, появляются моменты где не могу разобраться спрашиваю тут. С той поры когда я задавал вопросы по приведенным ссылкам, я (на мой взгляд) подвинулся вперед. Тогда вообще мало понимал. То что интервалы большие между вопросами, так у каждого есть работа, семья, проблемы, дела. Еще раз повторю что я не сидел все это время за МК к сожалению, просто бывает время выпадает и хочется что нибудь свое попробовать сделать. Как то так.
  18. sigmaN, спасибо большое. То что написали после вас вообще не понятно мне т.к. я на Си учусь писать.
  19. да я с этим полностью согласен, вроде принцип реализации правильно изложил, а на практике написать не могу, если бы на русском ткнули в учебник где можно было понять, как извлечь бит из байта, как установить 0 или 1 в нужном месте байта был бы признателен. Инфы много, но то что читаю либо не содержит такие вещи либо уже идет слишком сложно и не могу просто понять.
  20. я проще себе это представлял, не знаю только как на языке реализовать: например проверяем значение правого бита и присваиваем его левому биту нового байта далее сдвигаем на 1 в исходном байте вправо (2ой по счету бит справа становится снова 1ым) также сдвигаем влево на 1 биты в новом байте и повторяем процедуру. так 8 раз
  21. я это вижу как цикл на 8 шагов где проверяется значение последнего бита в байте и это значение присваивается первому биту новому байту ну и затем сдвиг обоих на 1 вот только знаний не хватает как реализовать да в пересчете я наврал, ну думаю принцип Вы поняли что я пытался объяснить :)
  22. Ребят подскажите плиз как реализовать ума не приложу. принимаю данные с шины и с первого байта приходящего забиваю в буфер например буфер байт temp[4]={0x72,0x8C,0x23,0x6B}; потом в ходе выполнения программы оказывается нужно еще эти биты использовать но не слева направа формировать из бит байт а справа на лево например 0х72=01110010b у меня первый байт принятый, а нужно что бы он стал последним, тоесть взять данные и записать их например в другой массив, но использовать биты не слева направо а справа налево тоесть эти биты 0х72=01110010b которые у меня были первыми на самом деле сформировывать должны последний байт и получается 0х9С. Переписывать процедуру приема можно конечно но мне нужно и так и так. Как проще сделать подскажите пожалуста. Пишу на Си для кодвижен
  23. ребят подскажите за одно и мне. если камень уже где то использовался и фьюзы какие зашиты не известно может он вообще залочен. как мне имея программатор AVr910 от протоса его стереть и запрограммировать? и возможно ли это с таким программатором?
  24. Похоже тайна раскрыта! :) купил недавно еще 3 чипа в ткфп, сегодня решил попробовать их запрограммировать, достал и обомлел на одном из чипов 2ножки спаяны. повнимательнее посмотрел на другие они тоже со следами пайки. Вот так вот. Были подозрение и раньше т.к. один чип у меня прочитался но фьюзы были на 4мгц внутреннего выставлены.
  25. в городе ищу человека с другим прогером (пока посоветовали 5 проводков ими я пробовал, или купить такой же мастеркитовский), железо я уже пересобирал был бы очень рад если бы нашел ошибку в нем но не тут то было. по поводу перепрошивки сложность состоит в том что мастеркит вроде намудрили немного с выводами, не хочется попасть в ситуацию когда сотру прошивку которая 16ые меги шьет а другая прошивка не подойдет. Да и самая забавная ситуация то в прогере тоже стоит мега8Л :). Менял магазины где поставляют чипы, покупал разные (мега8, мега8л) из 10 купленных чипов прошилось только 2шт.