Страница 159 из 280

Re: Proteus: вопросы и ответы

Добавлено: Чт апр 25, 2013 00:02:42
alex1126
Что то с таймерами у меня не получается. Вообще задача:
Надо для атмеги16 задать внешний кварц часовой и каждую секунду дрыгать ножкой.

Берем атмегу. К XTAL1 и XTAL2 подключаем кварц, указываем там частоту 32768. Заходим в свойства МК, указываем CKSEL 1001, частоту указываем 32768. С "железом" все.

ISR( TIMER0_OVF_vect ){
lcd_dat('g');
if( PINC & ( 1 << PC0 ) ) {
PORTC &= ~( 1 << PC0 );
}
else {
PORTC |= ( 1 << PC0 );
}
}

...

TCCR0 = (1<<CS02)|(0<<CS01)|(0<<CS00);
TIMSK |= (1<<TOIE0); // разрешаем прерывание по переполнению таймера
sei();
по идее частота 32768, делитель 256, как раз 8 бит получается, т.е. переполнение раз в секунду. Но при симуляции нога дергается раз в две секунды. Где накосячил?

Re: Proteus: вопросы и ответы

Добавлено: Чт апр 25, 2013 00:39:08
alex1126
кажется догоняю...... 32768/256=10000000b. Но переполнение произойдет после 11111111b. т.е. получаем те самые две секунды.....

Re: Proteus: вопросы и ответы

Добавлено: Чт апр 25, 2013 11:55:51
a_skr
зачем по переполнению? можно по совпадению:

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

#include <avr/io.h>
#include <avr/interrupt.h>

ISR(SIG_OUTPUT_COMPARE0)
{
  PORTC ^= 1;
}

void main(void)
{
  DDRC = 1;
  OCR0 = 31; // timer compare register
  TCCR0 = (1<<WGM01) | // CTC
          (1<<CS02) | (1<<CS00); // 32768/1024=32, timer start
  TIMSK = (1<<OCIE0); // compare match interrupt enable
  sei(); // global interrupt enable
  while(1) {};
}

Re: Proteus: вопросы и ответы

Добавлено: Чт апр 25, 2013 21:20:40
Alex-DJ
Скажите пожалуйста,где можно взять проект под протеус демонстрирующий работу SD-card,запись байта и считывание байта? Документации и все статьи почти про карты прочитал,но суть её работы пока не понятен.

Re: Proteus: вопросы и ответы

Добавлено: Чт апр 25, 2013 21:52:54
ChipKiller
где можно взять проект под протеус
.. зачем PROTEUS? смотрите здесь или здесь

Re: Proteus: вопросы и ответы

Добавлено: Чт апр 25, 2013 22:20:43
Alex-DJ
ChipKiller, читал я это всё,не доходит до меня.... :shock: Хочется пощупать работающий вариант.Нпример неясно с командами:
команда CMD0 0x40 это вроде один байт но.....
После того как вы вставили карту в слот вам необходимо проинициализировать карту.
-при высоком уровне сигнала CS послать на карту 10 раз данные 0xFF
-выждать несколько милисекунд
-послать команду CMD0 ( 0x40, 0x0, 0x0, 0x0, 0x0, 0x95 ) на что карта должна ответить 0x01
-послать команду CMD1 на что карта должна ответить 0x00 (если необходимо этот этап нужно повторять несколько раз, пока не дождетесь нужного ответа от карты)
-послать команду CMD16 это мы устанавливаем размер блока обычно это 512 байт
Но почему её пишут как 6 байтов,откуда остальные 5 байтов появились?

В другом источнике:
- достаточно 74 раза дернуть CLK (из 0 в 1)

- посылаем 1 байт 0xFF
xCS в "0"
далее саму команду CMD0
0x40, 0x00, 0x00, 0x00, 0x00, 0x95
читаем и ждем пока не придет ответ от карты 0x01

- xCS в "1"
посылаем 1 байт 0xFF
xCS в "0"
далее саму команду CMD1
0x41, 0x00, 0x00, 0x00, 0x00, 0xFF

читаем и ждем пока не придет ответ от карты 0x00

- xCS в "1"
посылаем 1 байт 0xFF
и т.д.
Вроде команда #define CMD1 0x41 // brings card out of idle state
тоже один байт,но откуда ещё 5 байтов?

Re: Proteus: вопросы и ответы

Добавлено: Чт апр 25, 2013 22:25:28
ChipKiller
Но почему её пишут как 6 байтов,откуда остальные 5 байтов появились?
... если это вопрос про CMD0
0x40 - код команды
0x0, 0x0, 0x0, 0x0 - параметр
0x95 - CRC

Re: Proteus: вопросы и ответы

Добавлено: Чт апр 25, 2013 22:30:10
Alex-DJ
Вообщем остаюсь при своём желании иметь демонстрационный проект в протеусе,поясняющий работу карты,запись байта и считывание байта.Если таковой имеется в природе буду благодарен если ткнёте носом в ссылочку.Поиски по просторам тырнета пока не увенчались успехом.

Re: Proteus: вопросы и ответы

Добавлено: Чт апр 25, 2013 22:31:20
Murka

Re: Proteus: вопросы и ответы

