Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
shemmer
Открыл глаза
Сообщения: 58
Зарегистрирован: Вс сен 09, 2007 07:13:08
Контактная информация:

Сообщение shemmer »

Я имел ввиду необходимо ли создавать масивы?
Или же здесь другой подход к алгоритму в целом?
Поделитесь секретами программирования по SPI
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

shemmer писал(а):Я имел ввиду необходимо ли создавать масивы?
Или же здесь другой подход к алгоритму в целом?
Поделитесь секретами программирования по SPI

1. в какой-то из тем я уже писал об автономном программаторе... думаю, надо использовать SD/MMC карту для хранения обычных файлов прошивок, копировать их туда с компа, а потом МК считывает их и шьёт куда надо
2. а секреты - они на то и секреты, чтобы ими не делиться :)
3. в даташитах все написано, SPI - он и в африке SPI.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
leshiy
Вымогатель припоя
Сообщения: 659
Зарегистрирован: Чт янв 24, 2008 19:18:20
Откуда: Хабаровск

Сообщение leshiy »

Начал изучать,подскажите как это работает:

ldi Temp1 ,0
ldi Temp2 ,0
ldi Temp3 ,10
Loop: dec Temp1
brne Loop
dec Temp2
brne Loop
dec Temp3
brne Loop
-непонятно то,что для задержки берутся три регистра,на первом цикле brne сравнивает значение регистра1 с нулем,когда в регистре насчитался нолик brne отпускает ход программы(с метки),программа пошла дальше...и натыкается на 2-й регистр(высчитывается),а потом снова brne Loop,т.е. происходит переход на метку или теперь сравнивается второй регистр? Temp2
brne Loop
dec Temp3
brne Loop
shemmer
Открыл глаза
Сообщения: 58
Зарегистрирован: Вс сен 09, 2007 07:13:08
Контактная информация:

Сообщение shemmer »

Программу для автономного программатора вроде-бы написал
Инициализировал SPI,
Ак как разместить прошивку в прошивке программатора?
Если разместить со свободного адреса во Flash-файле то при открывании такой флеши программа пишет invalid data in flash.
Подскажите как разместить прошивку-клон в прошивке программаторе
Artem333
Встал на лапы
Сообщения: 119
Зарегистрирован: Вт апр 17, 2007 15:24:47
Откуда: Новосиб

Сообщение Artem333 »

.org xxx ;адрес началв прошивки
flash_code: ;метка по которой находится адрес начала прошивки
.db байты прошивки через запятую

или можно напрямую в бинарник засунуть с адреса xx
Всё просто как самогонный аппарат
Mu3y
Родился
Сообщения: 8
Зарегистрирован: Ср фев 06, 2008 22:31:53

Сообщение Mu3y »

ОБЬЯСНИТЕЕЕ!!! Читал обучалку про массивы,теперь по ночам не сплю,немогу понять почему чтоб узнать адрес массива, записанного в памяти программ надо умножать метку на 2??? Стоит она у меня например по адресу $007, так зачем её адрес записывать как $00E???

И почему, раз уж в обучалке написано что каждая команда содержит 2 байта, то адреса прерываний в .inc файле для 2313 пишутся $001, $002, $003 и т.д? это значит на каждый адрес приходиться 2 байта? Зачем тогда у mega16def.inc адреса прерываний пишутся $002, $004, $006?
Аватара пользователя
Ka3ax
Родился
Сообщения: 18
Зарегистрирован: Чт фев 07, 2008 14:25:22
Откуда: от туда
Контактная информация:

Сообщение Ka3ax »

leshiy писал(а):Начал изучать,подскажите как это работает:

ldi Temp1 ,0
ldi Temp2 ,0
ldi Temp3 ,10
Loop: dec Temp1
brne Loop
dec Temp2
brne Loop
dec Temp3
brne Loop
-непонятно то,что для задержки берутся три регистра,на первом цикле brne сравнивает значение регистра1 с нулем,когда в регистре насчитался нолик brne отпускает ход программы(с метки),программа пошла дальше...и натыкается на 2-й регистр(высчитывается),а потом снова brne Loop,т.е. происходит переход на метку или теперь сравнивается второй регистр? Temp2
brne Loop
dec Temp3
brne Loop

brne проверяет есть ли [на ] НОЛЬ в регистре
под которым он написан
то есть

Код: Выделить всё

Loop: dec Temp1 
brne Loop

проверяет TEMP1

Код: Выделить всё

dec Temp2 
brne Loop

проверяет TEMP2

Код: Выделить всё

dec Temp3 
brne Loop

проверяет TEMP3
это вложенный цикл задержки, для того, что бы увеличить
время. по идее можно и далее наращивать.
само быстро отрабатывает

Код: Выделить всё

Loop: dec Temp1 
brne Loop

в 256 раз медленнее

Код: Выделить всё

Loop: dec Temp2
brne Loop

"обнуляется", еденица добавляется к содержимому регистра, только
после того, как переполнится регистр TEMP1
leshiy
Вымогатель припоя
Сообщения: 659
Зарегистрирован: Чт янв 24, 2008 19:18:20
Откуда: Хабаровск

