|
|
  |
Silabs C8051F120 |
|
|
|
Jun 1 2015, 02:38
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030

|
Цитата(alexunder @ Jun 1 2015, 00:58)  В принципе, наверное, не нужно, но лучше делать  Вот простой пример. В "начальном значении" набор регистров SFR соответствует оному у оригинального 8051, т.е. вы восстанавливаете статус-кво, так сказать. Это особенно важно, когда вы хотите использовать какую-нибудь стороннюю библиотеку для 8051: возврат в начальное состояние перед вызовом функций этой библиотеки обязателен, ибо библиотека содана для стандартного МК из расчета что, к примеру, по адресу 0x88 будет регистр настройки таймера TCON, а не CPT0CN или какой другой. Если привыкните к возврату на reset value, сможете избежать ошибок и несовместимости со сторонним кодом в будущем. Благодарю за совет. Но как быть сейчас с компаратором в Ф120-м ? Бросить этот узел МК и перейти к другому. Тоже не правильно. У меня есть Ф320 и Ф350, еще Ф126 в пути. Попробую в них компаратор запустить. Возможно, что дело в железе. Случайно увидел это и чуть не подавился слюнями ))
|
|
|
|
|
Jun 1 2015, 06:56
|

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

|
Цитата(Radik2 @ Jun 1 2015, 04:38)  Благодарю за совет. Но как быть сейчас с компаратором в Ф120-м ? Бросить этот узел МК и перейти к другому. Тоже не правильно. как быть? Нужно довести дело до конца и сделать соответствующие выводы. Добавьте в программу управление регистром SFRPAGE как Вам советовали выше и проверьте работоспособность с отладчиком и без. Если с программой все в порядке, воздействие на компаратор правильное, но блок не срабатывает, то стоит попробовать второй компаратор (под индексом 1) аналогичным образом. Мне не верится что компараторы или сопутствующая логика в МК вышли из строя, хотя всякое бывает. Такое случается, если на них могли долговременно держать уровни выше absolute maximum ratings (как я понял, плата б/у). Однако, не будем заранее так думать. Цитата(Radik2 @ Jun 1 2015, 04:38)  У меня есть Ф320 и Ф350, еще Ф126 в пути. Попробую в них компаратор запустить. Возможно, что дело в железе. Хороший набор. Однако, надо разобраться со свойствами F120, потом легче будет с остальными МК. F32x нацелены на работу с USB (FS), там придется вникать в работу шины и соотв. механизмы для обработки части USB-стека. Последнее заметно сложнее тестов с компаратором даже при наличии библиотеки от Silabs. F350 - на применение в аналоговых приложениях. Интересно было бы потестировать 24-битный АЦП и сравнить его реальные х-ки с аналогичными от TI и AD. Цитата(Radik2 @ Jun 1 2015, 04:38)  Случайно увидел это и чуть не подавился слюнями )) Да, большой зверь - много портов и DMA наличиствует. Мне пока еще не требовалось столько восьмиразрядных портов на одном МК (даже если учесть что часть портов будут задействованы под нужды АЦП или SPI). Однажды в проекте было необходимо четыре 8-разрядных порта в одном контроллере, тогда использовал вот такого зверя с 51-м ядром в 100- и 128-выводных корпусах, но с ним главная цель была устройство с high-speed USB 2.0
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Jun 1 2015, 16:54
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030

