• Объявления

    • admin

      Просьба всем принять участие!   24.11.2017

      На форуме разыгрывается спектроанализатор Arinst SSA-TG LC (цена 18500 руб). Просьба всем перейти по ссылке ниже и принять участие!

Jozef

Members
  • Публикации

    33
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

О Jozef

  • Звание
    Новенький
  1. Помогите новичку написать код на си для Avr

    а вот с точками я сам понять не могу толком... у меня индикаторы на порте D висят, точка подключена на PORTD7, при индикации в нужном разряде засылаю в бит значение. здесь у меня вариант для фиксированного положения точки во 2 разряде void indicate_one(unsigned char digit, unsigned char symbol) { PORTD=~symbol_2_bin(symbol); switch(digit) { case 0:PORTB=0x01;break; case 1:PORTB=0x02;break; case 2:PORTB=0x04;break; case 3:PORTB=0x08;break; case 4:PORTB=0x10;break; case 5:PORTB=0x20;break; } if(digit==1)PORTD=(0<<(7)); n=0; while(n<50)n++;// задержка символа на индикаторе } конкретно, не могу сообразить, что за переключатели на порте C что-то сегодня моск не туда работает
  2. Помогите новичку написать код на си для Avr

    а, забыл написать... разбивать на цифры надо где-нибудь перед индикацией всего сразу, не в функции. например: ... while(1) { ... number=123456; // здесь разбивка на цифры for(i=0;i<=5;i++) { ind[i]=number%10; number/=10; } // здесь индикация indicate_all(); }
  3. Кто На Чем Чаще Пишет Для Avr И Не Только?

    а зачем делфи? есть же си? немногим может посложнее, в силу хитростей с синтаксисом
  4. Помогите новичку написать код на си для Avr

    #include <mega8.h> unsigned char ind[6]={0,0,0,0,0,0};// отображаемые знаки // кодировка символов // параметр - символ unsigned char symbol_2_bin(unsigned char symbol) { unsigned char result; switch (symbol) { case 0: (result=0b00111111); break; case 1: (result=0b00000110); break; case 2: (result=0b01011011); break; case 3: (result=0b01001111); break; case 4: (result=0b01100110); break; case 5: (result=0b01101101); break; case 6: (result=0b01111101); break; case 7: (result=0b00000111); break; case 8: (result=0b01111111); break; case 9: (result=0b01101111); break; } return result; } // вывод одного символа в данном разряде // параметры - номер разряда, выводимый знак void indicate_one{unsigned char digit, unsigned char symbol) { char i; switch(digit) { case 0:PORTB=0x01;break; case 1:PORTB=0x02;break; case 2:PORTB=0x04;break; case 3:PORTB=0x08;break; case 4:PORTB=0x10;break; case 5:PORTB=0x20;break; } PORTD=~symbol_2_bin(symbol); i=0; while(i<50)i++;// задержка символа на индикаторе } // вывод на индикатор всего содержимого массива ind[] void indicate_all(void) { char i; for(i=0;i<=5;i++) { indicate_one(i,ind[i]); PORTB=0x00;// гасим индикатор PORTD=0xff; } } void main(void) { DDRD=0xff; DDRB=0xff; while(1) { ... } } у меня лично эти три функции в отдельном файле .h и везде, где надо, идут уже шаблонно, еле вспомнил, что есть что здесь а разбить число на цифры можно следующим образом (применительно к 6-разрядному индикатору, число тоже должно быть шестиразрядным.) unsigned number; unsigned char ind[6]={0,0,0,0,0,0}; unsigned char i; ... i=0; for(i=0;i<=5;i++) { ind[i]=number%10; number/=10; } если исходное число вещественное, то стоит домножить его на 10 в какой-нить степени, чтоб получить шестизначную целую часть.
  5. Кто На Чем Чаще Пишет Для Avr И Не Только?

    Вот честно скажу, сегодня впервые сделал асм-вставку в код: понадобилось точно выставить задержку по числу тактов.
  6. Помогите новичку написать код на си для Avr

    1. кодируем символы, которые должны выводиться. у меня на порте сегменты a..h соответствуют выводам порта 0..7. так удобней программировать, но не очень иногда разводку платы делать. не страшно 2. индицируем символ на данном разряде индикатора, для этого подключаем к питанию нужный разряд с помощью ключа, а на сегменты подаем код символа. Задерживаем на небольшое время, потом гасим этот разряд индикатора. Перебираем все разряды, попутно выводя на них соответствующие символы. То, что должно быть на индикаторе, удобно занести в массив, где каждый элемент соответствует одному разряду. Главное будет, правильно выполнить разбиение числа на цифры (в нужном порядке), но это легко.
  7. Кто На Чем Чаще Пишет Для Avr И Не Только?

    Датчики применяются: термопары, проволочные термометры сопротивления. А точность измерения 0,1 градус обеспечивается точностью измерения напряжения/сопротивления датчика. Недавно появились несколько приборов с точностью 0.01 градуса, но в серию их вроде не пустили, разработали штучно для опытов. Похоже, точность избыточная.
  8. Кто На Чем Чаще Пишет Для Avr И Не Только?

    допустим, задача: Прибор. Измеряет температуру по N каналам, точность 0.1 градус, тип датчика - любой из существующих, контроль за обрывом датчика. Регулирует ее по тем же каналам, предел регулирования вводится на клавиатуре прибора. Заносит инфу в архив объемом порядка 1 Мб, попутно выводя ее на ЖК-индикатор. Архив можно считать компом или просмотреть на приборе. Приборы завязаны в сеть по RS-485 и каждый имеет в сети свой адрес от 0 до FF. плюс всякие настройки типа часов и т.п. На ассме стабильно пишется только самая малая часть прошивки прибора, сколько замечал.
  9. Кто На Чем Чаще Пишет Для Avr И Не Только?

    Виндовз на МК... хм... МК с объемом Flash 2 Гб, EEPROM 256 Мб и быстродействием 1,5 ГГц? оригинальная была б штука. Особенно если б из его возможностей использовались бы только MSOffice, как обычно бывает
  10. Проблемы с Atmega8

    Насчет брака не знаю. Но бывают странности, к примеру, в меге нарушена работа прерываний. То есть они работают, но не могут обрабатывать глобальные переменные. Еще был случай, когда ATmega16 не могла прошиться. Где-то, по видимому, во FLASH-памяти проблемы. Проверка на трех разных схемах программаторов дала один и тот же результат - чтение/стирание в норме, запись - только первые 18 байт. Насчет статики тоже не очень знаю. Но судя по даташитам, на входах стоят полевики. Диоды на входе, конечно тоже есть, но обычно не рискую. По крайней мере, на моей памяти (точнее, на моей совести) два выбитых статикой AT89C51RC. Так что применяю браслет и заземленный паяльник 24 В.
  11. Кто На Чем Чаще Пишет Для Avr И Не Только?

    Зато дал возможность еще более массового распространения профессии, как и все прочие языки высокого уровня. Как было сказано, двигатель прогресса - это лень. Хотя и приводит это к росту неприспособленности человека. Между прочим, ЯПВУ пошли задолго до С, так что не на Страуструпа нам бочку катить. Первые языки, конечно, были узко специализированы, взять тот же FORTRAN. Билл Гейтс послужил популяризации программирования, ибо создал Basic, являющийся до сих пор (местами) стартовой площадкой для программистов. Отпала просто серьезная необходимость лезть непосредственно в работу процессора и его окружающих. Прогресс...
  12. Кто На Чем Чаще Пишет Для Avr И Не Только?

    Поддерживаю demaven. ну не знаю я Асм, и не обучали меня, действительно, неструктурному программированию. но знаю С. и пишу на нем. И работает, сравнительно неплохо. К тому же, думается мне, что на Асме запрограммировать, к примеру, вычисление натурального логарифма определенно посложнее будет. С хорош для вычислительной работы, но она и в микроконтроллерах бывает нужна. А если вам нужно в определенном порядке цепи включать, то почему бы не взять реле или хотя бы простые логические ИМС. работать с ними порой оказывается дешевле, хотя и нет в них той гибкости, какую позволяют контроллеры. И к тому же, после прошивки контроллер превращается в такой же прямолинейный автомат, что и логическая схемка.
  13. Кто На Чем Чаще Пишет Для Avr И Не Только?

    Вот я как раз и пишу, что я учу в универе (ПГУ) именно Фортран. А на упомянутом предприятии подрабатываю (все равно стипуху пропарил ), причем далеко не программистом.