Перейти к содержанию
    

smac

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о smac

  • Звание
    Частый гость
    Частый гость
  • День рождения 26.05.1982

Контакты

  • Сайт
    Array

Информация

  • Город
    Array
  1. 1. Эл. сеть внутри помещения в котором вы работаете 3-х проводная (с протянутым проводо заземления)? 2. Как уже спрашивали, осциллограф с заземляющим контактом? 3. Сколько приборов с заземляющими контактами включено в тот же сегмент эл. сети что и осциллограф?
  2. Обратитте внимание на раздел SS Pin Functionality дтаташита. SS_A должен быть либо сконфигурирован как выход, либо подтянут к + питания. Если на выводе SS, сконфигурированном как вход появляется 0, то модуль SPI воспринимает это как попытку передачи данных другим мастером. Попробуйте в программе принудительно назначить SS_A выходом, несмотря на то, что он используется как генератор PWM. Однако будет ли результат я вам сказать не могу.
  3. Целочисленное деление беззнаковых величин - не такая уж сложная задача, посмотрите на атмеловском сайте, у них даже аппноты были какие-то с исходниками на асме. Кстати в этом случае я бы порекомендовал ассемблерный модуль деления специально для ваших оборотов сделать.
  4. В данном случае устроит ли инерционность, да и точность на низких оборотах будет низкой (точнее при фиксированной длительности окна равной 1 секунде погрешность будет 30 об/мин). При низкочастотном сигнале имеет смысл все-таки измерять период. Но за это придется платить делением. В любом случае выбирать Вам, sigmaN.
  5. Да фиг с ними с учебниками, Вы тему-то свою с начала до конца внимательно перечитайте. Как перечитаете выберите один из предложенных вариантов, перечитайте его еще раз, попытайтесь понять, затем задайте вопросы, если что-то останется непонятным.
  6. Мы не местные, мы приезжие :). Чувствую схлопочу предупреждение, но не могу сдержаться.
  7. Дык с таким подходом помощь возможна только за деньги (50 баксов).
  8. При компиляции проекта эклипс наверняка вызывает make all <filename> , а цели all в <filename> (по-умолчанию Makefile) нету. Разберитесь с проектом эклипса - мейкфайл у Вас подключен извне или эклипсом генерируется? PS Наверняка с терминами у меня как всегда беда, поправьте кому не лень пожалуйста.
  9. Я так понимаю, в Вашем случае исходник в newlib нужно искать, правда геморное это дело с теми исходниками разбираться (имхо конечно, наверняка есть и более геморные исходники). Если будете разбираться, пользуйтесь возможностью препроцессирования исходников (имеется ввиду GCC-шный ключ -E ).
  10. Так Вы документацию на WinAVR (точнее на avr-libc) почитайте, там написано многое, вот ссылка на всякий случай bootloaer
  11. Помогите с АЦП

    Весь код не смотрел, но по-моему Вы ADCH не вычитываете, что нужно делать обязательно, иначе регистры ADCH:ADCL не обновятся. Подробности в даташите.
  12. Вопрос не совсем в тему, но в принципе про PCINT. Чем тактируется упомянутая схема захвата при уходе контроллера в Power Down, что-то в даташите не могу найти нужной информации, может быть кто знает?
  13. Модель АЦП видимо секретная, но по коду видно что с последовательным интерфейсом (похоже I2C), поэтому вариант следующий - попробовать использовать периферийный модуль TWI микроконтроллера, который сделает всю грязную работу за Вас. Если это не подходит - написать функцию получения отчета АЦП на ассемблере и не париться.
  14. Что-то я тоже ничего криминального не вижу. Попробуйте все-же оформить обработчик АЦП как ISR(ADC_vect){...} и еще попробуйте сделать следующее в майне сначала настройте уарт, затем настройте АЦП, затем запустите АЦП и только потом глобально разрешите прерывания, т. е. sei() должна стоять непосредственно перед входом в бесконечный цикл. Опишите поподробней в чем выражаются "падения".
  15. Компилировать Ваш код и смотреть асм. листинг желания нет, уж больно длинный. рекомендации: а) написать действительно минимальный код - если проблема в АЦП, оставить только код относящийся к УАРТУ И АЦП б) оформить обработчик прерывания от АЦП аналогично остальным, при этом не извращаться при чтении АЦП, а сделать так ISR(ADC_vect){ unsigned char sample = ADCW; /*Я поначалу не стал заводить лишнюю переменную и написал просто ADCW; но скомпилив увидел, что там в обработчике прерывания какой-то rcall нарисовался, ну его нафиг*/ } в) на мой взгляд выражения типа outb(TCCR1B, (inb(TCCR1B) & ~0x07) | 0x02) не добавляют читаемости кода, наверное лучше так TCCR1B = (TCCR1B&0xf8)|(1<<CS11) Да, кстати, может это и новый стиль, но я чего-то не понимаю, зачем эти sbi() и outb() мне они глаз режут, по-моему обычным макаром TCNT0 = 0; код лучше выглядит. ЗЫ ~30000 это случайно не 32767?
×
×
  • Создать...