реклама на сайте
подробности

 
 
15 страниц V  « < 10 11 12 13 14 > »   
Reply to this topicStart new topic
> Silabs C8051F120
Radik2
сообщение Jun 1 2015, 02:38
Сообщение #166


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030



Цитата(alexunder @ Jun 1 2015, 00:58) *
В принципе, наверное, не нужно, но лучше делать sm.gif Вот простой пример. В "начальном значении" набор регистров SFR соответствует оному у оригинального 8051, т.е. вы восстанавливаете статус-кво, так сказать. Это особенно важно, когда вы хотите использовать какую-нибудь стороннюю библиотеку для 8051: возврат в начальное состояние перед вызовом функций этой библиотеки обязателен, ибо библиотека содана для стандартного МК из расчета что, к примеру, по адресу 0x88 будет регистр настройки таймера TCON, а не CPT0CN или какой другой. Если привыкните к возврату на reset value, сможете избежать ошибок и несовместимости со сторонним кодом в будущем.

Благодарю за совет. Но как быть сейчас с компаратором в Ф120-м ? Бросить этот узел МК и перейти к другому. Тоже не правильно.
У меня есть Ф320 и Ф350, еще Ф126 в пути. Попробую в них компаратор запустить. Возможно, что дело в железе.
Случайно увидел это и чуть не подавился слюнями ))
Go to the top of the page
 
+Quote Post
alexunder
сообщение Jun 1 2015, 06:56
Сообщение #167


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, и значит, мы умрем.
Go to the top of the page
 
+Quote Post
редактор
сообщение Jun 1 2015, 07:15
Сообщение #168


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



С отладчиком поаккуратнее, В режиме эмуляции Кейл может не догадываться, что вы страницу переключили (мой 4.23 упорно игнорирует переключение страниц).Да и с поддержкой перефирии не все гладко в моей версии, поэтому работу с перефирией проверяю только на железе. Эмуляция для логики.
Еще вариант сохранения текущей страницы регистров
void func (void)
{ _push(SFRPAGE); // сохранили в стек
SFRPAGE = ...; // выбираем номер нужной страницы
...
_pop(SFRPAGE); // восстановили из стека
}
В прерываниях происходит автоматическое перключение на страницу перефирии, вызвавшей прерывание. Восстановление страницы тоже происходит автоматически (есть свой стек для регистра SFRPAGE). НО ограничение по глубине вложенных прерываний (глубина стека для SFRPAGE 3 или 4 байта).Надо уточнить в описании. Работал со 120-й серией давно (3-4 года назад) только УАРТ и АЦП.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
Radik2
сообщение Jun 1 2015, 16:54
Сообщение #169


Частый гость
**

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
редактор
сообщение Jun 2 2015, 05:24
Сообщение #170


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Цитата
Кручу медленно потенциометр с которого идет на вход СР0+ и при определенном значении напряжения (меньше чем на входе СР0-) загорается светодиод, кручу дальше - яркость уеличивается.

Скорее всего на пороге срабатывания есть определенный дребезг от компаратора (маленький гистерезис), поэтому формируется некое подобие ШИМ, из-за чего светодиод светит тускло. Далее при уверенном преодолении порога загорается на полную яркость.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
Radik2
сообщение Jun 2 2015, 05:50
Сообщение #171


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030



Цитата(редактор @ Jun 2 2015, 10:24) *
Скорее всего на пороге срабатывания есть определенный дребезг от компаратора (маленький гистерезис), поэтому формируется некое подобие ШИМ, из-за чего светодиод светит тускло. Далее при уверенном преодолении порога загорается на полную яркость.


Скорее всего так и есть.

Слышал, что у 8051 очень удобный/приятный ассемблер. А Си я плохо перевариваю. Вопрос: для себя лучше программировать на асме, бейсике или все-таки напрячься и выучить Си.
Понимаю, что все устали от таких вопросов. Но я самостоятельно не смог за 7 лет изучения МК определиться с языком программирования.
Go to the top of the page
 
+Quote Post
alexunder
сообщение Jun 2 2015, 05:59
Сообщение #172


unexpected token
****

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



Цитата(Radik2 @ Jun 2 2015, 07:50) *
Слышал, что у 8051 очень удобный/приятный ассемблер. А Си я плохо перевариваю. Вопрос: для себя лучше программировать на асме, бейсике или все-таки напрячься и выучить Си.
Понимаю, что все устали от таких вопросов. Но я самостоятельно не смог за 7 лет изучения МК определиться с языком программирования.

