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

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

нашел программу которая считывает серийный номер карточки Em-marine и выдает его в терминал. в протеусе все работает нормально а в реальности ноль..... вот такой у меня считыватель.http://www.ironlogic.by/il.NSF/pages/matrixII. думал сперва считыватель вышел из строя,взял новый такая же беда

Вот программа для codevision

#include <mega32.h>
#include <delay.h>
// 1 Wire Bus functions
#asm
.equ __w1_port=0x12 ;PORTD
.equ __w1_bit=7
#endasm
#include <1wire.h>

// Standard Input/Output functions
#include <stdio.h>
#define DS1990_FAMILY_CODE 1
#define SEARCH_ROM 0xF0
// Declare your global variables here
#define MAX_DEVICES 8
unsigned char rom_code[MAX_DEVICES][9];
// Declare your global variables here

void main(void)
{

unsigned char i,j,devices;

PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0x00;

PORTC=0x00;
DDRC=0x00;

PORTD=0x00;
DDRD=0x00;


// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

ACSR=0x80;
SFIOR=0x00;

w1_init();

while (1)
{
delay_ms(500);
w1_init();
devices=w1_search(SEARCH_ROM,&rom_code[0][0]);
for (i=0;i<devices;i++)
if (rom_code[i][0]==DS1990_FAMILY_CODE)
{
for (j=1;j<=6;j++)
printf(" %02X",rom_code[i][j]);
printf("\n\r");
};

};
}

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

post-85231-0-30992000-1345966087_thumb.png

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

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

У меня точно такой же код прекрасно работает.

while (1)
{
delay_ms(500);
w1_init();
devices=w1_search(SEARCH_ROM,&rom_code[0][0]);
for (i=0;i<devices;i++)
 if (rom_code[i][0]==DS1990_FAMILY_CODE)
{  
   for (j=1;j<=6;j++)
   printf(" %02X",rom_code[i][j]);
   printf("\n\r");
};
 };

Причем именно с матриксом. )

Может в терминалке неправильные настройки? В самой программе "Терминал" точно выставили эти значения? 8 Data, 1 Stop, No Parity, Baud rate: 9600.

Попробуйте вставить в начале ( например перед delay_ms(500); ) строчку printf(" Hellow");. Если не выведет на экран, то ковыряйте настройки терминалки.

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

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

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

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

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

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

писал слово Hello. выводит в терминал без вопросов. он даже фамили код непрочитывает чтобы зайти в if. может контроллер уже шмякнулся.... PORTA уже неработает выжег его 12вольтами

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

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

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

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

Почему порт А ? У вас в настройках порт D и bit7.

.equ __w1_port=0x12 ;PORTD

.equ __w1_bit=7

В диповском корпусе это 21 нога.

Или вы весь порт А уже убили, теперь D используете,ну тада возможно все, когда пол проца жмякнуты....

А просто этой ногой пошевелить получается?

Ну а если все таки нога убилась, то попробуйте в конфигураторе начального кода назначить следующую ногу. ))

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

Ну чудес не бывает. Значит проц дохлый.

А матрикс у вас точно второй , всего три клемы ? Не MATRIX II EH ?

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

взял atmega8 переделал прогу для нее.... повесил подтягивающий резистор на 1K Om. импульсы стали ровные.... но все равно собака не считывает код :angry:

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

К сожалению мы не пересекаемся по процессорам. Я попробовал на atmega8535, atmega88, atmega168, atmega162, те что были. На всех отлично пашет.

Я подтяжку делаю 30 ком. Присылайте весь проект, мне кажется, что-то в настройках все таки.

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

вот проект полностью. частоту понижал до 4МГц все также. судя по картинке с осцила приемник передал процу серийный номер

prj.rar

post-85231-0-50586700-1346539325_thumb.png

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

попробовал простым ключем все прочитал нормально.....(((( блин ну неужели 2 покупаю приемник и он нерабочий..... а по осцилограмме видно же что приемник отвечает

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

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

Остается блок питания и провода. Блок питания постоянка 12 вольт, не импульсный? Провода не длинные?

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

Короче программу нужно изменить.

В место-

#define SEARCH_ROM 0xF0

написать-

#define READ_ROM 0x33

В строке-

unsigned char i,j,devices;

убрать ,devices.

Ниже добавить-

unsigned int n;

В место вашего кода напишите-

w1_init();

while (1)

{

delay_ms(500);

if(w1_init())

{

w1_write(0x33);

for(i=0;i<8;i++)rom_code[0] = w1_read();

}

for (j=1;j<=6;j++)

{n++;printf(" %02X",rom_code[0][j]); }

printf("\n\r");

};

}

Остальные настройки не трогаем и все будет норм. ))

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

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

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

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

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

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

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

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

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

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

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