Свежие обсуждения
Микроконтроллеры

Intel MCS 51 - интегрирование больших объемов информации

1 2 3

lex: С ваших слов получается что можно обойтись контроллером одним ? Для такой задачи однозначно. Считать значение в RAM и каждый день писать значение в EEPROM, 4-x кило надолго хватит. А если еще и внешнюю память припахать......, но думаю реально не потребуется.

Про исчисление все верно 8бит =255, 9бит =512, 10бит =1024, 11бит=2048 и т.д.

Счетчик можно организовать и в десятичной системе, но тогда надо больше RAM. Допустим на индикаторе 12 разрядов, каждому разряду соответствует ячейка RAM соответственно 12 шт, к младшей ячейке прибавляем 1 и как в ней досчитали до 10 его обнуляем ее и прибавляем еденицу к следующему разряду и т.д. всего число = 999.999.999.999 кВт за глаза.

 

Dron_Gus: спасибо но я пишу на Асме только.
Да название EEPROM со встроенными часами было бы очень кстати, и скорее всего такой подходи и будет реализоваться
" статстику сводить в "потребление за месяц" "

Ridiko: хорошая штука ADUC8xx, но стоит от 9$, теже опции можно реализовать на контроллере подешевле. Попробую это сделать на 51ом.

 

AlexAlcoa:
ЗдОрово ! Хороший метод, спасибо. У меня 8 разрядов, и соответсвенно по такому методу можно выводить 9999 9999.

Но вопрос с деление с остатком остается открытым, почитаю мануал по контроллеру, получается 1 импульс = 10 ватт.
Можеть быть сколько угодно импульсов.
Если считать 255 импульсов, потом умножать на 10 .... куда я результат то складу
Непомню я могу сразу адресовать во внешнюю память ? Если да то это многое упращает.
Потому что если использовать встроенную епром память контроллера это 8 бит всего.

 

Насколько я помню 8051, при умножении 2х 8-битных результат 16-битный и разложен по двум регистрам.

 

Dron_Gus:
Не совсем, там все складывается 8 битный аккамулятор
!!!
Dron_Gus: на второй ответ ..
Может это поновее .. хотя раз 51 то архитектура та же .. У меня дока на Intel ... И Motorola ..не нашел что там 16 .. Но это щас не суть важно )

 

Вот читаю в доке 8051 Microcontroller Instruction Set.pdf от Atmel:

MUL AB
Function: Multiply
Description: MUL AB multiplies the unsigned 8-bit integers in the Accumulator and register B. The low-order byte of the 16-bit
product is left in the Accumulator, and the high-order byte in B. If the product is greater than 255 (0FFH), the
overflow flag is set; otherwise it is cleared. The carry flag is always cleared.
Example: Originally the Accumulator holds the value 80 (50H). Register B holds the value 160 (0A0H). The instruction,
MUL AB
will give the product 12,800 (3200H), so B is changed to 32H (00110010B) and the Accumulator is cleared. The
overflow flag is set, carry is cleared.

 

Я вообщем благодаря вашей помощи, мануалу и старой памяти, кое что придумал, вот на ваш суд выдаю такой способ:

Использую восемь, 8разрядных регистров и Таймер-счетчик
Данные хранимые в регистрах соответсвенно:
1. 10 Вт 2. 100 Вт 3. 1кВт 4.10кВт 5. 100кВт 6. 1мВт 7.10 мВт 8.100 мВт (это уже наверное перебор, но учтем)

Краткий алгоритм:
Т/C контроллера работает в режиме захвата по фронту, по прерыванию сохраняем в ячейку памяти Единичку (в первый регистр)
Далее проверяем, если НЕравен 9 - инкремент, если равен9 - очищаем текущий регистр и инкрементируем след. яч. памяти. (тоесть получается 100 кВт), это же условие проверяем здесь же = или != 9 ... и так далее до 8го регистра.

Так же переодическая пересылка на индикатор данных. (Не знаю взять "умный" или пользоваться 7 сегментным с дишифратором ...)
индикатор 8разрядный - 9.9.9.9.9.9.9.9

Это все должно произойти за время между импульсами. По-моему на все должно хватить, программа на 20-30 команд, каждая по 2-3 машинных цикла, тоесть всего 90 мксек )
Требование Т/C у 51го чтобы импульс был длительностью не менее 2х тактов. Это тут тоже будет. Кварц - 12 мГц.

 

это как бы "костяг"
Потом в планах статистика, запись во внешнюю память ..

 

Ув lex, что-то я не заметил "ячейки" для 1 Вт

 

chav1961: - а не будет такой, "разрешение" счетчика 10 Вт
Для промышленного счетчика я считаю это нормально, а Вы ?

220 В и ток до 100 А ... в каждой фазе

Dron_Gus:
Может это поновее .. хотя раз 51 то архитектура та же .. У меня дока на Intel ... И Motorola ..не нашел что там 16 .. Но это щас не суть важно )