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

Игорек

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

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

  • Посещение

Репутация

0 Обычный

Информация о Игорек

  • Звание
    Участник
    Участник

Посетители профиля

864 просмотра профиля
  1. Забыл упомянуть, что достаточно одноосевого датчика. Спасибо всем ответившим, теперь понятно в каком направлении копать.
  2. Здравствуйте, посоветуйте пожалуйста датчик угла поворота относительно горизонта. Выход аналоговый, пропорциональный углу наклона датчика относительно горизонта. Диапазон измерения - плюс (минус) 15 градусов. Точность 0.1 градуса. Устойчивость к вибрации, грязи, воздействию воды (дождь). Предлагайте любые варианты, кроме потенциометрических.
  3. Здравствуйте! ОC Windows 7 Максимальная-32, программатор STK-200 (5 проводков с буфером на 74HC244) Установил 1. Eclipse IDE for C/C++ Developers Version: Juno Service Release 1 Build id: 20120920-0800 2. Плагин avreclipse.2.4.0.final.p2repository 3. AVR toolchain 3.4.1.1195 4. В Eclipse->Windows->Preferences выставил пути к GCC, AVRDUDE и т.п. Создал С-проект. В Project explorer по щелчку правой кнопки выбираю Properties, дальше выбираю страницу AVR->AVRDude и выскакивает ошибка "The currently displayed page contains invalid values". 1. Мне не понятно, что за неверные значения содержатся на странице AVRDude? Дальше я захожу в AVR-Target Hardware, хочу выбрать MCU type но выпадающий список пустой. Нажимаю Load from MCU - ноль реакции... 2. Почему нельзя выбрать тип контроллера?
  4. Пару раз видел на иностранных схемах некий элемент, обозначенный как две пересекающихся окружности? Что это? Предполагаю, что это один из вариантов обозначения источника постоянного тока, но не уверен.
  5. Makefile я делал сам, из первоисточника я брал только определение функции w1_find() и директивы #define. А вобще как-то влияет ли на функции delay частота, с которой работает микроконтроллер? Скажем, если я выставлю фьюзы и Makefile на 1 МГц и вызову функцию _delay_us(10), а потом выставлю фьюзы и Makefile на 8 МГц и вызову функцию _delay_us(10) , временные задержки будут абсолютно идентичны или будут все-таки различаться?
  6. Изначально в Makefile стояла частота 1Мгц, фьюзы изначально также были на 1 МГц. Где это посмотреть?
  7. Блин, прошил фьюзы на 8 МГц, поставил в Makefile F_CPU = 8000000 и все заработало. Чертовщина какая-то...На 1 Мгц никак, на 8 работает. Почему?
  8. За основу взял эту статью: http://samou4ka.net/page/interfejs-1-wire-...hik-ds18b20#cut К моему микроконтроллеру подключен 7-сегментный 3-х разрядный индикатор(d0-d7 - сегменты, b0-b2 - разряды), а также датчик температуры DS18B20 к порту c0. Хочу, чтобы если на с0 есть датчик - 7-сегментный индикатор выводил 1, нет датчика - 7 сегментный индикатор выводил 0. Ниже код в WinAVR. Почему подключенном датчике 7-сегментный индикатор выводит 0, хотя должен 1? Фьюзы стоят на 1 МГц. #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #define F_CPU = 1000000UL #define W1_PORT PORTC #define W1_DDR DDRC #define W1_PIN PINC #define W1_BIT 0 //функция определяет есть ли устройство на шине unsigned int w1_find() { unsigned char device; W1_DDR |= 1<<W1_BIT;//логический "0" _delay_us(485);//ждем минимум 480мкс W1_DDR &= ~(1<<W1_BIT);//отпускаем шину _delay_us(65);//ждем минимум 60мкс и смотрим что на шине if((W1_PIN & (1<<W1_BIT)) ==0x00) device = 1; else device = 0; _delay_us(420);//ждем оставшееся время до 480мкс return device; } // 0 1 2 3 4 5 6 7 8 9 const unsigned char codes[10]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char data[3]={0x00,0x00,0x00}; int main(void) { unsigned int x=0; while(1) { //Conver data to codes DDRD = 0xff; DDRB = 0xff; PORTB = 0xff; x = w1_find(); PORTD = codes[x]; _delay_ms(1000); } return 1; } 1. В чем может быть дело, подскажите куда копать. На скриншоте - осциллограмма на ножке c0. 2. Помогите разобраться с операторами функции w1_find(): W1_DDR |= 1<<W1_BIT - как я понял логическое ИЛИ между содержимым регистра W1_DDR и числом 00000001. Но чему равно содержимое регистра W1_DDR, оно же ранее нигде не задано?
  9. Только начал изучать AVR, решил собрать на ATmega8 схему включения-выключения светодиода одной кнопкой(Нажимаем на кнопку, она коротит одну из ножек контроллера на землю, светодиод припаянный к другой ножке тухнет, нажимаем еще раз - светодиод загорается). На ножке PB0 - светодиод, на ножке PB1 - кнопка. .include "m8def.inc" .org 0 RJMP Reset Reset: LDI R16,Low(RAMEND) OUT SPL,R16 LDI R16,High(RAMEND) OUT SPH,R16 LDI R16,1<<DDB0 OUT DDRB,R16 LDI R16,1<<PORTB1 OUT PORTB, R16 Start: IN R16,PINB SBRS R16,1 RCALL Change RJMP Start Change: LDI R17,0x3 EOR R16,R17 OUT PORTB,R16 RET 1. Подскажите, если не сложно, какие явные косяки в коде имеются (чувствую, что они там точно есть :rolleyes: ). 2. Не всегда срабатывает переключение светодиода, иногда происходит так: светодиод светится, я нажимаю кнопку где-то на секунду, светодиод в это время светится вполнакала, отпускаю кнопку и светодиод снова светится, хотя должен был погаснуть. Или светодиод не светится, я нажимаю кнопку, светодиод начинает светится вполнакала, отпускаю кнопку и светодиод снова не светится. А иногда все работает нормально (примерно 50 на 50). Из-за чего это может быть?
  10. Собирал на макетке, забыл припаять эти конденсаторы на землю. Проблема решена, спасибо!
  11. Да, с землей все отлично. Пробовал на двух разных компах - результат одинаков. Дело не в COM порте. Склоняюсь к неисправности макса. Питание контроллера и МАКСА от USB того же компа, к которому подключаюсь. Помех по питанию не видно. Выход макса без подключения к компьютеру также сопровождается импульсами.
×
×
  • Создать...