Сообщение leshiy »

Спасибо,додУмкал :)
мне оказалось не хватало ресурсов для понимания,а именно...
Пошла программа...
...
ldi Temp1 ,0 ;сказали регистру(R16),что он "Ноль" и пошли дальше...
ldi Temp2 ,13 ;тут мы открыли регистру(R17) что его цена 13...
Loop: dec Temp1 ;вешаем ярлык на объект,который заставляет идти нас этой дорогой...dec вычисляет из регистра(R16) единицу...
brne Loop ;проверяет регистр(R16) на нуль,и если он не нуль,то отправляем к объекту с ярлыком... и так пока R16 не станет нулем он нас не отпустит дальше...
dec Temp2 ;вычисляет из регистра(R17) единицу...
brne Loop ;И вот тут та я и зарылся,т.к. R17 не равен нулю он отправляет ход программы на метку Loop,которая заново вычитает из R16 единицу и заново обрабатывает Temp1 ,но из-за этого я подумал что он(цикл) бесконечный,только вот одно Но,ведь первый раз из Temp2 вычли единицу,значит когда Temp1 снова станет Нулем,из Temp2 (R17) вычитается еще единица,и так до нуля ;)
(извините за флуд,просто когда вникаешь в суть,охота со всеми поделиться :)
leshiy
Вымогатель припоя
Сообщения: 659
Зарегистрирован: Чт янв 24, 2008 19:18:20
Откуда: Хабаровск

Сообщение leshiy »

итого,если я правильно уяснил, три цикла в одном
по 256 повторений=> 256*256*256=256^3=16.776.216 ,если тактовая частота около 20 МГц(20.000.000 в секунду) то значит что мигать будут светодиоды чуть быстрее одной секунды,правильно?
Аватара пользователя
Ka3ax
Родился
Сообщения: 18
Зарегистрирован: Чт фев 07, 2008 14:25:22
Откуда: от туда
Контактная информация:

Сообщение Ka3ax »

leshiy писал(а):итого,если я правильно уяснил, три цикла в одном
по 256 повторений=> 256*256*256=256^3=16.776.216 ,если тактовая частота около 20 МГц(20.000.000 в секунду) то значит что мигать будут светодиоды чуть быстрее одной секунды,правильно?

насчеь мегагерц не скажу(не знаю как контроллер работает, не знаю с какой скоростью и за сколтко тактов считывает и записывает информацию), а насчет вложенности да.
Аватара пользователя
Ka3ax
Родился
Сообщения: 18
Зарегистрирован: Чт фев 07, 2008 14:25:22
Откуда: от туда
Контактная информация:

Совет по выбору контроллера

Сообщение Ka3ax »

Неделю вникал, понял, что пока не начнешь воплощать ничего не поймешь. Посоветуйте контроллер. такой, что бы в Proteus симулировать можно было. И не сильно дорогой.
Задача
заряд-разряд аккумуляторов 1,2 вольта
Заряд отслеживание минус дельта V - изменение с предыдущим
напряжением 20 mV (у кадмиевых 40 mV)на уменьшение.
Накопление статистики о напряжениях,ток если стабильный то просто указывать к каждому снятому показанию напряжения зарядки. идеально с записью на комп. (график построить, что-бы)
Заряд в 4-6 режимах(изменяется длительность и период импульсов зарядки), импульсный, стабильным током , например, период 450 msec, длительность 100m sec.
Можно внешний стабилизатор тока организовать, без обратной связи,
контроллер только будет переключателем режимов зарядки, ток отслеживать не будет.
Разряд
так же импульсным током со сменой периода и длительности
с выбором токов разрядки, например, 100, 500, 1000 mA (стабиолизированные)

разряжать до 1 вольта и до 0,9
считать емкость аккумулятора, сколько внего было влито с 1 го вольта
и сколько вылито с полнозаряженного до 1 вольта.

На первом этапе постараюсь только контроль состояния аккумуляторов организовать, разряд-котроль разрядного тока
и времени.

Наверное все упрется в размер памяти контроллера.
минимум, хотелось бы при зарядке контролировать каждые 15 минут
напряжение зарядки, ток зарядки и Э.Д.С
Но отслеживание минус дельты должно идти, наверное каждую секунду измерение напряжения Э.Д.С
Возможно опытным путем другое время можно определить.
но запоминаться не все значения а нужные для "отлавливания"
минус дельты. (вот зарядку на потом оставляю. думаю, что ума ни сразу не сильно позже реализовать это не хватит)

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

Если не понятно, могу алгоритм составить,как вижу его, для того
что бы подобрать контроллер точнее.
Аватара пользователя
Rolex
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Вс янв 13, 2008 22:32:13

Сообщение Rolex »

обязательно ли подключать резистор 10 ком к Vcc как показано на рисунке ?
http://www.lancos.com/siprogsch.html

у меня внутрисхемный лпт программатор
Аватара пользователя
Piroman17
Грызет канифоль
Сообщения: 296
Зарегистрирован: Пт янв 12, 2007 17:16:35
Откуда: Дубна
Контактная информация:

Сообщение Piroman17 »

