|
Проблема с C8051F041, Не удается запустить контроллер. |
|
|
|
Jul 25 2016, 14:37
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 25-07-16
Пользователь №: 92 691

|
Всех приветствую. Собрал проектик на Keil uVision под контроллер SiLabs C8051F041. Проект компилируется, сообщений об ошибках нет, контроллер прошивается. Пробовал и отдельно залить программу на программаторе BeeProg+ и внутрисхемно через ISP - шьётся нормально, но при включении не работает. Программа простейшая - помигать светодиодом на ножке + выход Sys_Clk на ногу для проверки работы тактового генератора. Прошу помощи сведущих пользователей. В прикрепленном архиве проект.
C8051F041.rar ( 48.69 килобайт )
Кол-во скачиваний: 79
|
|
|
|
|
 |
Ответов
|
Jul 26 2016, 19:49
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 25-07-16
Пользователь №: 92 691

|
Я же написал выше: вся процедура конфигурации позаимствована с сайтов Keil и SiLabs. Вряд ли там есть ошибки. Не вижу трудностей посмотреть всё в СИ-шном файле из прикрепленного архива с пректом. Не нужно даже иметь ИДЕ на компе, просто открыть файл blinc.c в блокноте и всё читается. Других сорсных файлов в проекте просто нет. Хедер тоже всего один. Не сочтите за труд, господа, взгляните.
|
|
|
|
|
Jul 26 2016, 20:47
|

unexpected token
   
Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987

|
Цитата(MPetrovich @ Jul 26 2016, 21:49)  взгляните. взглянул. В коде вот такой кусок есть: Код //----------------------------------------------------------------------------- // SYSCLK_CMOS_Init //----------------------------------------------------------------------------- // This routine initializes the system clock to the external oscillator in // CMOS clock mode. Assumes a CMOS clock generator is connected to XTAL1. // void SYSCLK_CMOS_Init (void) { char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page SFRPAGE = CONFIG_PAGE; // Set SFR Page OSCXCN = 0x20; // start external oscillator in CMOS clock mode. SFRPAGE = LEGACY_PAGE; RSTSRC = 0x04; // enable missing clock detector SFRPAGE = CONFIG_PAGE; CLKSEL = 0x01; // select external oscillator as SYSCLK source OSCICN = 0x00; // disable internal oscillator SFRPAGE = SFRPAGE_SAVE; // Restore SFR page } который плохо сочетается со сказанным вами ранее: Цитата WDT отключен, внешний генератор не используется. Страница 166 датащита описывает процедуру сброса при вкл питания. Настоятельно рекомендую скачать Configuration wizard для удобного конфигурирования МК, это лучше чем доверять исходникам, вырванным из разных мест. Судя по конфигуратору, кроссбар и порты настроены правильно. Но лучше если вы проверите.
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Jul 27 2016, 06:48
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 25-07-16
Пользователь №: 92 691

|
Цитата(alexunder @ Jul 26 2016, 20:47)  взглянул. В коде вот такой кусок есть: Код //----------------------------------------------------------------------------- // SYSCLK_CMOS_Init //----------------------------------------------------------------------------- // This routine initializes the system clock to the external oscillator in // CMOS clock mode. Assumes a CMOS clock generator is connected to XTAL1. // void SYSCLK_CMOS_Init (void) { char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page SFRPAGE = CONFIG_PAGE; // Set SFR Page OSCXCN = 0x20; // start external oscillator in CMOS clock mode. SFRPAGE = LEGACY_PAGE; RSTSRC = 0x04; // enable missing clock detector SFRPAGE = CONFIG_PAGE; CLKSEL = 0x01; // select external oscillator as SYSCLK source OSCICN = 0x00; // disable internal oscillator SFRPAGE = SFRPAGE_SAVE; // Restore SFR page } который плохо сочетается со сказанным вами ранее: Не пойму в чём несочетание? Ну описана процедура инициализации внешнего тактового генератора, но ведь эта процедура не вызывается в main(). Там вызывается SYSCLK_IntOsc_Init(); - инициализация ВНУТРЕННЕГО SYSCLK. Цитата Страница 166 датащита описывает процедуру сброса при вкл питания. Я пробовал и вариант подключения ноги MONEN к питаниюдля реализации режима Power-On Reset, и вариант внешнего ресета кнопкой с подтяжкой ноги RST к плюсу через 4,7к. Без разницы - ноль реакции. Цитата Настоятельно рекомендую скачать Configuration wizard для удобного конфигурирования МК, это лучше чем доверять исходникам, вырванным из разных мест. Судя по конфигуратору, кроссбар и порты настроены правильно. Но лучше если вы проверите. Уже скачал. Конфигуратор действительно удобный, но он мне не помог ничем. Код, выдаваемый им, соответствует тому, что я написал. Цитата(Harbinger @ Jul 27 2016, 04:02)  Попробуйте отключить WDT в startup.a51. На обнуление 4 Кбайт XRAM требуется довольно много времени. Это необычный вариант. А куда вставить процедуру отключения в startup.a51? И потом, там ассемблер, а я им не владею
|
|
|
|
|
Jul 27 2016, 07:19
|

