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

Среда Разработки At89C2051


apolon1919

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

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

  • Ответов 146
  • Создана
  • Последний ответ

Топ авторов темы

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

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

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

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

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

Ну как на картинки я показал, говорит We are finished!

В книге сказано это прошился, стоит вытащить его из LPT То просто не будет ничего написанно, и будет вечный цикл, стоит все подключить но без контроллера, говорит девайс не подключен.

То есть реакция адекватная.

Вот судя по моей программе везде на контактах должны быть нули??? Или 2 вольта? Например установил я все в нули, и там как бы земля должна быть?

Установил в единицы и там по 5 вольт должно быть?

Может я просто спалил микросхему?

И кстати, когда она в схеме то греется, не сильно, но греется

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

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

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

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

CSEG
ORG 00H
jmp init
ORG 30H
init:
mov p1, #0
mov p3, #0
main:
   sjmp main
END

Да, на всех пинах должны быть нули.

Errare humanum est. Коли людЯм позволено, что же о нас то говорить!
 

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

там где 2,3В где 1В, где 0,30В

Как то не так измеряешь! Измеряй логический уровень банальным светодиодом с резистором, просто горит- не горит и всё.

Попробуй тестовую программу с тремя СИДами на 0,1,2 пинах Р1.


; мигаем светодиодами 
LED1 EQU P1.0 ; определяем символьные имена
LED2 EQU P1.1 ; теперь компилятор "знает" что имени LED1, например, соответствует линия 0 порта Р1
LED3 EQU P1.2
JMP START ; прыгаем через вектора прерываний на старт.
ORG 0030h ; явно указываем компилеру с какого адреса разместить программу в памяти программ
; делается, чтобы программа не попала в поле векторов прерывания, об этом позже...
; ну собственно, основной цикл программы, отсюда будем осуществлять вызовы подпрограмм, уход в прерывания и тд. ( в Си соответствует функции Main(void){})
START: ; начинаем главный цикл
CALL BLINK ; вызываем подпрограмму мигания
JMP START ; бесконечно зацикливаем главный цикл
; Создаем подпрограммы
DELAY: ; задержка , содержимое регистров определяет время счета
MOV R3, #5
MOV R2, #0
MOV R1, #0
LOOP: DJNZ R1, LOOP ; "крутим" каскадный счетчик циклов
DJNZ R2, LOOP
DJNZ R3, LOOP
RET ; выход, возврат по месту вызова
BLINK: ;мигаем, используем подпрограмму DELAY
call DELAY ; пауза
CPL LED1 ;инвертируем Р1,0, зажигаем СИД1
call DELAY ; пауза
CPL LED2 ;инвертируем Р1,1, зажигаем СИД2
call DELAY ; пауза
CPL LED3 ;инвертируем Р1,2, зажигаем СИД3
call DELAY ; пауза
MOV P1, #255 ; записываем в порт все единицы, гасим все
RET ; выход, возврат по месту вызова

END ; конец программы

Изменено пользователем o_l_e_g

Errare humanum est. Коли людЯм позволено, что же о нас то говорить!
 

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

Вот, смотрите, LPT порт работает на 100% проверил с помощью мультиметра и вот этой программы

LPTprog.rar

Далее, схема собрана прям в точности с описанием! Я сейчас еще раз все проверил, более того процессор был виден.

Теперь программка не видит процессор....

Значит он сгорел?

Подскажите мне последовательность действий что бы мне просто убедится что все прошивается и правильно.

Я сейчас сделаю схемку

6-3-1_clip_image033.jpg

Только пожалуйста поясните почему их тут 2? И какой напряжения подавать? и как замерять?

И как мне сделать последовательность действий что бы добиться результата?

Я наверное куплю этих контроллеров штук 5.

Куплю логический пробник

Что еще мне нужно будет?

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

Лучшая проверка-это проверка функционирования.

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

Конденсаторы в примерно 10-20 пФ, диоды любые ВЧ, или импульсные, резистор не ставить, его заменит внутреннее сопротивление прибора.

Errare humanum est. Коли людЯм позволено, что же о нас то говорить!
 

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

Так детектор и измерит только переменный, а он будет только при работающем генераторе.

Errare humanum est. Коли людЯм позволено, что же о нас то говорить!
 

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

ааааааааааа, ясно! А напряжения на вход переменного тока какое подавать?

Вобщем так.... я сейчас детально разобрал схему программатора и понял на сколько она простая, + в книге описан ход записи и чтения байтов.

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

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

А напряжения на вход переменного тока какое подавать?

Так напряжение само с ножки кварца подается.

Вобщем так.... я сейчас детально разобрал схему программатора и понял на сколько она простая, + в книге описан ход записи и чтения байтов.

В даташите, описано преподробнейше. Ход действий правильный.

Errare humanum est. Коли людЯм позволено, что же о нас то говорить!
 

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

