alexunder 4 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба Спасибо. Пока что результат тот же: на выводе Р0.0 3,3В, не происходит изменения выходного сигнала с "1" на "0". Прогнал код в отладчике. Дошел до while (1). Как я понял, судя по значению бита CP0EN, компаратор не активировался. Да, в CP0EN вообще ничего не записывается в Вашем коде, т.е. компаратор не активирован. Добавьте соотв. строчку в Comparator_Init(). Странно что конфигуратор от Silabs это сам не вставляет, а может так задумано? P.S. Пардон, бит CP0EN выставляется в Comparator_Init(), все нормально, но после строчки CPT0CN &= ~0x30; снова обнуляется. В чем замысел этого? Может предполагается, что разработчик включит компаратор позже в программе. В общем, после Comparator_Init() компаратор выключен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ferro2 0 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба P.S. Пардон, бит CP0EN выставляется в Comparator_Init(), все нормально. Я уже не знаю в какую сторону "копать". Проблема в Keil или в МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexunder 4 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба Сейчас разберемся. Прогнал в Keil, формально все работает, в смысле, регистры инициализируются как положено :) Аппартно не могу проверить, у меня нет F120, есть F320, там вроде похоже. Закомментируйте вызов Interrupts_Init() если еще не сделали, чтоб с прерываниями не возиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ferro2 0 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба Сейчас разберемся. Прогнал в Keil, формально все работает, в смысле, регистры инициализируются как положено :) Аппартно не могу проверить, у меня нет F120, есть F320, там вроде похоже. Закомментируйте вызов Interrupts_Init() если еще не сделали, чтоб с прерываниями не возиться. Хорошо. Вечером проверю дома в железе. Interrupts_Init() закомментировал сразу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ferro2 0 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба Сейчас разберемся. Прогнал в Keil, формально все работает, в смысле, регистры инициализируются как положено :) Аппартно не могу проверить, у меня нет F120, есть F320, там вроде похоже. Закомментируйте вызов Interrupts_Init() если еще не сделали, чтоб с прерываниями не возиться. Все также: компаратор не активируется (( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexunder 4 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба Хорошо. Вечером проверю дома в железе. Interrupts_Init() закомментировал сразу. На своем "железе" с F320 проверил работоспособность компаратора. По регистрам там все аналогично F120 за исключением мультиплексирования по входам компаратора. Убедился что выход компаратора на пин порта срабатывает. Затем попробовал с прерыванием - тоже работает. помигал светодиодом из прерывания // обработчик прерывания от Comp #0 void Comp0_Interrupt (void) interrupt 12 { if (CPT0CN & 0x20) { // rising-edge CPT0CN &= ~0x20; // сбрасываем CP0RIF P0 = 1; // вкл СД }; if (CPT0CN & 0x10) { // falling-edge CPT0CN &= ~0x10; // сбрасываем CP0FIF P0 = 0; // выкл СД } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ferro2 0 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба На своем "железе" с F320 проверил работоспособность компаратора. По регистрам там все аналогично F120 за исключением мультиплексирования по входам компаратора. Убедился что выход компаратора на пин порта срабатывает. Затем попробовал с прерыванием - тоже работает. }[/code] А на вкладке компаратора что выводит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexunder 4 27 мая, 2015 Опубликовано 27 мая, 2015 · Жалоба А на вкладке компаратора что выводит? Странно, что у Вас после присвоения CPT0CN = 0x85; регистр в нуле, если верить кейлу. У меня такого не наблюдается. Может какие-то проблемы с отладчиком? Файл заголовка вида c8051fxxx_defs.h точно от Вашего МК? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ferro2 0 28 мая, 2015 Опубликовано 28 мая, 2015 · Жалоба Странно, что у Вас после присвоения CPT0CN = 0x85; регистр в нуле, если верить кейлу. У меня такого не наблюдается. Может какие-то проблемы с отладчиком? Файл заголовка вида c8051fxxx_defs.h точно от Вашего МК? Да, от моего МК. Если в коде указываю C8051F120_defs.h, то Keil выдавал ошибку. С C8051F120.h все компилируется нормально, без ошибок и warning. Может снести Keil и заново установить. Возможно, что где-то настройки некорректные. Но в этом я не силен. Что странно, при пошаговой отладке светодиод "Run/Stop" в программаторе горит не зеленым цветом, другим: вроде красным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexunder 4 28 мая, 2015 Опубликовано 28 мая, 2015 · Жалоба Да, от моего МК. Если в коде указываю C8051F120_defs.h, то Keil выдавал ошибку. С C8051F120.h все компилируется нормально, без ошибок и warning. я спросил, т.к. думал может у Вас по случайности от другого МК файл стоит... Может снести Keil и заново установить. Возможно, что где-то настройки некорректные. Но в этом я не силен. Ну зачем сносить кейл, если все работало с программой по тестированию UART? Там, если не ошибаюсь заинклюден c8051f120.h, т.е. файл заголовков, который есть где-то у Кейла в подддиректориях. C8051F120_defs.h откуда-то у меня появился, они должны быть одинаковыми, там же просто объявления регистров и RAM. В конце концов, раз программа с UART бегала, то проблема не в этом. Что странно, при пошаговой отладке светодиод "Run/Stop" в программаторе горит не зеленым цветом, другим: вроде красным. по-моему так и должно быть в пошаговом режиме, если это оригинальный силабовский (или копия). У меня старая версия Keil посему таких продвинутых окон типа детальный просмотр установок компараторов (как Вы привели) нет, в обычном watch'е регистр CPT0CN обновляется. Может проблемы с самим отладочиком? Бывают глюки и у силабса, тут где-то была тема. Если запустить в эмуляторе программу, как себя ведет? В Keil можете выбрать в чем делать Debug: на таргете или в эмуляторе 51. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ferro2 0 28 мая, 2015 Опубликовано 28 мая, 2015 (изменено) · Жалоба Ну зачем сносить кейл, если все работало с программой по тестированию UART? Там, если не ошибаюсь заинклюден c8051f120.h, т.е. файл заголовков, который есть где-то у Кейла в подддиректориях. Этот файл был в папке с примерами для этого МК. С UART все было в порядке. Т.е. в железе работало. В отладчике не помню, вроде не проверял. C8051F120_defs.h откуда-то у меня появился, они должны быть одинаковыми, там же просто объявления регистров и RAM. В конце концов, раз программа с UART бегала, то проблема не в этом. C8051F120_defs.h вроде для SiliconLabs IDE. по-моему так и должно быть в пошаговом режиме, если это оригинальный силабовский (или копия). У меня китайская копия с 8051F320 внутри. Что интересно. При работе с SiliconLabs IDE в программатор заливается одна прошивка. При работе с Keil - другая. Тупик ... Изменено 28 мая, 2015 пользователем Radik2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexunder 4 28 мая, 2015 Опубликовано 28 мая, 2015 · Жалоба Этот файл был в папке с примерами для этого МК. С UART все было в порядке. Т.е. в железе работало. В отладчике не помню, вроде не проверял. прогоните просто в симуляторе 51, если при этом регистр себя нормально ведет (выведите его в отдельное окно Watch: меню View->Watch windows->Watch), то с программой все нормально и она должна работать в МК. Если без отладчика на МК не наблюдается адекватной работы, то тогда уж можно грешить на компаратор, хотя я сильно сомневаюсь что он каза болду. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ferro2 0 28 мая, 2015 Опубликовано 28 мая, 2015 · Жалоба прогоните просто в симуляторе 51, если при этом регистр себя нормально ведет (выведите его в отдельное окно Watch: меню View->Watch windows->Watch), то с программой все нормально и она должна работать в МК. Если без отладчика на МК не наблюдается адекватной работы, то тогда уж можно грешить на компаратор, хотя я сильно сомневаюсь что он каза болду. Хорошо. Вечером попробую. Спасибо за помощь! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexunder 4 28 мая, 2015 Опубликовано 28 мая, 2015 · Жалоба Вот еще копия экрана после инициализации известного регистра: все как положено. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ferro2 0 28 мая, 2015 Опубликовано 28 мая, 2015 · Жалоба Вот еще копия экрана после инициализации известного регистра: все как положено. У Вас uVision 4. И "проглатывает" файлы для SiliconLabs IDE. У меня uVision 5 выдает кучу ошибок с этими include. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться