Jump to content

forestdozor

Members
  • Content Count

    62
  • Joined

  • Last visited

Community Reputation

10 Обычный

About forestdozor

  • Rank
    Осваивающийся
  • Birthday 09/11/1998

Информация

  • Пол
    Мужчина

Электроника

  • Стаж в электронике
    3-5 лет

Recent Profile Visitors

1173 profile views
  1. Да, два прерывания. Подразумевается, что в обработчике переполнений будет счетчик кол-ва переполнений. В коде я планировал считывать значение таймера в момент переднего фронта, кол-во переполнений между передним фронтом и спадом, и значение таймера в момент спада. Вычесть разницу между фронтами и умножить количество переполнений между передним и задним фронтом на 2^16. Отключил в TIMSK1 прерывание по переполнению. Не помогло
  2. Здравствуйте! Мне нужно измерить длительность импульса. Для этого сначала применял внешнее прерывание, а теперь перешел на режим захвата таймера в Atmega 328. Однако сейчас происходит странное: Через определенное таймер просто останавливается. Гугл результатов не дает, ни у кого захват таймера 1 не останавливается. Подскажите пожалуйста, что делать? Среда разработки CodeVisionAVR v3.12. Сейчас попробовал версию 3.3, толку нет. Не работает. Код максимально упростил, но по прежнему толку ноль. Переполнение таймера 0 так же работает отлично, до тех пор, пока что-то не произойдет с прерыванием по захвату. Как только что-то произошло - мк останавливается... Может немножко подождать, и увеличить значение счетчика current_timp еще на пару значений... Совсем не знаю что делать. interrupt [TIM1_OVF] void timer1_ovf_isr(void) { TCNT1H = 0x00; TCNT1L = 0x00; } // Timer1 input capture interrupt service routine interrupt [TIM1_CAPT] void timer1_capt_isr(void) { TCNT1H = 0x00; TCNT1L = 0x00; // Это уже уровень танцев с бубном "авось поможет" - не помогает. current_timp++; // Все упрощено до максимума. Мне бы он хоть количество периодов для начала... // } } // Прерывание по переполнению первого таймера interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Обнуление счетного регистра. TCNT0=0x00; counter ++; if (counter > 10) { lcd_clear(); sprintf(buffer,"%d us", current_timp); lcd_gotoxy(0,0); lcd_puts(buffer); counter = 0; } } // Главный цикл программы void main(void) { #pragma optsize- CLKPR=(1<<CLKPCE); CLKPR=(0<<CLKPCE) | (0<<CLKPS3) | (0<<CLKPS2) | (0<<CLKPS1) | (0<<CLKPS0); #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Port B initialization // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Port C initialization // Function: Bit6=In Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out Bit0=Out DDRC=(0<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0); // State: Bit6=T Bit5=1 Bit4=1 Bit3=1 Bit2=1 Bit1=1 Bit0=1 PORTC=(0<<PORTC6) | (1<<PORTC5) | (1<<PORTC4) | (1<<PORTC3) | (1<<PORTC2) | (1<<PORTC1) | (1<<PORTC0); // Port D initialization // Function: Bit7=Out Bit6=Out Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRD=(1<<DDD7) | (1<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0); // State: Bit7=1 Bit6=1 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTD=(1<<PORTD7) | (1<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); // Делители таймера 0 рассчитаны таким образом , что его тактовая частота = 15,625 КГц. Расчет был на применение в схеме семисегментников, но с LCD индикатором будет информативнее. TCCR0A=(0<<COM0A1) | (0<<COM0A0) | (0<<COM0B1) | (0<<COM0B0) | (0<<WGM01) | (0<<WGM00); TCCR0B=(0<<WGM02) | (1<<CS02) | (0<<CS01) | (1<<CS00); TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // Настройка таймера 1 TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10); TCCR1B=(1<<ICNC1) | (1<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10); TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Разрешение прерывания по переполнению таймера 0 TIMSK0=(0<<OCIE0B) | (0<<OCIE0A) | (1<<TOIE0); // Timer/Counter 1 Interrupt(s) initialization TIMSK1=(1<<ICIE1) | (0<<OCIE1B) | (0<<OCIE1A) | (1<<TOIE1);
  3. Я уже все звонил, оно с самого начала как-то отказалось работать. Сначала грешил на программатор, потом на прошивку, но когда даже тестовая не заработала пришел сюда... В нагрузке был дисплей Nokia 5510 из этого проекта: https://ut5qbc.blogspot.com/2016/10/si5351.html
  4. Судя по дебаггеру все пины обоих портов стоят в лог. единице
  5. Запихнул программу практически без изменений на платке Discovery с stm32f3, там все хорошо, напряжение есть на выводах портов А и В, а вот с этой МК по прежнему все глухо. Хотя и добавил уже задержку, и подкорректиовал код. Видимо кирдык stmке, жаль...
  6. Здравствуйте! Подозреваю что сгорел порт B в STM32F100C8, написал вот такую тестовую программу: #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "stm32f10x_gpio.h" void init (void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitTypeDef(gpio); gpio.GPIO_Mode = GPIO_Mode_Out_PP; gpio.GPIO_Pin = GPIO_Pin_All; GPIO_Init(GPIOB, &gpio); gpio.GPIO_Mode = GPIO_Mode_Out_PP; gpio.GPIO_Pin = GPIO_Pin_All; GPIO_Init(GPIOA, &gpio); } int main(void) { init(); while(1) { GPIO_SetBits(GPIOA, GPIO_Pin_All); GPIO_SetBits(GPIOB, GPIO_Pin_All); } } По идее на всех выводах портов A и B должна быть лог.1, но на порте В везде 0. Выходит он все таки сгорел? После стирания прошивки на выводах порта А так и остается 1. Не понимаю что происходит.
  7. Действительно, в конце даташита на дискавери есть таблица с функциями пинов. Спасибо!
  8. Здравствуйте! Подскажите пожалуйста, где можно найти распиновку на микроконтроллеры с его альтернативными функциями? У меня STM32f3 Discovery. Сейчас по даташиту на саму дискавери и stm32f3 играюсь тем, что на плате, но пора уже курить stmку дальше, а распиновку не могу найти
  9. Спасибо! Все получилось! Дело оказалось вообще не в блоке автоматики. Проверил транзисторы субмодуля, все хорошо. Потом решил перед пайкой нового компаратора проверить и протереть спиртом датчики. Подключил блок автоматики и все заработало! Хотя впечатления о плате, повторюсь, не самые лучшие. Материал платы - гетинакс. Гетинакс, судя по ощущениям, выполнен из туалетной бумаги. Да и стоимость блока очень кусается. В интернете стоит от 1000 до 3500. Кажется, радиолюбителю, в случае чего, дешевле самому собрать полностью плату.
  10. Здравствуйте! Сегодня смазывали и чинили двигатель на вытяжку для котла. Для того чтобы достать двигатель, нужно было спускать с системы воду чтобы снять трубы. Иначе двигатель не достать. Двигатель поставили на место, запустили колет в холостом ходе - все работает. Поставили трубы на место, начали заполнять систему водой, и оказалось, что человек не до конца дотянул гайку трубы, в итоге вся электроника утонула. Человек начал сушить все феном, и, вроде, все выключил, но он забыл что вода могла затечь и в корпус блока автоматики. Пока я доехал домой, котел уже успели пару раз попробовать включить и, естественно, что-то в блоке автоматики сломалось. При включении постоянно горит лампочка "Alarm", на сброс не реагирует. Отследил печатную плату, я так понял, что должно переключаться реле. А оно не переключается. Блок автоматики S4565A 2050 1 В интернете нашел схемы аналогов серии, но в моем схемотехника и элементная база немного другая. Я уже проверил все емкости - целые. Проверил диоды (Не выпаивая) - работают. Резисторы, кажется, без видимых повреждений. Завтра собираюсь купить LM339M и заменить. Там счетверенный компаратор, авось оживет. Важна ли буква серии? Потому что видел и LM339N и B. И куда еще посоветуете копать? Вот фотки блока:
  11. Решил рискнуть и купить. Не кинули. Звонили по каждому поводу пока станция не дошла) Цена 1948 вышла и 2 грн комиссии Привату. За доставку Новая Почта взяла 40. Станция хорошая, проверял, все работает!) Хорошо, что заказал у этих товарищей. На такую же станцию у Имрада за 3600 копил бы еще год...
  12. Здравствуйте! Хочу купить себе паяльную станцию Lukey 852D+. Живу в Украине, на эту станцию достаточно большая вилка цен - от 1900 до 3600 грн. Нашел паяльную станцию за 1950 грн в интернет-магазине, но как-то он меня смущает. Заказывал ли кто-то в магазине http://complektuha.com.ua ? Не кидалово ли это?
  13. Действительно, проблема оказалась именно в программаторе. Раньше у меня был программатор Громова. Откопал, припаял, запрограммировал, вставил - работает. Чудеса да и только. Как простецкий программатор из мусора оказался лучше, чем китайский универсальный программатор? Я же Громова чуть не разобрал однажды, когда мне резисторы нужны были... Ладно. Частота, скорее всего, есть. Написано же на экранчике! Осталось фильтр получше сделать, потому как на 7 МГц амплитуда 0.4 В, а на выходе фильтра где-то там на уровне 0.05 В, но это уже не так сложно) Всем большое спасибо за помощь!
  14. Дело в том, что я уже брал абсолютно новую, девственно чистую микросхему и заведомо рабочую программу, которую я считывал с микросхемы преподавателя вместе с фьюзами и... Ничего не работало. Преподаватель тоже брал новую, чистую и исправную микросхему. Тоже программировал и тоже 0 реакции. Программировали разными компьютерами, и разными версиями программы. Остается только еще одно звено - программатор. Но, может, кто нибудь уже сталкивался с этим и знает что делать.
  15. Микросхема преподавателя на моей плате работает. Пытаемся запрограммировать аналогично мою (Программатор tl866). В варианте прошивки из журнала микросхема работает, но рисует кракозябры на первых цифрах и вообще не те частоты. Допустим, на одном из диапазонов микросхема показывала 3.2 МГц, а частотомером мы видели аж 21 МГц. Приборы для настройки в техникуме, конечно, есть. Осциллограф, частотомер, бп... А больше же ничего и не нужно пока что. Брал прошивку из форума CQham, там в одной из тем очень подробно рассмотрен вопрос этого синтезатора. Ну и есть вот такая таблица прошивки файлов EEPROM где, я так понял, задаются частоты генератора. Однако это не соответствует тому, что у меня Может ли влиять программатор на все это? Дело в том, что свою микросхему преподаватель программировал другим программатором. Кажется, AVR 910.
×
×
  • Create New...