Написал вот такую программу я

Out32(0x378,0x0); // Устанавливаем D0-D7 В ноль

Out32(0x37A,0x0); //сигнал на стирания

Out32(0x37A,0x2); // сигнал стирания + 12В

Out32(0x37A,0x6); // сигнал стирания + 12В + init (PROC p3.2)

Sleep(10); // Ждем 10 мс

Out32(0x37A,0x2); // возвращаем сигнал стирания + 12В

// Ждем готовности Ready

short ready = Inp32(0x379);

while (ready != 56)

{

ready = Inp32(0x379);

cout << ready << endl;

}

Out32(0x37A,0xA); // Отключаем 12в

cout << "OK";

getchar();

И в итоге сигнал Ready микруха не возвращает

А если вручную замыкаю то все ок

ну тоесть проволочкой

Куплю 5 таких микрух и буду тренироваться

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

Как мне сделать что бы в следующий раз все было нормально?

Я просто займусь этим через 2 недели, потому что в командировку еду.... а там LPT порта к сожалению нет.

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

  • 2 недели спустя...

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

у меня данные не заливаются

Из за чего?

Кто работал рассказывайте

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

че реально никто уже 2 недели подсказать ничего не может?

Кто делал отпишитесь как

Или объясните какой контроллер нормально работает

что бы я с него начал

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

Я написал свою программу, данные стираются и записываются но контроллер не работает

// ProgAT89C2051.cpp: определяет точку входа для консольного приложения.

//

#include "stdafx.h"

#pragma comment(lib,"inpout32.lib")

using namespace std;

#define XTAL1 0x01

#define ERASE 0x00

#define WRITE 0x08

#define VOLT_12 0x02

#define PROC 0x04

// Ждем готовности Ready

bool Reade()

{

short ready = Inp32(0x379);

int timeout = 0;

while (1)

{

ready = Inp32(0x379);

if ( ((ready >> 6) & 1) ) {

// timeout++;

// if (timeout >= 100000) return false;

}

else return true;

//

}

}

int _tmain(int argc, _TCHAR* argv[])

{

// Данные программы которая в порты посылает 0

unsigned char data[] ={0x02,0x00,0x30,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x75,0x90,0x00,0x75,0xB0,0x00,0x80,0xF8};

cout<<"Load LPT driver GiveIO.sys"<<endl;

HANDLE h=CreateFile(L"\\\\.\\giveio", GENERIC_READ, 0, NULL,

OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (h==INVALID_HANDLE_VALUE)

{

cout<<"Error! Can't open driver! Press any key to exit... "<<endl;

getchar();

return(0);

}

Out32(0x378,0x0); // Устанавливаем D0-D7 В ноль

Out32(0x37A,VOLT_12 | ERASE | PROC); // сигнал стирания + 12В + PROC <------------------ 1-2 пункт

Sleep(10); // Ждем 10 мс

Out32(0x37A,VOLT_12 | ERASE); // возвращаем сигнал стирания + 12В <------------------ 2 пункт

if(!Reade()) // ------------ 3 пункт

{

cout << "erase error" << endl;

getchar();

return 1;

}

Out32(0x37A,ERASE); // Отключаем 12в // ------------ 4 пункт

cout << "erase OK" << endl;

Sleep(3000);

Out32(0x37A,WRITE | VOLT_12);

for (int i = 0; i < 56; i++)

{

Out32(0x378,data); // Устанавливаем следующий байт данных

Out32(0x37A,VOLT_12 | WRITE | PROC); // сигнал запись + 12В + PROC

// Ждем готовности Ready

if(!Reade())

{

// Готовности нет

cout << "write error " << endl;

getchar();

return 1;

}

Sleep(2);

cout << "write ok " << i << endl;

if( i != 56)

Out32(0x37A, XTAL1 | VOLT_12 | WRITE ); // Увеличиваем счетчик данных на 1

}

cout << "FINISH" << endl;

Out32(0x37A,WRITE); // Отключаем 12В

getchar();

return 0;

}

ProgAT89C2051_Release.rar

ProgAT89C2051_VS2010_SOURCES.rar

post-171692-0-95381400-1374995686_thumb.png

post-171692-0-71333900-1374995724_thumb.png

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

  • 2 недели спустя...

Попробуйте перейти на at89S2051. У них другой режим программирования, и программатор должен быть попроще. Более конкретно подсказать не смогу. Последний раз прошивал at89c2051 лет 13 назад, на самопальном/самописном программаторе.

Или переходите на AVR-ки, например tiny2313, по ножкам совпадает с at89c2051.

Я написал свою программу, данные стираются и записываются но контроллер не работает

Код не смотрел.

В вашем программаторе есть режим проверки(верификации) записанного?

Если нет, то говорить, что данные записываются, преждевременно.

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

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

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

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

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

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

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

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

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

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

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

×
×
  • Создать...