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

Athlon128

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

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Участник
    Участник
  • День рождения 19.03.1987

Контакты

  • Сайт
    Array
  • ICQ
    Array
  1. Закомментировал в .mac-файле процедуру InitPLL() и её вызов, теперь проект эмулируется. :yeah: Я так понимаю отсутствие PLL не повлияет на работоспособность проекта?
  2. Пробовал убрать вообще все брейкпоинты, ставил в самое начало main. IAR зависает, не доходя до первого брейка. В свойствах проета в качестве дебаггера выбран simulator. Щас проверил как симулируются проекты под другие процы. Тот же basic-internalflash-project виснет при симуляции для sam7se-ek, sam7s-ek, sam7xc-ek, sam7x-ek (брал проекты из соответствующих папок). С остальными процессорами проблем при симуляции нет. IAR 5.41. Вечером попробую на другом компьютере, может быть дело в нём
  3. Пытаюсь эмулировать стандартный пример из ...\IAR Systems\Embedded Workbench 5.4\arm\examples\Atmel\at91sam7x-ek\basic-internalflash-project Компилируется без ошибок. Наставил брейкпоинтов в main.c, при запуске эмуляции зависание IAR Что я не так делаю?
  4. Ладно, всем спасибо, буду читать про modbus
  5. Пытался днём на бумаге прикинуть программу. В основном коде программы: while (rx_counter0==0); // ждём когда будет принят байт в буфер delay_ms(25); TCCR1B=0x05; // запускаем таймер (период 50мс) В прерывании по таймеру: interrupt [TIM1_COMPA] void timer1_compa_isr(void) { if (rx_counter0>0) // если буфер не пуст { while (getchar()!=':'); // считываем по байту пока не попадётся префикс ':' command=getchar(); // номер команды number=getchar(); // номер слейва if ((command==1)&&(number==number_temp)) // если была послана команда №1 для текущего слейва { PORTE.7=1; // переключаем max487 на выход delay_ms(1); printf(":%d online;",number_temp); // ответ PORTE.7=0; // переключаем max487 на вход } } TCNT1H=0x00; // обнуляем таймер TCNT1L=0x00; // } Мастер шлёт команды всем по очереди слейвам с периодом 100мс тоже по таймеру. Идея такая: в момент включения ждём хотябы 1 байт и через 25мс (чтобы обеспечить смещение во время которого смогут быть приняты следующие команды мастера) запускаем таймер (50мс). Далее каждые 50мс: ищем в буфере префикс ":", читаем № команды и id слейва в команде и отвечаем если команда адресована данному слейву. Вот такая задумка была. На деле отвечает только слейв, которому была адресована 1я команда Завтра попробую другой подход :05: Пошёл читать доки
  6. Вы правы. Поставил задержку перед ответом, все слейвы отвечают нормально Дальше экспериментирую.. Буду благодарен за фрагмент исходника для слейвов с RS485 или хотябы словесное объяснение алгоритма. Вечером отпишу что получилось у меня
  7. код вкл-выключения 485 драйвера на передачу PORTE.7=1; ....//передача PORTE.7=0; Теперь у меня вопрос: как правильнее синхронизировать передачу команды и ссчитывание из буфера слейвом. Если ставлю интервал отправки мастером меньше чем интервал ссчитывания из буфера слейвом, то всё работает до переполнения буфера слейва. Сейчас попробую синхронизировать их таймером. А как выходили из положения вы? Сорри за сумбур :)
  8. затруднение с RS485

    По RS485 объединены мастер и несколько слейвов (все на mega128) мастер с интервалом в 100мс шлёт команду вида: префикс ":", байт - номер команды, байт - id слейва, 2 байта - аргументы для команды, постфикс ";". 1 из слейвов должен ответить что он подключен. Вот фрагмент кода слейва (codevisionAVR): while (1) { delay_ms(50); command=0; number=0; while (getchar() != ':'); command=getchar(); number=getchar(); if ((command==1)&&(number==id)) { PORTE.7=1; printf(":%d online;",id); PORTE.7=0; } // delay_ms(50); }; } на деле отвечает только 1 раз первый запрошенный слейв. что я делаю неправильно подскажите плз поигрался интервалом отправки команд с мастера, начали отвечать несколько слейвов :) proteus_prj.rar
  9. а если уменьшу номиналы резисторов на пару порядков?
  10. IgorPlugUSB

    Я использую дешёвые usb-датакабели от телефонов на пролифике, для отладки очень удобно имхо PS: тут нашёл в серийном устройстве такой же переходник на пролифике: http://www.3dnews.ru/auto/gps-gsm/index2.htm
  11. Протеусом можно открыть Я рисовал в Proteus 6.9
  12. да, но нужно управлять "+" вентилятора, поэтому я и брал p-канальный полевик
  13. Здравствуйте Делаю ШИМ регулятор частоты вращения вентилятора печки (в машину). Использую контроллер ATtiny2313, частота работы ШИМ ~32кГц. Взял p-канальный полевик IRF4905 (Rds=0,02 Ом), им управляю с помощью BC548. Выход полевика подключил напрямую к двигателю вентилятора (проект вкладываю). Так вот, всё работает правильно, но полевик дико греется, за пару минут работы готов плавить пластик (на полевике небольшой алюминиевый радиатор примерно как пластина 30х20мм). Замерил ток через двигатель вентилятора напрямую (без моей платы) - 4,2 А 4,2А*4,2А*0,02Ом=0,3528 Вт должно выделяться на полевике как я понимаю. В чём моя ошибка, подскажите плиз :) PS: сорри если создал тему не в том разделе, всё же думаю в этом разделе правильнее PWM.rar
×
×
  • Создать...