roboforum.ru

Технический форум по робототехнике.

dccharacter - Излить посильно

Блоги посетителей.
Правила форума
В данном разделе каждый может иметь не более одной темы. Тема должна начинаться с логина (ника) робофорума.

Re: dccharacter - Излить посильно

Сообщение Dmitry__ » 17 авг 2014, 15:50

А где ошибка в приведенном коде выше? Я не вижу :oops:
Я ваще не верю компиляторам, пока не проверю листинг новой конструкции - не использую. По склеиванию 2-х байт в 16 бит, уже говорил что xc8 нормально делает:

Код: Выделить всёРазвернуть
v_bat_sample = (ADRESH << 8) + ADRESL;

=

Код: Выделить всёРазвернуть
v_bat_sample = ADRES;

T.e. компилятор нормально понимает 16-ти битные регистры контроллера (ADRES). Одним словом - смотри инклуды...

Добавлено спустя 3 минуты 57 секунд:
А, типа, раньше не делал приведение типов (uint16_t)? :) Так оно и так работало...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: dccharacter - Излить посильно

Сообщение dccharacter » 17 авг 2014, 19:16

Не. 8-ми битная переменная во что превращается после сдвига влево на 8 бит?
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: dccharacter - Излить посильно

Сообщение Dmitry__ » 17 авг 2014, 19:37

Превращается в старшие 8 бит 16-ти битной переменной, а что? т.е. например 0xA2 превращается в 0xA200. Конечно разговор идет о unsigned. Но для меня и не существует переменных signed, только полная управляемость данными программистом, только хардкор! :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: dccharacter - Излить посильно

Сообщение dccharacter » 17 авг 2014, 21:49

Вот ты как узнал, что в 16-битную приводится? Я в мануале этого не могу найти.

Добавлено спустя 31 минуту 50 секунд:
Книжки по роботам: http://electronicsforu.com/electronicsf ... _BL-vldUqY
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: dccharacter - Излить посильно

Сообщение Dmitry__ » 17 авг 2014, 23:47

dccharacter писал(а):Я в мануале этого не могу найти.

Говорю же, нет никакой ложки :)
Мануалы читают зануды, самый главный мануал - листинг программы. Не поверю, что такой умный человек как ты не может выучить 35 команд пикины :roll:

dccharacter писал(а):Вот ты как узнал, что в 16-битную приводится?

Чтоб ответить на этот вопрос, нужна доп. информация от тебя, ибо я даже теряюсь...
Например, если знать двоичную систему счисления (ака 16-я, байтовая) (раньше не было программистов, которые этого не знали), то ответ слишком очевиден. Сдвигание влево бит двоичного кода, приводит к умножению этого числа на 2^(n сдвигов). Это полная аналогия с десятичной системой счисления, например число "5" * 10^(n сдвигов) приведет к сдвиганию числа 5 в разрядной сетке 10-й системы счисления, т.е. получится 50. Осталось к младшему разряду прибавить младшую часть нужного числа. Это я про:
Код: Выделить всёРазвернуть
(ADRESH << 8) + ADRESL

Если вопрос был о том как это делается в си, то повторюсь, на все случаи жизни мануалов нет, ибо они нужны даже на разные версии одного и того же продукта. Отсюда мораль - асмовский листинг программы содержит всю информацию о предпочтениях писателя компилятора. Кста, небезызвестный разработчик си - Бьерн Страуструп, так много и сладко в молодости пел о преобразованиях типов в стиле
Код: Выделить всёРазвернуть
(uint16_t)((regH << 8) + regL))
, что весь мир ему почти поверил. Но теперь он говорит, что так опасно делать и это неправильный способ. И он уже придумал и втюхивает миру новый способ. Т.е. если сам темнейший лажает, то что говорить о смертных. А асм как был асмом так и остался, такшта: "Нет никакой ложки" :)
Или ты вообще что-то другое имел в виду, тогда колись...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: dccharacter - Излить посильно

Сообщение dccharacter » 18 авг 2014, 01:41

Ну я просто думаю - есть восемь стульев. На них люди сидят. Их подвинули - один с упал... Еще подвинули - еще один упал. Там же нет еще восьми стульев сбоку. А если кто-то эти стулья ставит, то надо предупреждать!

Добавлено спустя 35 секунд:
Я вот серьезно думаю с пиков слезть совсем. Че-то куча косяков на pic16f1827 выбили меня совсем из колеи
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: dccharacter - Излить посильно

Сообщение Dmitry__ » 18 авг 2014, 05:07

За 20 лет программирования пикин, ни разу не попался глюк :P
На scenix SX28AC ловил глюк, на каком-то клоне intel51 ловил, на пиках не ловил. Как вы их находите? Пока я не увидел граблей pic16f1827 в твоем проекте.

dccharacter писал(а):Ну я просто думаю - есть восемь стульев. На них люди сидят. Их подвинули - один с упал...

Нет, не так. Компилятор знает, что сдвигает людей на другой ряд, в котором 16 стульев. :)
Ведь v_bat_sample = 16 bit.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: dccharacter - Излить посильно