Добавлено: Чт апр 25, 2013 22:35:41
Alex-DJ
я это уже сто раз перечитал ... вот
Изображение
вот покажите мне там что помимо самой команды 0x40 нужно посылать 0x0, 0x0, 0x0, 0x0 - параметр
0x95 - CRC
Обмен начинается с того, что МК выставляет сигнал 0 на xCS. Сначала посылаем 6 байт команды - последовательно пишем в вышеуказанный SSPBUF нужные байты, не забывая перед записью очередного дожидаться окончания передачи предыдущего (бит SSPSTAT,BF). Далее нужно дождаться ответа карты: пишем в SPI байт 0xFF и по окончании каждой передачи (контролируем SSPSTAT,BF) читаем принятое в SSPBUF. Первый байт, отличный от 0xFF, будет первым байтом ответа карточки (а для рассматриваемых ниже команд ответ всегда состоит из 1 байта).
ЭТО НАПИСАНО ДЛЯ АКАДЕМИКОВ,а мне нужно на человеческом языке.

Re: Proteus: вопросы и ответы

Добавлено: Чт апр 25, 2013 22:52:19
ChipKiller
буду благодарен если ткнёте носом в ссылочку
...куда уж тыкать дальше рабочий пример - пару лет назад проверял на AVR

Re: Proteus: вопросы и ответы

Добавлено: Чт апр 25, 2013 22:57:03
Alex-DJ
ПФФФФ ( я вам сколько постов объясняю что мне нужен работающий макет в протеусе,а вы мне эту абракадабру:
Ниже приведён код программы на СИ (компилятор CC5x):
// Чтение файла из 64 Мб MMC-памяти под FAT16
// Последовательный интерфейс (9600,n,8,1) на 20MHz
// Компилятор CC5x

#include
#pragma config |= 0b.11.111101.11.00.10
#pragma bit CS @ PORTC.2 // Выход для выбора микросхемы CS

uns16 AL, BytN,ByteLes,Claster,FAT,Verz,Dat; // Объявляем переменные
char AH ;

#pragma origin 100
Мне бы пока на элементарном работающем МАКЕТЕ попробовать.

Ай нид хелп ))

Добавлено: Пт апр 26, 2013 10:14:07
denism300
Решил смоделировать этот проект в Proteus, вроде как почти все работает на первый взгляд, но есть 2 ньюанса:
1. Не отображаются показания с датчиков температуры
2. Какая-то беда с кодировкой символов

Помогите разобраться. Файл проекта во вложении. Спасибо заранее

Re: Ай нид хелп ))

Добавлено: Пт апр 26, 2013 11:46:24
Soir
denism300 писал(а):Решил смоделировать этот проект в Proteus, вроде как почти все работает на первый взгляд, но есть 2 ньюанса:
1. Не отображаются показания с датчиков температуры
2. Какая-то беда с кодировкой символов
1. На датчики (и не только) надо подать питание. И установить им разные серийные номера.
2. Для кириллицы нужен файл LCDALPHA.DLL (во вложении). Поместите его в папку с проектом или в папку MODELS с установленной программой.
3. Есть и другие ошибки, читайте предупреждения.
Во вложении слегка поправленный проект.

Re: Proteus: вопросы и ответы

Добавлено: Пт апр 26, 2013 22:02:16
poloptv
Доброго времени суток. Если я правильно понял то эта тема посвящена протеусу и здесь есть люди которые хорошо разбираются в этой программе. Так вот я подумал может кто-нибудь из вас поможет мне. Вот проект:
http://cxema.my1.ru/publ/skhemy_ustrojs ... 9-1-0-3974
есть люди которые могли бы собрать эту схему в протеус? Просто я с протеусам не сильно дружу пытаюсь разобраться но как то тяжко очень так вот решил попросить помощи у профи. Помогите плиз.

Re: Proteus: вопросы и ответы

Добавлено: Вс апр 28, 2013 10:48:40
unalex
poloptv писал(а):может кто-нибудь из вас поможет мне
это из разряда "нарисуйте мне схему, а то мне лень"?

берем детальки, кидаем на поле, тянем связи
в чем сложности?

Re: Proteus: вопросы и ответы

Добавлено: Вс апр 28, 2013 11:28:17
Orion33
— Вы, чего, и конфеты за меня есть будете?
— Ага!
:tea:

Re: Proteus: вопросы и ответы

Добавлено: Вс апр 28, 2013 12:26:06
vitok8
Как быть, если программа написана под LCD MT-16S2D(есть только HEX), а надо работу посмотреть в протеусе? На LM016L не катит(крякозябры). Искал модель LCD MT-16S2D - не нашел. Есть ли выход из этого положения?

Re: Proteus: вопросы и ответы

Добавлено: Вс апр 28, 2013 12:36:02
Soir
vitok8 писал(а):На LM016L не катит(крякозябры). Искал модель LCD MT-16S2D - не нашел.
В предыдущем своем сообщении выкладывал DLL, с ней LM016L должен покатить.

Re: Proteus: вопросы и ответы

Добавлено: Вс апр 28, 2013 12:47:09
vitok8
Я уже пробовал.К сожалению не катит. Это промышленное устройство и в железе на этом индикаторе работает четко.