Mega8 -- Читалка iButton DS1990A

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
spq
Открыл глаза
Аватара пользователя
Сообщения: 47
Зарегистрирован: Чт ноя 29, 2007 22:22:40

Сообщение spq »

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

Пытаюсь сделать читалку ключей iButton.
Собрал девайс:
Mega8 + LCD для вывода
Подключил к PB3 резистор на 5.1 кОм, к нему и земле цепляю таблетку...

Девайс говорит, что ничего не найдено...

Вот код в CVAVR:

Код: Выделить всё

#asm
    .equ __w1_port=0x18 ;PORTB
    .equ __w1_bit=3 ;pin 3

    .equ __lcd_port=0x12 ;PORTD
#endasm

#include <1wire>
#include <mega8>
#include <stdio>
#include <lcd>

#define SEARCH_ROM 0xF0

main()
{
unsigned char devices;
unsigned char buf[8];

    lcd_init(8);

    // detect how many 1 Wire devices are present on the bus
    devices=w1_search(SEARCH_ROM,&rom_code[0,0]);

    // output
    sprintf(buf,"search..\n%u found",devices);
    lcd_puts(buf); 
}
В Proteus'e есть пример такого устройства: \VSM for AVR\One-Wire\NETWORK. Он работает.

А у меня не работает :)

Код: Выделить всё

search..
0 found
Вопрос -- в чем может быть причина?
Критично ли то, что я использовал резистор на 5.1 кОм вместо 4.7 кОм, как написано в примере?
Что есть PULLUP резистор (В примере используется такой. При попытке поставить обычный, девайс в протеусе не работает...)? (поискал в гугле, понял, что это обыкновенный резистор, просто "подтянутый" к питанию. А PULLDOWN -- к земле.) Или я не прав?
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
spq
Открыл глаза
Аватара пользователя
Сообщения: 47
Зарегистрирован: Чт ноя 29, 2007 22:22:40

Сообщение spq »

Тогда в чем может быть проблема?..
В протеусе работает, а это один его примеров, соответстенно должен быть проверен не раз, у меня не работет... :(
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
spq
Открыл глаза
Аватара пользователя
Сообщения: 47
Зарегистрирован: Чт ноя 29, 2007 22:22:40

Сообщение spq »

Упс...
:roll:
придется завтра опять идти за новой мегой...
Реклама
Нашел транзистор. Понюхал.
Сообщения: 190
Зарегистрирован: Пн сен 25, 2006 17:47:10

Сообщение IRF840 »

А какой смысл "бодания"?Если учеба по МК, то понятно, а если сделать устройство - все уже есть http://radiokot.ru/lab/controller/16/ .
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 534
Зарегистрирован: Пн янв 16, 2006 08:00:17
Откуда: Иркутск

Сообщение Mamonth »

1. Почитай статьи что выложены здесь на сайте по 1-wire
2. Проверь соответствие частот, которые ты указал в кодевижине и в протеусе.
3. Проверь настройки портов ввода-вывода
4. Проверь подключение
5. Посмотри логическим анализатором или осциллографом на выводе МК есть ли генерация вообще. Замечено было уже пару раз что иногда глючит Кодевижн и надо пересобирать проект с нуля. А затем и собрать все заново в Протеусе. Причем, пересобранный проект ничем не отличался от исходного, но работал. )
Today fine night...
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 375
Зарегистрирован: Вс мар 04, 2007 13:14:25
Откуда: Украина

Сообщение Krik99 »

Вот я писал программу для чтения таблеток IButton

Код: Выделить всё

#include <mega8>   
#include <delay>
#asm
        .equ __w1_port=0x15; PORTC
        .equ __w1_bit=3
#endasm  
#asm
    .equ __lcd_port=0x18
#endasm
#include <lcd>
#include <1wire>
#include <stdio>
#define DS1990_FAMILY_CODE 1
char lcd_buffer[33];
unsigned char rom_code[8,9];
void main(void)
{
unsigned char j,a,b,c,devices;
lcd_init(16); 
lcd_gotoxy(0,0);
while(1)
   {    
   devices=w1_search(0xf0,&rom_code[0,0]); 
        for (j=1;j<=6;j++){  
        a=rom_code[0,1];
        b=rom_code[0,2];
        c=rom_code[0,3]; 
        }           
        sprintf(lcd_buffer,"CODE: %02X%02X%02X \nDetected: %02X",a,b,c,devices);  
          lcd_clear();
          lcd_puts(lcd_buffer);
          delay_ms(500);   
   }      
}
Может код и не совершенин, но кто захочет, тот и подправит... Проверял в протеусе, всё работает. :)
Надо купить пару и поигратся...
Изображение
Контактная информация:
spq
Открыл глаза
Аватара пользователя
Сообщения: 47
Зарегистрирован: Чт ноя 29, 2007 22:22:40

Сообщение spq »

Мое тоже в протеусе работает.
И в действительности теперь, кстати, тоже :)
Mamonth писал(а):2. Проверь соответствие частот, которые ты указал в кодевижине и в протеусе.
Именно в этом была проблема. Но не в протеусе, он-то хавал за милу душу, а в моей прошивке.
В свойствах проекта в CVAVR была установлена другая частота :)
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»