столкнулся с тем, что при эмуляции (в протеусе) работы ATmega16 и I2C EEPROM AT24С1024 весь поцесс зависает на команде передачи первого байта :shock: . Код компилировал в CVAVR. вот кусок кода на котором виснет:

Код: Выделить всё

i2c_start();
PORTC = 1;
i2c_write(0b10100000); //вот тут и виснет!
PORTC = 2;
i2c_write(0);
i2c_write(3);
i2c_write(0b101);
i2c_stop();

Плиз помогите!
"Всё новое - хорошо забытое старое" - для творцов без творческий мысли.
Базилио
Родился
Сообщения: 15
Зарегистрирован: Чт фев 15, 2007 21:24:06

Re: Совет по выбору контроллера

Сообщение Базилио »

Ka3ax писал(а):Посоветуйте контроллер. такой, что бы в Proteus симулировать можно было. И не сильно дорогой.
слишкам многа букаф... еле асилил... ATMega8 - моделируеццо и недорого, ATMega16 - моделируеццо, аднака дороже, зато многа ног. оба справяццо с задачей элементарно
Покуда есть на свете дураки...удачу мы не выпустим из рук.
Аватара пользователя
Ka3ax
Родился
Сообщения: 18
Зарегистрирован: Чт фев 07, 2008 14:25:22
Откуда: от туда
Контактная информация:

Re: Совет по выбору контроллера

Сообщение Ka3ax »

Базилио писал(а):
Ka3ax писал(а):Посоветуйте контроллер. такой, что бы в Proteus симулировать можно было. И не сильно дорогой.
слишкам многа букаф... еле асилил... ATMega8 - моделируеццо и недорого, ATMega16 - моделируеццо, аднака дороже, зато многа ног. оба справяццо с задачей элементарно

спасибо, посмотрел, не очень дорого
6 евро 8 ки 3 штуки, 9 евро 16-е.
пошел изучать цапы.
Аватара пользователя
Krik99
Потрогал лапой паяльник
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина
Контактная информация:

Сообщение Krik99 »

Piroman17 писал(а):столкнулся с тем, что при эмуляции (в протеусе) работы ATmega16 и I2C EEPROM AT24С1024 весь поцесс зависает на команде передачи первого байта :shock: . Код компилировал в CVAVR. вот кусок кода на котором виснет:

Код: Выделить всё

i2c_start();
PORTC = 1;
i2c_write(0b10100000); //вот тут и виснет!
PORTC = 2;
i2c_write(0);
i2c_write(3);
i2c_write(0b101);
i2c_stop();

Плиз помогите!


Вот тоже недавно ришил поигратся с i2c, а точнее с EEPROM 24С04. Я вот тоже эмулировал в Протеусе, и никаких результатов, а вот подключил к ATtiny13 , загнал прошивку, и всё ОК. Попробуй на железе, а вобще смотри в HELP , там есть пример работы с EEPROM
И попробуй в Протеусе вместо EEPROM подключить i2c DEBUGGER , вот и увидеш что он передаёт. :)
Изображение
Аватара пользователя
Piroman17
Грызет канифоль
Сообщения: 296
Зарегистрирован: Пт янв 12, 2007 17:16:35
Откуда: Дубна
Контактная информация:

Сообщение Piroman17 »

теперь нашел где ещё ошибка - функция i2c_start() всегда возвращает "0"! типа I2C шина занята... :shock: в чём может быть дело. Тестирую в протеусе на I2C DEBUGGER
"Всё новое - хорошо забытое старое" - для творцов без творческий мысли.
Аватара пользователя
Krik99
Потрогал лапой паяльник
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина
Контактная информация:

Сообщение Krik99 »

А вообще, работу устройства опиши. :) Может там в подключение что-то не так? :idea: Или с частотой.... Попробуй например с 24с04.
Изображение
Аватара пользователя
knyaz*
Грызет канифоль
Сообщения: 255
Зарегистрирован: Пн фев 11, 2008 20:32:45
Откуда: Краснодарский край

Сообщение knyaz* »

Суть заключается в том что есть компилятор gcc стандартная тузла в linux...
Взяты библиотеки из winAVR... там вроде тот же компилятор используется...
Ну жно скомпилировать программу написанную на языке С с помощью gcc...
т.е. какой клучь нужно установить gcc что бы он на выходе дал *.HEX или хотябы бинарник.....
Kesha
Нашел транзистор. Понюхал.
Сообщения: 175
Зарегистрирован: Вс мар 04, 2007 14:38:49

Сообщение Kesha »

knyaz* писал(а):Суть заключается в том что есть компилятор gcc стандартная тузла в linux...
Взяты библиотеки из winAVR... там вроде тот же компилятор используется...
Ну жно скомпилировать программу написанную на языке С с помощью gcc...
т.е. какой клучь нужно установить gcc что бы он на выходе дал *.HEX или хотябы бинарник.....

Надо поставить пакеты avr-gcc и avr-libc, ну а там уже команда avr-gcc --help выдаст нужные параметры. Лучше поставь пакет Kontrollerlab и не мучайся с командами(хотя конечно изучить их не помешает)
Ответить

Вернуться в «Разные вопросы по МК»