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

Спасибо. Пока что результат тот же: на выводе Р0.0 3,3В, не происходит изменения выходного сигнала с "1" на "0". Прогнал код в отладчике. Дошел до while (1). Как я понял, судя по значению бита CP0EN, компаратор не активировался.

Да, в CP0EN вообще ничего не записывается в Вашем коде, т.е. компаратор не активирован. Добавьте соотв. строчку в Comparator_Init(). Странно что конфигуратор от Silabs это сам не вставляет, а может так задумано?

 

P.S. Пардон, бит CP0EN выставляется в Comparator_Init(), все нормально, но после строчки

CPT0CN    &= ~0x30;

снова обнуляется. В чем замысел этого? Может предполагается, что разработчик включит компаратор позже в программе. В общем, после Comparator_Init() компаратор выключен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

P.S. Пардон, бит CP0EN выставляется в Comparator_Init(), все нормально.

Я уже не знаю в какую сторону "копать". Проблема в Keil или в МК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сейчас разберемся.

Прогнал в Keil, формально все работает, в смысле, регистры инициализируются как положено :)

Аппартно не могу проверить, у меня нет F120, есть F320, там вроде похоже.

Закомментируйте вызов Interrupts_Init() если еще не сделали, чтоб с прерываниями не возиться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сейчас разберемся.

Прогнал в Keil, формально все работает, в смысле, регистры инициализируются как положено :)

Аппартно не могу проверить, у меня нет F120, есть F320, там вроде похоже.

Закомментируйте вызов Interrupts_Init() если еще не сделали, чтоб с прерываниями не возиться.

Хорошо. Вечером проверю дома в железе.

Interrupts_Init() закомментировал сразу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сейчас разберемся.

Прогнал в Keil, формально все работает, в смысле, регистры инициализируются как положено :)

Аппартно не могу проверить, у меня нет F120, есть F320, там вроде похоже.

Закомментируйте вызов Interrupts_Init() если еще не сделали, чтоб с прерываниями не возиться.

 

Все также: компаратор не активируется ((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хорошо. Вечером проверю дома в железе.

Interrupts_Init() закомментировал сразу.

На своем "железе" с F320 проверил работоспособность компаратора. По регистрам там все аналогично F120 за исключением мультиплексирования по входам компаратора. Убедился что выход компаратора на пин порта срабатывает. Затем попробовал с прерыванием - тоже работает.

post-19987-1432742651_thumb.png

 

помигал светодиодом из прерывания

// обработчик прерывания от 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; // выкл СД
    }
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На своем "железе" с F320 проверил работоспособность компаратора. По регистрам там все аналогично F120 за исключением мультиплексирования по входам компаратора. Убедился что выход компаратора на пин порта срабатывает. Затем попробовал с прерыванием - тоже работает.

}[/code]

 

А на вкладке компаратора что выводит?

 

post-26030-1432745311_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А на вкладке компаратора что выводит?

Странно, что у Вас после присвоения

CPT0CN = 0x85;

регистр в нуле, если верить кейлу. У меня такого не наблюдается. Может какие-то проблемы с отладчиком? Файл заголовка вида c8051fxxx_defs.h точно от Вашего МК?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Странно, что у Вас после присвоения

CPT0CN = 0x85;

регистр в нуле, если верить кейлу. У меня такого не наблюдается. Может какие-то проблемы с отладчиком? Файл заголовка вида c8051fxxx_defs.h точно от Вашего МК?

 

Да, от моего МК. Если в коде указываю C8051F120_defs.h, то Keil выдавал ошибку. С C8051F120.h все компилируется нормально, без ошибок и warning.

Может снести Keil и заново установить. Возможно, что где-то настройки некорректные. Но в этом я не силен.

Что странно, при пошаговой отладке светодиод "Run/Stop" в программаторе горит не зеленым цветом, другим: вроде красным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, от моего МК. Если в коде указываю C8051F120_defs.h, то Keil выдавал ошибку. С C8051F120.h все компилируется нормально, без ошибок и warning.

я спросил, т.к. думал может у Вас по случайности от другого МК файл стоит...

 

Может снести Keil и заново установить. Возможно, что где-то настройки некорректные. Но в этом я не силен.

Ну зачем сносить кейл, если все работало с программой по тестированию UART? Там, если не ошибаюсь заинклюден c8051f120.h, т.е. файл заголовков, который есть где-то у Кейла в подддиректориях.

C8051F120_defs.h откуда-то у меня появился, они должны быть одинаковыми, там же просто объявления регистров и RAM. В конце концов, раз программа с UART бегала, то проблема не в этом.

 

Что странно, при пошаговой отладке светодиод "Run/Stop" в программаторе горит не зеленым цветом, другим: вроде красным.

по-моему так и должно быть в пошаговом режиме, если это оригинальный силабовский (или копия).

 

У меня старая версия Keil посему таких продвинутых окон типа детальный просмотр установок компараторов (как Вы привели) нет, в обычном watch'е регистр CPT0CN обновляется.

Может проблемы с самим отладочиком? Бывают глюки и у силабса, тут где-то была тема. Если запустить в эмуляторе программу, как себя ведет? В Keil можете выбрать в чем делать Debug: на таргете или в эмуляторе 51.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну зачем сносить кейл, если все работало с программой по тестированию UART? Там, если не ошибаюсь заинклюден c8051f120.h, т.е. файл заголовков, который есть где-то у Кейла в подддиректориях.

 

Этот файл был в папке с примерами для этого МК. С UART все было в порядке. Т.е. в железе работало. В отладчике не помню, вроде не проверял.

 

C8051F120_defs.h откуда-то у меня появился, они должны быть одинаковыми, там же просто объявления регистров и RAM. В конце концов, раз программа с UART бегала, то проблема не в этом.

 

C8051F120_defs.h вроде для SiliconLabs IDE.

 

по-моему так и должно быть в пошаговом режиме, если это оригинальный силабовский (или копия).

 

У меня китайская копия с 8051F320 внутри.

Что интересно. При работе с SiliconLabs IDE в программатор заливается одна прошивка. При работе с Keil - другая.

 

Тупик ...

Изменено пользователем Radik2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот файл был в папке с примерами для этого МК. С UART все было в порядке. Т.е. в железе работало. В отладчике не помню, вроде не проверял.

прогоните просто в симуляторе 51, если при этом регистр себя нормально ведет (выведите его в отдельное окно Watch: меню View->Watch windows->Watch), то с программой все нормально и она должна работать в МК. Если без отладчика на МК не наблюдается адекватной работы, то тогда уж можно грешить на компаратор, хотя я сильно сомневаюсь что он каза болду.

post-19987-1432799402_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

прогоните просто в симуляторе 51, если при этом регистр себя нормально ведет (выведите его в отдельное окно Watch: меню View->Watch windows->Watch), то с программой все нормально и она должна работать в МК. Если без отладчика на МК не наблюдается адекватной работы, то тогда уж можно грешить на компаратор, хотя я сильно сомневаюсь что он каза болду.

Хорошо. Вечером попробую. Спасибо за помощь!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот еще копия экрана после инициализации известного регистра:

post-19987-1432800145_thumb.png

 

все как положено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот еще копия экрана после инициализации известного регистра:

 

все как положено.

 

У Вас uVision 4. И "проглатывает" файлы для SiliconLabs IDE. У меня uVision 5 выдает кучу ошибок с этими include.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...