|
Цитата(редактор @ Jun 1 2015, 12:15)  С отладчиком поаккуратнее, В режиме эмуляции Кейл может не догадываться, что вы страницу переключили (мой 4.23 упорно игнорирует переключение страниц).Да и с поддержкой перефирии не все гладко в моей версии, поэтому работу с перефирией проверяю только на железе. Эмуляция для логики. Да, эмуляция периферии похоже не ахти. Вообщем, заработало в железе. При отладке не активируется компаратор. Интересный момент. Кручу медленно потенциометр с которого идет на вход СР0+ и при определенном значении напряжения (меньше чем на входе СР0-) загорается светодиод, кручу дальше - яркость уеличивается. Код #include <c8051f120.h> // SFR declarations #include <stdio.h> //#include <intrins.h> //#include <REG52.H>
void Comparator_Init() { char SFRPAGE_SAVE = SFRPAGE; int i = 0; SFRPAGE = CPT0_PAGE; CPT0CN = 0x85; for (i = 0; i < 60; i++); // Wait 20us for initialization //CPT0CN &= ~0x30; SFRPAGE = SFRPAGE_SAVE; }
void Port_IO_Init() { // P0.0 - CP0 (Cmpr0), Open-Drain, Digital char SFRPAGE_SAVE = SFRPAGE; SFRPAGE = CONFIG_PAGE; XBR0 = 0x80; XBR2 = 0x40; SFRPAGE = SFRPAGE_SAVE; }
void Oscillator_Init() { char SFRPAGE_SAVE = SFRPAGE; SFRPAGE = CONFIG_PAGE; OSCICN = 0x83; SFRPAGE = SFRPAGE_SAVE; }
// Initialization function for device, // Call Init_Device() from your main program void Init_Device(void) { Comparator_Init(); Port_IO_Init(); Oscillator_Init(); }
void main(void) { SFRPAGE = CONFIG_PAGE;
WDTCN = 0xDE; // Disable watchdog timer WDTCN = 0xAD; Init_Device(); while (1); } Если раскоментировать строку CPT0CN &= ~0x30; то и отладка работает, но в окошке с регистрами компараторов ничего не происходит, все "по умолчанию". Забыл вставить сохранение и восстановление SFRPAGE перед Init_Device, где сторож-й таймер отключается. Не помешает.
Сообщение отредактировал Radik2 - Jun 2 2015, 03:21
|
|
|
|
|
Jun 2 2015, 05:24
|
Местный
  
Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315

|
Цитата Кручу медленно потенциометр с которого идет на вход СР0+ и при определенном значении напряжения (меньше чем на входе СР0-) загорается светодиод, кручу дальше - яркость уеличивается. Скорее всего на пороге срабатывания есть определенный дребезг от компаратора (маленький гистерезис), поэтому формируется некое подобие ШИМ, из-за чего светодиод светит тускло. Далее при уверенном преодолении порога загорается на полную яркость.
--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
|
|
|
|
|
Jun 2 2015, 05:50
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030

|
Цитата(редактор @ Jun 2 2015, 10:24)  Скорее всего на пороге срабатывания есть определенный дребезг от компаратора (маленький гистерезис), поэтому формируется некое подобие ШИМ, из-за чего светодиод светит тускло. Далее при уверенном преодолении порога загорается на полную яркость. Скорее всего так и есть. Слышал, что у 8051 очень удобный/приятный ассемблер. А Си я плохо перевариваю. Вопрос: для себя лучше программировать на асме, бейсике или все-таки напрячься и выучить Си. Понимаю, что все устали от таких вопросов. Но я самостоятельно не смог за 7 лет изучения МК определиться с языком программирования.
|
|
|
|
|
Jun 2 2015, 05:59
|

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

|
Цитата(Radik2 @ Jun 2 2015, 07:50)  Слышал, что у 8051 очень удобный/приятный ассемблер. А Си я плохо перевариваю. Вопрос: для себя лучше программировать на асме, бейсике или все-таки напрячься и выучить Си. Понимаю, что все устали от таких вопросов. Но я самостоятельно не смог за 7 лет изучения МК определиться с языком программирования. Ассемблер не сложный, но писать большие программы на нем тяжело: требуется больше концентрации чем с языком выского уровня (Си). Я однажды писал работу usb-стека на ассемблере - лучше бы я этого не делал, т.к. много времени ушло на написание и отладку. Если не нравится Си, где-то есть компилятор на Паскале, но ему больше 10 лет и вряд-ли он такой же эффективный как кейловский Си. Если хотите изучить Си, возьмите книгу Кернигана и Ричи "Язык программирования Си", язык-то не сложный совсем в плане синтаксиса. P.S. Рад что разобрались с компаратором. Похожий эффект со светодиодами наблюдал c F320.
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Jun 2 2015, 06:11
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030

|
Цитата(alexunder @ Jun 2 2015, 10:59)  Если хотите изучить Си, возьмите книгу Кернигана и Ричи "Язык программирования Си", язык-то не сложный совсем в плане синтаксиса. Когда я вижу подобный код, то просто вхожу в ступор. Код BUS_PORT->BSRR=(data<<BUS_PIN_0)|(((uint32_t)((~data)<<BUS_PIN_0)&BUS_MASK)<<0x10);
|
|
|
|
|
Jun 2 2015, 07:09
|

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

|
Цитата(редактор @ Jun 2 2015, 09:05)  Если писать для себя, то можно делать более простые комбинации. И остальным понятнее будет. Это как с иностранным языком. На первом этапе простые фразы. По мере освоения фразы более сложные. Ну а разбираться в идиоматических выражениях и специфическом юморе (игра слов - например) - высший пилотаж. Не надо пугаться - надо начать. Полностью солидарен. Radik, приведенная конструкция даже опытного специалиста заставит задуматься. К (моему) сожалению, есть любители офрмлять свои программы именно таким образом, ибо синтаксис не возбраняет. Однако, Вас никто не заставляет так делать, пишите так, чтобы код читался легко.
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Jun 2 2015, 16:34
|

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

|
Цитата(Radik2 @ Jun 2 2015, 12:13)  А где бы почерпнуть информацию о том, как пишутся программы на Си в Keil для 8051 ? Что-то можно из примеров использовать. Но этого, думаю, будет недостаточно. На сайте Keil искать? На русс. яз., я так подозреваю, нет. лучше изучить язык Си, а там уже смотреть примеры для 8051. Цитата Если хотите изучить Си, возьмите книгу Кернигана и Ричи "Язык программирования Си", язык-то не сложный совсем в плане синтаксиса.
--------------------
А у тебя SQUID, и значит, мы умрем.
|
|
|
|
|
Jun 3 2015, 10:31
|
Частый гость
 
Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030

|
Цитата(alexunder @ Jun 2 2015, 10:59)  P.S. Рад что разобрались с компаратором. Похожий эффект со светодиодами наблюдал c F320. Надеюсь и на дальнейшую помощь. Как мне показалось, знатоков МК Silabs не так уж и много. По крайней мере, на данном форуме. Статей на русском языке в сети по пальцам можно сосчитать: АВРки и STM32 в основном.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|