Перейти к содержанию

C8051F320 С Нуля


Рекомендуемые сообщения

Здравствуйте!

Есть плата, которая когда то якобы работала (надеюсь и сейчас).

железо прозвонил, все вроде как на схеме. USB подключать не буду пока, поэтому светодиод перепаяю к Vdd

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

post-159232-0-32226300-1341856828_thumb.jpg

чтобы проверить работоспособность платы написал вот это

#include <c8051f320.h>
sbit testbit=P2^4;
int main (void)
{
int aq=3,i;
while (1){
testbit=0;
for (i=0;i<=255;i++){
aq++;
aq--;}
testbit=1;}
return 0;
}

по умолчанию я так понимаю тактирование идет от внутреннего генератора 12 МГц? линии Р2.4-Р2.7 тоже вроде не надо даже матрицу включать. поэтому ничего инициализировать не стал

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

C8051F32x-rus.pdf

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

После

testbit=1;

тоже задержку поставить бы.

а как ее посчитать по времени? если брать 12 Мгц и выполнение команды за 1 такт - совсем мало получается

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А эта как расчитана? -

for (i=0;i<=255;i++){
aq++;
aq--;}

никак, но во время симуляции (вставил еще задержку как Вы советовали) в Кейле порт Р2.4 мигает нормально

Ссылка на комментарий
Поделиться на другие сайты

Посчитай в декомпилированном виде.

Скорее всего это будет выглядеть так:

mov	r7,#255		;2 цикла
Label1:
inc	r0   		;1 цикл
dec	r0   		;1 цикл
djnz	r7, Label1	;2 цикл а

Если по циклам не наврал, то получится (1+1+2)*255+2=1022 цикла. У этого МК в отличие от обычного 8051 один программный цикл равен 1 такту генератора. Т.е. длительность задержки будет равна 1022/F(МГц) мкс.

Пока в груди моей бьётся мотор, надежда есть на чистый бензин...

Ссылка на комментарий
Поделиться на другие сайты

Посчитай в декомпилированном виде.

Скорее всего это будет выглядеть так:

mov	r7,#255		;2 цикла
Label1:
inc	r0   		;1 цикл
dec	r0   		;1 цикл
djnz	r7, Label1	;2 цикл а

Если по циклам не наврал, то получится (1+1+2)*255+2=1022 цикла. У этого МК в отличие от обычного 8051 один программный цикл равен 1 такту генератора. Т.е. длительность задержки будет равна 1022/F(МГц) мкс.

в Кейле есть логический анализатор, если ему верить, то переменная testbit в "1" находится 2 мс, в "0" 1 мс, период получается 3 мс, частота 333 Гц, хм это много. чтобы различать мигания частота меньше 50 должна быть вроде...значит вместо 2х циклов надо вставить 7 ?

Ссылка на комментарий
Поделиться на другие сайты

А Кейл разве в реалтайме работает?

Для начала надо бы точно определить частоту работы МК.

Кейл отображает ассемблерный код программы? Если да - выложите тут.

Пока в груди моей бьётся мотор, надежда есть на чистый бензин...

Ссылка на комментарий
Поделиться на другие сайты

А Кейл разве в реалтайме работает?

Для начала надо бы точно определить частоту работы МК.

Кейл отображает ассемблерный код программы? Если да - выложите тут.

Кейл может и не работает, но лог. анализатор должен правильно показывать

post-159232-0-79763700-1342013435_thumb.jpg

асм код какой то выдается:

3: int main (void) 
    4: { 
    5: int aq=3,i; 
C:0x0800    7F03     MOV      R7,#0x03
C:0x0802    7E00     MOV      R6,#0x00
    6: P2SKIP=16; 
C:0x0804    75D610   MOV      P2SKIP(0xD6),#0x10
    7:  while (1){ 
    8:  testbit=0; 
C:0x0807    C2A4     CLR      testbit(0xA0.4)
    9:  for (i=0;i<=255;i++){ 
C:0x0809    E4       CLR      A
C:0x080A    FD       MOV      R5,A
C:0x080B    FC       MOV      R4,A
   10:  aq++; 
C:0x080C    0F       INC      R7
C:0x080D    BF0001   CJNE     R7,#0x00,C:0811
C:0x0810    0E       INC      R6
   11:  aq--;} 
C:0x0811    EF       MOV      A,R7
C:0x0812    1F       DEC      R7
C:0x0813    7001     JNZ      C:0816
C:0x0815    1E       DEC      R6
C:0x0816    0D       INC      R5
C:0x0817    BD0001   CJNE     R5,#0x00,C:081B
C:0x081A    0C       INC      R4
C:0x081B    E4       CLR      A
C:0x081C    B505ED   CJNE     A,0x05,C:080C
C:0x081F    EC       MOV      A,R4
C:0x0820    B401E9   CJNE     A,#0x01,C:080C
   12:  testbit=1; 
C:0x0823    D2A4     SETB     testbit(0xA0.4)
   13:  for (i=0;i<=255;i++){ 
C:0x0825    E4       CLR      A
C:0x0826    FC       MOV      R4,A
C:0x0827    FD       MOV      R5,A
C:0x0828    D3       SETB     C
C:0x0829    ED       MOV      A,R5
C:0x082A    94FF     SUBB     A,#VDM0CN(0xFF)
C:0x082C    EC       MOV      A,R4
C:0x082D    6480     XRL      A,#P0(0x80)
C:0x082F    9480     SUBB     A,#P0(0x80)
C:0x0831    50D4     JNC      C:0807
   14:  aq++; 
C:0x0833    0F       INC      R7
C:0x0834    BF0001   CJNE     R7,#0x00,C:0838
C:0x0837    0E       INC      R6
   15:  aq--;}} 
C:0x0838    EF       MOV      A,R7
C:0x0839    1F       DEC      R7
C:0x083A    7001     JNZ      C:083D
C:0x083C    1E       DEC      R6
C:0x083D    0D       INC      R5
C:0x083E    BD0001   CJNE     R5,#0x00,C:0842
C:0x0841    0C       INC      R4
C:0x0842    80E4     SJMP     C:0828
C:0x0844    787F     MOV      R0,#0x7F
C:0x0846    E4       CLR      A
C:0x0847    F6       MOV      @R0,A
C:0x0848    D8FD     DJNZ     R0,C:0847
C:0x084A    758107   MOV      SP(0x81),#0x07
C:0x084D    020800   LJMP     main(C:0800)

Ссылка на комментарий
Поделиться на другие сайты

Да уж... ohmy.gif

То что "i" int, а не byte я проглядел.

Но смущают вот такие куски:

C:0x0828    D3   	SETB 	C
C:0x0829    ED   	MOV      A,R5
C:0x082A    94FF 	SUBB 	A,#VDM0CN(0xFF)
C:0x082C    EC   	MOV      A,R4
C:0x082D    6480 	XRL      A,#P0(0x80)
C:0x082F    9480 	SUBB 	A,#P0(0x80)
C:0x0831    50D4 	JNC      C:0807

Зачем компилятор такого насовал... dry.gif

Сравнил с временем выполнения команд из приложенного даташита - приблизительно так и получится при тактовой частоту 12 МГц.

Пока в груди моей бьётся мотор, надежда есть на чистый бензин...

Ссылка на комментарий
Поделиться на другие сайты

Да уж... ohmy.gif

То что "i" int, а не byte я проглядел.

Но смущают вот такие куски:

C:0x0828    D3   	SETB 	C
C:0x0829    ED   	MOV      A,R5
C:0x082A    94FF 	SUBB 	A,#VDM0CN(0xFF)
C:0x082C    EC   	MOV      A,R4
C:0x082D    6480 	XRL      A,#P0(0x80)
C:0x082F    9480 	SUBB 	A,#P0(0x80)
C:0x0831    50D4 	JNC      C:0807

Зачем компилятор такого насовал... dry.gif

Сравнил с временем выполнения команд из приложенного даташита - приблизительно так и получится при тактовой частоту 12 МГц.

http://onembedding.bialix.com/tools/keil/articles/loop_256.htm

так что вставлять 7 циклов?

Ссылка на комментарий
Поделиться на другие сайты

Попробуйте выровнять циклы таким образом:

#pragma asm
NOP
NOP
...
NOP
#pragma endasm

Количество команд "NOP" должно соответствовать количеству машинных циклов занимаемых куском выше.

Ну а количество программных циклов просто уменьшит частоту мигания светодиода.

Пока в груди моей бьётся мотор, надежда есть на чистый бензин...

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Сами же понимаете, что так не может быть. Или нет "сквозняка", или схема неправильно собрана, элементы не те, битые и пр., и схема защиты не работает. Проверьте сначала работу защёлки защиты при питании от 15 В, отпаяв R19 и подавая туда медленно увеличивающееся напряжение до 1,5 - 2 В (можно с потенциометра ом на 100-500). Добейтесь, чтобы работала. Порог срабатывания измерьте. Пересчитайте в ток через резистор 0,1 Ом. Соответствует ли "правильному"? Проверьте, что у этого резистора сопротивление действительно 0,1 Ом. Запаяйте 0,1 Ом обратно. Напишите, какая лампочка. А то мало ли какая, может она не от "сквозняка", а от броска тока заряда С18 С16 мигает. Транзисторы ключей проверьте. Впаяйте вместо первичной трансформатора резистор ом 150 - 300, чтобы ток с ключей в этот "эквивалент трансформатора" не больше 50-100 мА был. Посмотрите форму напряжения на выходе ключей, в точке соединения С16 и С18, на питании после лампочки. Ищите, где ляп. Умозрительно подсказать можно только по каким-то измеренным данным. Кроме вас никто их не добудет. В общем, как в анекдоте: - Молодой человек, ну делайте же уже хоть что-нибудь!
    • Ну так можно увеличить глубину ООС, тем самым понизив чувствительность и повысив линейность
    • Судя по этой картинке   в трухе передней панели под выступающие болты и шишки паек ЗК динамиков выковыряныфрезерованы выемки, иначе бы динамики так плотно не прилегали бы к ДВП.    А оно тебе надо? "Работает - не мешай"(с)/это уже аксиома, не требующая доказательств/ , пытаясь сделать лучше, чем сделано на заводе. Сanton-ят, т.е. поют, и лучше, чем есть, тебе не сделать. Ну перенесёшь ты динамики наружу, а что тебе это даст? Кроме того, что при попытке их продать(а продавать их когда-нибудь придётся, т.к. эта акустика бюджетного сегмента без потуг на высший класс Hi-Fi) , тебе придётся объяснять потенциальному покупателю причину, по которой какой-то умник заколхозил такую переделку с акустикой, ты ничего хорошего не получишь. Задуманная тобой переделка - это по сути возня ради возни. 
    • Малыш, чушь пока здесь мелешь только ты. Сидел бы лучше в своей оффтопной теме, лепил бы на своём 3D-пинтере куколок, и не лез бы в те темы, в которых ты - ноль. 
    • Там нашел. Вроде купил.  Спасибо всем
    • Вначале вместо 220 подал 15в ( неправильно выразился, извиняюсь, конденсатор С10 коротнул, чтоб микра заработала),как на картинке, посмотрел сигнал на затворах - есть, перемычку естественно отпаял, включаю 220, а лампочка страховочная загорается, Следовательно идёт сквозняк... Вот и хочу спросить у вас, Где искать подвох? Да кстати защита не срабатывала почему-то..
×
×
  • Создать...