Ассемблер не сложный, но писать большие программы на нем тяжело: требуется больше концентрации чем с языком выского уровня (Си). Я однажды писал работу usb-стека на ассемблере - лучше бы я этого не делал, т.к. много времени ушло на написание и отладку. Если не нравится Си, где-то есть компилятор на Паскале, но ему больше 10 лет и вряд-ли он такой же эффективный как кейловский Си. Если хотите изучить Си, возьмите книгу Кернигана и Ричи "Язык программирования Си", язык-то не сложный совсем в плане синтаксиса.

P.S. Рад что разобрались с компаратором. Похожий эффект со светодиодами наблюдал c F320.


--------------------
А у тебя SQUID, и значит, мы умрем.
Go to the top of the page
 
+Quote Post
Radik2
сообщение Jun 2 2015, 06:11
Сообщение #173


Частый гость
**

Группа: Участник
Сообщений: 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);
Go to the top of the page
 
+Quote Post
редактор
сообщение Jun 2 2015, 07:05
Сообщение #174


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Если писать для себя, то можно делать более простые комбинации. И остальным понятнее будет.
Это как с иностранным языком. На первом этапе простые фразы. По мере освоения фразы более сложные. Ну а разбираться в идиоматических выражениях и специфическом юморе (игра слов - например) - высший пилотаж.
Не надо пугаться - надо начать.
PS: Будут вопросы - можно в личку.

Сообщение отредактировал редактор - Jun 2 2015, 07:07


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
alexunder
сообщение Jun 2 2015, 07:09
Сообщение #175


unexpected token
****

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



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

Полностью солидарен.

Radik, приведенная конструкция даже опытного специалиста заставит задуматься. К (моему) сожалению, есть любители офрмлять свои программы именно таким образом, ибо синтаксис не возбраняет. Однако, Вас никто не заставляет так делать, пишите так, чтобы код читался легко.


--------------------
А у тебя SQUID, и значит, мы умрем.
Go to the top of the page
 
+Quote Post
Radik2
сообщение Jun 2 2015, 10:13
Сообщение #176


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030



А где бы почерпнуть информацию о том, как пишутся программы на Си в Keil для 8051 ?
Что-то можно из примеров использовать. Но этого, думаю, будет недостаточно.
На сайте Keil искать? На русс. яз., я так подозреваю, нет.


Сообщение отредактировал Radik2 - Jun 2 2015, 10:19
Go to the top of the page
 
+Quote Post
alexunder
сообщение Jun 2 2015, 16:34
Сообщение #177


unexpected token
****

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



Цитата(Radik2 @ Jun 2 2015, 12:13) *
А где бы почерпнуть информацию о том, как пишутся программы на Си в Keil для 8051 ?
Что-то можно из примеров использовать. Но этого, думаю, будет недостаточно.
На сайте Keil искать? На русс. яз., я так подозреваю, нет.

лучше изучить язык Си, а там уже смотреть примеры для 8051.

Цитата
Если хотите изучить Си, возьмите книгу Кернигана и Ричи "Язык программирования Си", язык-то не сложный совсем в плане синтаксиса.


--------------------
А у тебя SQUID, и значит, мы умрем.
Go to the top of the page
 
+Quote Post
Radik2
сообщение Jun 3 2015, 10:31
Сообщение #178


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 10-03-07
Из: Уфа
Пользователь №: 26 030



Цитата(alexunder @ Jun 2 2015, 10:59) *
P.S. Рад что разобрались с компаратором. Похожий эффект со светодиодами наблюдал c F320.


Надеюсь и на дальнейшую помощь. Как мне показалось, знатоков МК Silabs не так уж и много. По крайней мере, на данном форуме. Статей на русском языке в сети по пальцам можно сосчитать: АВРки и STM32 в основном.
Go to the top of the page
 
+Quote Post
vladec
сообщение Jun 4 2015, 06:44
Сообщение #179


Профессионал
*****

Группа: Свой
Сообщений: 1 167
Регистрация: 3-10-05
Из: Москва
Пользователь №: 9 158



Цитата(Radik2 @ Jun 3 2015, 14:31) *
Как мне показалось, знатоков МК Silabs не так уж и много. По крайней мере, на данном форуме. Статей на русском языке в сети по пальцам можно сосчитать: АВРки и STM32 в основном.


Наверное потому, что архитектура MCS51 потихоньку уходит в историю и становится все менее актуальной.
Go to the top of the page
 
+Quote Post
alexunder
сообщение Jun 4 2015, 06:47
Сообщение #180


unexpected token
****

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



Цитата(vladec @ Jun 4 2015, 08:44) *
Наверное потому, что архитектура MCS51 потихоньку уходит в историю и становится все менее актуальной.

Да, да, а мы вымираем как динозавры sm.gif


--------------------
А у тебя SQUID, и значит, мы умрем.
Go to the top of the page
 
+Quote Post

15 страниц V  « < 10 11 12 13 14 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 17:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01499 секунд с 7
ELECTRONIX ©2004-2016