Сообщение dccharacter » 18 авг 2014, 06:34

А ты сравни размеры эрраты на ПИК и на СТМ32. Вот у меня в камнях залипает бит GO_nDONE. Они пишут, что пофиксили это в третьей ревизии, а на самом деле - фик
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: dccharacter - Излить посильно

Сообщение Dmitry__ » 18 авг 2014, 16:03

dccharacter писал(а):А ты сравни размеры эрраты на ПИК и на СТМ32.

Не верю! (c). Думаю у стм32 в РАЗЫ больше ерраты.
dccharacter писал(а):Вот у меня в камнях залипает бит GO_nDONE. Они пишут, что пофиксили это в третьей ревизии, а на самом деле - фик

Лови развернутый ответ :)
Так нельзя обслуживать ацп в любом контроллере. Ты установил GO_nDONE, потом произошло прерывание по окончании преобразования, считал данные, опять моментально установил GO_nDONE. А ведь если посмотреть pdf, то увидим что на входе ацп стоит УВХ. После преобразования надо дать время для заряда конденсатора УВХ. Иначе данные будут гулять от нуля до х. Пдф, стр. 149:
Код: Выделить всёРазвернуть
T ACQ = Amplifier Settling Time + Hold Capacitor Charging Time + Temperature Coefficient
= T AMP + T C + T COFF
= 2μs + T C +   Temperature - 25°C   0.05μs/°C 

Solving for T C :
T C = – C HOLD  R IC + R SS + R S  ln(1/511)
= – 10pF  1k  + 7k  + 10k   ln(0.001957)
= 1.12 μs


Только "Amplifier Settling Time + Hold Capacitor Charging Time" занимают 2μs + 1.12 μs. Но и это не главное. Твой способ опроса ацп очень не естественен. Запусти таймер с временем нужным для обновления данных аккума (это очень редкое событие). В прерывании от таймера устанавливай GO_nDONE, если ты считаешь что там что-то залипает, то сбрось/установи этот бит. А в прерывании от ацп считывай данные. При таком способе (если в ацп что-то залипает) ты никогда и не узнаешь о ерратах ацп. При этом будут соблюдены все "T AMP + T C + T COFF".

Смотрел я ваши эти стм, даже асм поигралку написал, пока не торкнуло. Угрохать полжизни на ерраты стм (ну, если потом не краснеть за свои программы) нужен очень весомый аргумент. Да и есть pic32, кста они 1.5 dmips против 1.25 dmips arm. A еще есть блекфины, вот это реально числодробилка - 1200 мипс на 600 мгц. И с такими возможностями блекфина можно было играцо в 2002 году.
Фсе, уехал в Крыш нам :) След. развернутый ответ из 30-ти часовой пробки на Керченской переправе, если инет будет :crazy:
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: dccharacter - Излить посильно

Сообщение dccharacter » 18 авг 2014, 17:35

Дим, ну почитай же эррату на pic16f1827! Бит залипает так, что насмерть. Т.е. до следующей перезагрузки ты остаешься без ADC. Совсем. Вывод в прерывания был сделан потому что опрос в цикле while(GO_nDONE); вешал проц наглухо. Да, вывод в прерывания был сделан коряво, но это никак не влияет на причину - бага в силиконе.
А верить/не верить - просто надо открыть два документа и посмотреть :-)

Добавлено спустя 1 минуту 42 секунды:
И еще надо понимать что я сравниваю дешеыве восьмибитные пики с 32-битными МК. Это важно. Но периферия на СТМ32 мне нравится в тыщщу раз больше. Библиотеки, возможно, отстойные, не спорю, сам не доктор, чтобы в кишках ковыряться.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: dccharacter - Излить посильно

Сообщение Duhas » 26 авг 2014, 17:02

потыкай хмеги мб ? ) если 8мибитки нужны
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: dccharacter - Излить посильно

Сообщение dccharacter » 26 авг 2014, 17:22

Duhas писал(а):потыкай хмеги мб ? ) если 8мибитки нужны

Не могу себя заставить. Как подумаю про то, что неправильно прошитые фьюзы убивают камень - все. Что за динозаврия такая? :-(
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: dccharacter - Излить посильно

Сообщение Duhas » 26 авг 2014, 17:26

нет таких фьюзов в хмегах ) да и вообще там теперь фьюзами мало что делается.. бут в приложение или бутлоадер, защиты всякие и BODы, такт настраивается на лету..
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: dccharacter - Излить посильно

Сообщение dccharacter » 26 авг 2014, 18:30

Мне кажется я третью платформу просто не осилю уже :-) Сорри
Надо просто найти простой способ прототипировать на STM32 - это все, что мне нужно. Надо фрезеровалку для плат сделать как у Димы.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: dccharacter - Излить посильно

Сообщение Madf » 26 авг 2014, 18:56

dccharacter писал(а):Не могу себя заставить. Как подумаю про то, что неправильно прошитые фьюзы убивают камень - все. Что за динозаврия такая? :-(

Бит ресета только не трогай и никаких проблем. :D
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Пред.След.

Вернуться в Блоги

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron