Hадежный контроллер нужен........

Jul 27, 2006 Last reply: 19 years ago 886 Replies

Пpивет, Dmitry!

*** 08 Aug 06 09:57, Dmitry E. Oboukhov wrote to Anatoly Mashanov:

AM>> Господа, Вы зря соревнуетесь. В моей последней разработке мастер AM>> PIC18F252 отдает команды слейву той же марки со скоростью 1250000 AM>> (Миллион двести пятьдесят тысяч) бит/сек по программному каналу. AM>> Тактовая 5мгц*4.

DO> 1250000 _бит_ в секунду, это с одним стартом и одним стопом - DO> 1250000*10/8=1562500Гц, если одна инструкция выполняется за 1 такт, то

Кстати, про старт и стоп - это твое предположение, Анатолий про формат вроде ничего не говорил...

DO> высказывание "(Миллион двести пятьдесят тысяч) бит/сек по программному DO> каналу." - ложное. DO> либо не Миллион двести пятьдесят тысяч DO> либо не програмный канал

И про то, что идет непрерывный поток - это тоже лишь твои домыслы. Бывают случаи, когда надо сделать бурстовую посылку, но с очень большой скоростью. Hо совсем маленькую. И именно такой пример AM и привел - "отдает команды". А вовсе не "передает данные". Я, например, делал синхронный прием-передачу 2 mbps при 4 MHz тактовой, на камне без каких-либо аппаратных средств (SPI), чисто программно - на 90S1200. Еще примеры таких систем - генерация видеосигнала. Или какой-нибудь простенький и медленный микроконтроллер должен плюнуть кому-нибудь на 115200 несколько команд, а тактовая UART это не позволяет (а то и полностью отсутствует UART). Достаточно распространенные примеры...

DO> а скорее всего ни того ни другого вообще нет ;)

И это опять твои домыслы...

с уважением Владислав

Ты тоже нихрена не понимаешь! Константа -N компенсирует время вхождения в прерывания - оно зависит от компиляторного пролога, но всегда одинаково. А использование += компенсирует латентность прерывания - время от выставления запроса до начала вхождения - которое в общем является мелкой переменной величиной около ноля но может быть и больше если прерывания временно закрыты. Если бы у таймера была автоперезагрузка то этих проблем не было бы вообще.

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Arcady Schekochikhin! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Tue, 8 Aug 2006 07:05:15

+0000 (UTC):

AS> Каждое событие типа 5 добавляет латентность и сбивает сетку, теперь AS> прерывание будет неступать в моменты +138*n+N (где N будет медленно AS> нарастать).

Теперь понял что ты имеешь в виду. Да, сдвиг сетки будет нарастать, только он меня за пределами одного байта не волнует совершенно.

dima

formatting link

Hello Arcady.

08 Aug 06 11:24, you wrote to me:

Ок.

Дороже но не намного. 675 у нас стоит $~1.60, а 45 мне по $2 достали... Кроме того есть tiny25, периферия таже, но памяти вдвое меньше. Интересно как Обухов собрался воткнуть этот пример в 1К памяти?

Отож и фигня, Теперь доперло, что надо тип при операциях с такими переменными писать. Заработало. Шенкс.

static volatile word wVTavg; void idle(void) { signed int temp; word ad_tmp; //wdt_reset(); /* Clear watchdog timer */ if (ms == 1) { // Clear ADIF and start single conversion ADCSRA |= (1 << ADIF) | (1<<ADSC); // wait for conversion done, ADIF flag active while(!(ADCSRA & (1 << ADIF))); ad_tmp = ((word)ADCL >>1); ad_tmp += ((word)ADCH <<7);// + (ADCL >>1); temp = (signed int)(ad_tmp - wVTavg); temp = (signed int) temp >>4; wVTavg += (signed int)temp; Tts = thermo((word)wVTavg>>7); .....

Nicolas

Там чисто кусок УАРТа плюс помещение в буфер.

Суть в том чтобы получить стандартные 9600 - но в общем то это просто "мерило" скорости.

Если бы микруха была ценой как 675 то тогда да - а так как она дороже - ну пусть не используется УСИ.

? что за фигня? какие там могут быть переполнения? Там надо просто сделать

temp = (signed short)temp >> 4;

Hello Vladislav!

07 Aug 06 14:42, you wrote to me:

AM>> шкалу. Корректнее TMR0 += 133 и учесть, что согласно даташиту AM>> таймер в момент записи может отличаться от таймера в момент AM>> считывания на 2 единицы.

VB> В случае операции непосредственно с TMR0 ? Т.е. тактируем TMR0 от VB> системного клока без прескалера, и после манипуляции с TMR0 атомарной VB> операцией (addwf, addwf) результат может отличаться (а может и не VB> отличаться ???) от расчетного ? Жуть какая-то... Ссылку на конкретное VB> место в даташите, pls ? Или у меня склероз, или у тебя - глюки...

DS30430B page 27. If the TMR0 register is written, the increment is inhibited for the following _two_ cycles (Figure 6-2 and Figure 6.3) The user can work around this by writing an adjusted value to the TMR0 register.

Anatoly

Ну, мотороллеры... Может еще тахасские инструменты - экзотика в 86м году в СССР.

Это C99 - который по большому счету никто не применяет. Все остальные С - такого не поддерживают.

Hi Dmitry!

07 Aug 06 21:18, Dmitry Orlov wrote to Slav Matveev:

SM>> для того что бы понять синтаксис вида parameter = value SM>> не надо иметь выдающихся умственных способностей.

DO> Hадо их иметь чтобы понять что происходит когда написал вместо этого DO> parameter = vaIue (тест на внимательность), криворукость не в счет, DO> чтобы знать, что такой DO> параметр и такое значение вообще существуют. а документацию надо читать до, а не после.

DO> другими подобными средствами. Я уже много раз объяснял чем удобна IDE. DO> Впрочем и в IDE нет никакой проблемы сделать из одних и тех же сорцов DO> разные проекты с разными результатами. чем она удобна совершенно понятно. непонятно чем неудобно собрать среду немонолитную, кроме религиозных предубеждений. попробуй взять binutils и собрать там все под IDE вместе с документацией и раскладыванием по каталогом... "знать не знаю и знать не желаю" ?

SM>> какие именно навыки нужны из далекой области?

DO> Знание входного языка всех этих утилит, шелла, умение их связывать. DO> Куча весьма и весьма грамотного народа понятия не имеет о том что DO> такое cmd.exe, не говоря уж о других шеллах.

мне что CONFIG_X86_TSC_DISABLE в текстовом конфиге, что [ ] Unsynced TSC support в развесистых менюшках ни о чем не говорит, пока я в хелп не загляну. да, посмотреть параметры утилит и выписать нужные несколько сложнее чем пробежать по меню, где все параметры уже выписаны... хотя это не дает основания сказать "это не среда разработки".

SM>> подозреваю что давно сдана. но f9 от этого на ней не SM>> появилась.

DO> Появилась на более новой (которая 20 лет назад уже была).

А ты вообще-то в курсе что кроме не очень тогда еще распостраненных IBM PC/XT/AT были и другие системы, к которым pc-шная клавиатура как-то не цеплялась?

SM>> ты пытаешься с говном мешать вещи, которые видел один раз, SM>> издалека, на картинке.

DO> Отнюдь. Hе вещи, а подход к ним, который я видел много раз.

ну значит видел издали, на картинке, в исполнении профессионального ламера. :)

Slav.

А вдруг тебе не нулями надо?

 X-Virus-Scanned: amavisd-new at bezeqint.net

Hello, Kirill Frolov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Tue, 8 Aug 2006 09:37:38

+0000 (UTC):

KF> >> Кстати они static и при этом не persistent, потому инициализированы >> нулями согласно сишному стандарту. Какие варнинги?

KF> А вдруг тебе не нулями надо?

Тогда я бы не нулями и инициализировал. А то вдруг я написал =5, а надо было

6...

dima

formatting link

NM> Дороже но не намного. 675 у нас стоит $~1.60, а 45 мне по $2 достали... NM> Кроме того есть tiny25, периферия таже, но памяти вдвое меньше. NM> Интересно как Обухов собрался воткнуть этот пример в 1К памяти? а я и не собирался ничего никуда втыкать :)

пока что я поучаствовал в споре относительно того что якобы PIC на 20МГц быстрее AVR на 16МГц. сперва мне "объясняли" что-то про немерянную крутость оптимизирующих компиляторов для PIC, потом когда я продолжил сомневаться и привел ссылку на то за сколько тактов выполняется команда AVR меня попросили заткнуться потому что в железе я типа не делал. ну вот я и взял вчера и набросал RS232 на 8-мегагерцовом AVR. и отладил в железе. прекрасно на 8МГц влазит скорость 19200, а на 4МГц соответственно 9600. а исходный тезис был "сделайте хотя бы 4800"

а реализовывать дальше этот trm у меня желания нет никакого, вот к этому индикатору на котором отлаживал возможно и припишу что-нибудь как на работу попаду :)

AM>>> Господа, Вы зря соревнуетесь. В моей последней разработке мастер AM>>> PIC18F252 отдает команды слейву той же марки со скоростью 1250000 AM>>> (Миллион двести пятьдесят тысяч) бит/сек по программному каналу. AM>>> Тактовая 5мгц*4. VB>

DO>> 1250000 _бит_ в секунду, это с одним стартом и одним стопом - DO>> 1250000*10/8=1562500Гц, если одна инструкция выполняется за 1 такт, то VB>

VB> Кстати, про старт и стоп - это твое предположение, Анатолий про формат VB> вроде ничего не говорил... он встрял в спор про софтовые реализации RS232 соответственно если плохо читал то кто же ему виноват?

можно два проца соединить 16+управление линици ввода-вывода и тремя командами передавать один байт. скорость в бодах получится немерянная по сравнению с софтовыми последовательными реализациями. VB>

DO>> высказывание "(Миллион двести пятьдесят тысяч) бит/сек по программному DO>> каналу." - ложное. DO>> либо не Миллион двести пятьдесят тысяч DO>> либо не програмный канал VB>

VB> И про то, что идет непрерывный поток - это тоже лишь твои домыслы. Бывают VB> случаи, когда надо сделать бурстовую посылку, но с очень большой скоростью. VB> Hо совсем маленькую. И именно такой пример AM и привел - "отдает команды". VB> А вовсе не "передает данные". Я, например, делал синхронный прием-передачу VB> 2 mbps при 4 MHz тактовой, на камне без каких-либо аппаратных средств VB> (SPI), чисто программно - на 90S1200. Еще примеры таких систем - генерация VB> видеосигнала. Или какой-нибудь простенький и медленный микроконтроллер VB> должен плюнуть кому-нибудь на 115200 несколько команд, а тактовая UART это VB> не позволяет (а то и полностью отсутствует UART). Достаточно VB> распространенные примеры... VB>

софтово послать небольшую порцию данных быстро то можно а вот с приемом так не получится - принимающая сторона должна либо 90% находиться в ожидании этих данных либо каки-то другим образом быть извещена о начале передачи.

мы тут выше обсуждали дуплексные каналы. :)

sp>> по-моему простое махание ногами может сказать только о скорости, но sp>> никак о производительности архитектуры..... sp>> давай возьмем один и тот же сишный код, какую нибудь математику с sp>> плавающей точкой, выкомпилим для PIC и AVR и посмотрим..... sp>> у меня на столе мега 48 на 20MHz лежит.....

DO> В 99% моих проектов нет никакой плавающей точки, да и проблем с DO> производительностью тоже. Мне ясно, что большого отрыва ни PIC ни AVR не DO> обеспечат. Что же до теста, то я предлагаю реализовать на AVR конкурсную DO> задачу, она и покажет в частности успеет ли он например UART на 4800 DO> обслужить вместо моих 2400.

нет.... это не годится..... можно написать на асме, можно на си....., а потом каждый по-разному пишет.... код должен быть один и тот же на разных платформах.... тут даже опции компилятора могут иметь место, да и версия может быть тоже..... кстати, подобным образом можно решить и задачу GCC vs IAR...

С уважением, P.S.

sp>> по нашим прайсам 33262 от 34063 дороже почти вдвое.... AT> Так это совершенно разные вещи. AT> 63 - PWM-контроллер. AT> 62 - PFC-контроллер.

ну и что.... все равно внутри 62-го, 63-й стоит! ;-Р а оставшейся рассыпухи в обвязке еще ровно на пол цены....., так что все сходится...! ;) а какую прикольную штуку можно на этом контроллере сделать? можно сделать красивую синусоиду с выхода апса ватт эдак на сто???

С уважением, P.S.

SP> Если первая и неудачная (еще не известно по какой причине, может не SP> таам искали ;-) ) попытка для вас фатальная, то менять что-либо может и SP> не имеет смысла...

та хочется ж пощупать его "за вымя"! ;) ну ничего...... может еще подвернется случай.......

С уважением, P.S.

Привет Dmitry!

08 Aug 06 02:13, Dmitry E. Oboukhov писал Alex Mogilnikov:

AM>>>> Hеправда. В AT91 лежит ядро ARM7DTMI, у которого вектора AM>>>> расположены в адресах 0-1F.

DO>

formatting link
DO> Advanced Interrupt Controller DO> страница 164

DO> адрес DO> 0xFFFF F000 DO> офсеты 0x80 - нулевой вектор DO> 0ч84 - первый DO> итд

DO> не я конечно досконально не разбирался.

А зря. Поэтому ты и путаешь вектора исключений процессора с регистрами периферийного утройства - контроллера прерываний. По поводу контроллера прерываний лучше читай не отдельно взяную страницу 164, а весь раздел 24. А по поводу процессора читай мануал на ARM7TDMI, раздел 2.8. Конкретно таблица векторов исключений находится в п. 2.8.9.

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Владею дыроколом на уровне пользователя.

Hello, serge! You wrote to Alexander Torres on Tue, 08 Aug 2006 16:07:46 +0400:

sp>>> по нашим прайсам 33262 от 34063 дороже почти вдвое.... AT>> Так это совершенно разные вещи. AT>> 63 - PWM-контроллер. AT>> 62 - PFC-контроллер.

sp> ну и что.... все равно внутри 62-го, 63-й стоит! ;-Р

Это пардон как? Между ними вобще ничего общего нет.

With best regards, Alexander Torres. E-mail: snipped-for-privacy@yahoo.com [ Жамству бой !]

AM> Тем более, что я сказал "мастер отдает AM> слейву по программному каналу", а не "слейв принимает от мастера по AM> программному каналу". ну просто это "тем более" не в кассу в данном примере :)

DO>> В 99% моих проектов нет никакой плавающей точки, да и проблем с DO>> производительностью тоже. Мне ясно, что большого отрыва ни PIC ни AVR не DO>> обеспечат. Что же до теста, то я предлагаю реализовать на AVR конкурсную DO>> задачу, она и покажет в частности успеет ли он например UART на 4800 DO>> обслужить вместо моих 2400. sp>

sp> нет.... это не годится..... можно написать на асме, можно на си....., а sp> потом ну вот глянь выше, я написал на С совершеенно не заботясь об оптимизации, на AVR 4МГц легко решается эта же задача но на выходе имеет вчетверо большую скорость передачи.

sp> каждый по-разному пишет.... sp> код должен быть один и тот же на разных платформах.... тут даже опции sp> компилятора могут иметь место, да и версия может быть тоже..... кстати, sp> подобным образом можно решить и задачу GCC vs IAR... думаю если мой код собрать на PIC он будет медленнее исходного кода в trm. хотя бы потому что у меня на функции разложено все. да и работаю я не с байтами а со структурами с битовыми полями в которых байты попадают на позиции 1-9 битов (то есть извлечение/паковка - накладные расходы)

мне собственно было интересно соберет ли какой другой компилятор такую струкутру :)

PS: кстати, насколько я помню в HT-PIC в свое время совершенно не компилировался такого рода код:

void foo();

void interrupt int_entry() { foo(); ... }

int main() { ... foo(); }

void foo() { static int i; for (i=0; i<1000; i++); }

очень интересно как обстоят дела сейчас?

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required