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

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 пользователей онлайн

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