unexpected token
   
Группа: Свой
Сообщений: 899
Регистрация: 31-08-06
Из: Мехелен, Брюссель
Пользователь №: 19 987

|
Цитата(MPetrovich @ Jul 27 2016, 08:48)  Не пойму в чём несочетание? Ну описана процедура инициализации внешнего тактового генератора, но ведь эта процедура не вызывается в main(). Там вызывается SYSCLK_IntOsc_Init(); - инициализация ВНУТРЕННЕГО SYSCLK. В самом деле! Мда, невнимательно я глянул, каюсь. Цитата(MPetrovich @ Jul 27 2016, 08:48)  Это необычный вариант. А куда вставить процедуру отключения в startup.a51? И потом, там ассемблер, а я им не владею  Нужно сделать запись в соответствующий регистр. Тут либо в датащит надо смотреть (что всегда полезно), либо тем же конфигуратором выбрать режим формирования кода в ASM, затем настроить отключение WDT и посмотреть куда что пишется, этот кусок и использовать в startup.a51. [quote name='MPetrovich' date='Jul 27 2016, 08:48' post='1439747'] Уже скачал. Конфигуратор действительно удобный, но он мне не помог ничем. Код, выдаваемый им, соответствует тому, что я написал. [quote] там есть несколько утилит для работы с семейством C8051, есть также Simplicity Studio, нечто вроде студии по разработке для МК, но выглядит ужасно и работает медленно.
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Jul 27 2016, 19:31
|
Участник

Группа: Участник
Сообщений: 21
Регистрация: 25-07-16
Пользователь №: 92 691

|
Цитата(alexunder @ Jul 27 2016, 07:19)  Нужно сделать запись в соответствующий регистр. Тут либо в датащит надо смотреть (что всегда полезно), либо тем же конфигуратором выбрать режим формирования кода в ASM, затем настроить отключение WDT и посмотреть куда что пишется, этот кусок и использовать в startup.a51. Попробовал. Не помогло. Попробовал вообще выкинуть стартап - то же самое. У меня ко всем форумчанам просьба: может ли кто-нибудь пересобрать проект у себя на компе и выложить сюда получившийся .hеx-файл? Может у меня с Keil-ом то-то неладно? Я попробую залить Ваш .hеx в контроллер и будет понятно в чём причина.
|
|
|
|
Сообщений в этой теме
MPetrovich Проблема с C8051F041 Jul 25 2016, 14:37 редактор Варианты
1.Проверить питание и сигнал сброса (само... Jul 26 2016, 09:27 MPetrovich WDT отключен, внешний генератор не используется. В... Jul 26 2016, 17:30 alexunder Цитата(MPetrovich @ Jul 26 2016, 19:30) W... Jul 26 2016, 18:22    Harbinger Цитата(alexunder @ Jul 27 2016, 10:19) Ну... Jul 27 2016, 17:01     MPetrovich Цитата(Harbinger @ Jul 27 2016, 18:01) Пр... Jul 28 2016, 06:59 Harbinger Попробуйте отключить WDT в startup.a51. На обнулен... Jul 27 2016, 04:02 Obam TS, у вас отладчика (EC2 или EC3) нету что ли? Без... Jul 28 2016, 07:30 alexunder Цитата(Obam @ Jul 28 2016, 09:30) TS, у в... Jul 28 2016, 21:46  MPetrovich Цитата(alexunder @ Jul 28 2016, 22:46) Су... Jul 30 2016, 17:52 редактор Цитатавсегда было достаточно симуляторов в ИДЕ - е... Aug 1 2016, 07:19 Obam Что, неужели FD51 симулятор? Те, кому сильно за 40... Aug 1 2016, 07:35 alexunder Цитата(Obam @ Aug 1 2016, 09:35) MPetrovi... Aug 1 2016, 09:02  MPetrovich Спасибо всем за поддержку и понимание. Я одолел, т... Aug 3 2016, 20:39 x893 Можно купить Toolstick и использовать как дебаггер... Aug 1 2016, 10:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|