Мелкие вопросы по МК и ПЛИС.
Re: Мелкие вопросы по МК и ПЛИС.
Добрый день, кто подскажет какие галочки нужно поставить в PonyProg для ATMEGA8A если автор прошивки указал,что для Avreal должны быть "Ext = 0xFF; High = 0xDD; Lo = 0xFF. Чуть что есть фьюз доктор - можно ошибиться =)
Re: Мелкие вопросы по МК и ПЛИС.
Можете все сделать сами пользуясь http://fusecalc.mirmk.net/ На значение Ext не обращайте внимания. Поиском по Гуглу можно найти еще несколько версий того же предмета...Drinker писал(а):Добрый день, кто подскажет какие галочки нужно поставить в PonyProg для ATMEGA8A если автор прошивки указал,что для Avreal должны быть "Ext = 0xFF; High = 0xDD; Lo = 0xFF.
С уважением,
Виктор.
Виктор.
Re: Мелкие вопросы по МК и ПЛИС.
Ну у меня вышло галки на SPIEN и BOOTSZ0, верно?
Re: Мелкие вопросы по МК и ПЛИС.
Доброго вечера!
Вопрос по УГО микроконтроллеров. Какой правильный порядок выводов (в т.ч. питания) должен быть по ГОСТам?
Вопрос по УГО микроконтроллеров. Какой правильный порядок выводов (в т.ч. питания) должен быть по ГОСТам?
Re: Мелкие вопросы по МК и ПЛИС.
как известно у AVR есть 32 РОН
значит я могу в своей проге создать только 32 переменные ?
значит я могу в своей проге создать только 32 переменные ?
Tell Me The Truth
- zero648
- Вымогатель припоя
- Сообщения: 650
- Зарегистрирован: Пн июн 18, 2012 12:01:04
- Откуда: Челябинская область, Копейск
Re: Мелкие вопросы по МК и ПЛИС.
FreshMan писал(а):как известно у AVR есть 32 РОН
значит я могу в своей проге создать только 32 переменные ?
Ешо в оперативке можно целую кучу переменных создать, когда оперативка кончится тогда всё
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Мелкие вопросы по МК и ПЛИС.
zero648 писал(а):когда оперативка кончится тогда всё
Не все! Можно использовать некоторые неиспользуемые регистры ввода/вывода, например OCR таймеров...
Re: Мелкие вопросы по МК и ПЛИС.
... И не забыть ЕЕРRОМ . Хотя если пмс`ать на С, то фиг с два.
- Леонид Иванович
- Друг Кота
- Сообщения: 4779
- Зарегистрирован: Сб апр 02, 2011 12:40:46
- Откуда: Минск
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Ну если только для редких обращений, а то тормозит да и память быстро убьется.
- Gudd-Head
- Друг Кота
- Сообщения: 20091
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
Никто не отменял внешнюю память 
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Мелкие вопросы по МК и ПЛИС.
Подскажите что за ерунда,подсоединил микроСД и тут же программатор,для проверки вывожу букву 'A' на комп,чтобы смотреть где процесс остановился,при подсоединенном программаторе выводит,если только карта то нет(проблемма наверно в SPI) почему,и надоли устанавливать фьюзы для SPI?
SPCR=0b01011100;
SPSR=0x00;
//ïîäàåì 74 èìïóëüñà
PORTB.2=1;
PORTB.3=1;
for(i=0;i<80;i++)
{
data(0xff)
}
PORTB.2=0;
delay_ms(1);
//CMD0
data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x15);
putchar('b');
while (temp!=0x01)
{temp= SPDR;
data(0xff);
if (i>50)
{data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x15);
i=0;
}
i++;
}
putchar('A');
Спойлер
/íàñòðîéêà SPISPCR=0b01011100;
SPSR=0x00;
//ïîäàåì 74 èìïóëüñà
PORTB.2=1;
PORTB.3=1;
for(i=0;i<80;i++)
{
data(0xff)
}
PORTB.2=0;
delay_ms(1);
//CMD0
data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x15);
putchar('b');
while (temp!=0x01)
{temp= SPDR;
data(0xff);
if (i>50)
{data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x15);
i=0;
}
i++;
}
putchar('A');
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Чет не пойму что это за код?Это в основном цикле или что?
И где включение USART?
Неплохо было бы добавить нормальные комментарии вместо кракозябры.
И где включение USART?
Неплохо было бы добавить нормальные комментарии вместо кракозябры.
Re: Мелкие вопросы по МК и ПЛИС.
Просто я думал дело не в коде)
#include <stdio.h>
#include <mega48.h>
#include <delay.h>
#include <string.h>
#include <io.h>
#include <spi.h>
#define data(x) SPDR=x; while (!( SPSR&(1<<7)));
void main() {
int i,temp;
char array[100] ;
DDRD.2=0;
DDRB=0b11101111;
DDRC=255;
// 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;
// настройка шим
TCCR1A=0b10000001;
TCCR1B=0b00001001;
TIMSK1=0b01000000;
//настройка SPI
SPCR=0b01011100;
SPSR=0x00;
//подаем 74 импульса
PORTB.2=1;
PORTB.3=1;
for(i=0;i<80;i++)
{
data(0xff)
}
PORTB.2=0;
delay_ms(1);
//CMD0
data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x15);
putchar('b');
while (temp!=0x01)
{temp= SPDR;
data(0xff);
if (i>50)
{data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x15);
i=0;
}
i++;
}
putchar('A');
//CMD1
data(0x41);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
while (temp!=0x00)
{temp= SPDR;
data(0xff)
}
putchar('b');
//CMD17 чтение байтов
data(0x52);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
while (temp!=0xfe)
{temp= SPDR;
data(0xff);
putchar(SPDR);
}
while(1){
for (i=0;i<100;i++)
{
data(0xff);
array[i]=SPDR ;
}
for (i=0;i<100;i++)
{
OCR1AL=array[i];
delay_us(1);
putchar(array[i]) ;
}
}
}
кстате в протеусе работает
Спойлер
#define _IO_BITS_DEFINITIONS_#include <stdio.h>
#include <mega48.h>
#include <delay.h>
#include <string.h>
#include <io.h>
#include <spi.h>
#define data(x) SPDR=x; while (!( SPSR&(1<<7)));
void main() {
int i,temp;
char array[100] ;
DDRD.2=0;
DDRB=0b11101111;
DDRC=255;
// 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0x33;
// настройка шим
TCCR1A=0b10000001;
TCCR1B=0b00001001;
TIMSK1=0b01000000;
//настройка SPI
SPCR=0b01011100;
SPSR=0x00;
//подаем 74 импульса
PORTB.2=1;
PORTB.3=1;
for(i=0;i<80;i++)
{
data(0xff)
}
PORTB.2=0;
delay_ms(1);
//CMD0
data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x15);
putchar('b');
while (temp!=0x01)
{temp= SPDR;
data(0xff);
if (i>50)
{data(0x40);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x15);
i=0;
}
i++;
}
putchar('A');
//CMD1
data(0x41);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
while (temp!=0x00)
{temp= SPDR;
data(0xff)
}
putchar('b');
//CMD17 чтение байтов
data(0x52);
data(0x00);
data(0x00);
data(0x00);
data(0x00);
data(0x95);
while (temp!=0xfe)
{temp= SPDR;
data(0xff);
putchar(SPDR);
}
while(1){
for (i=0;i<100;i++)
{
data(0xff);
array[i]=SPDR ;
}
for (i=0;i<100;i++)
{
OCR1AL=array[i];
delay_us(1);
putchar(array[i]) ;
}
}
}
кстате в протеусе работает
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
А вы случайно не забыли дергать ногой slave select?Слышал, что часто на этом запарываются начинающие.В коде я этого не увидел.Карта просто засыпает если этого не делать.
Если вы думаете, что дело не в коде, зачем тогда сюда его кидаете?
Короче код какой то мутный непонятно что там для чего делается.Что значит посылаем 74 импульса?И почему в цикле 80?
Это вы читаете из карты памяти и отправляете на шим так я понял?
объясните как работает этот участок кода
Если вы думаете, что дело не в коде, зачем тогда сюда его кидаете?
Короче код какой то мутный непонятно что там для чего делается.Что значит посылаем 74 импульса?И почему в цикле 80?
Это вы читаете из карты памяти и отправляете на шим так я понял?
объясните как работает этот участок кода
Код: Выделить всё
for (i=0;i<100;i++)
{
SPDR=0xff; while (!( SPSR&(1<<7)));
array[i]=SPDR ;
}
Re: Мелкие вопросы по МК и ПЛИС.
да я отправлял на шим. Я читал что дергать ногой SS необязательно достаточно раз при 74 импульсах(80 на всякий случай)
этот участок работает следующим образом,мы должны отправлять имульсы SCL,чтобы данные поступали в mega,для этого отправляем импульс FF,и принемаем инфу,цикл(while) проверяет кодга передача FF закончится.
{
SPDR=0xff; while (!( SPSR&(1<<7)));
array[i]=SPDR ;
}
этот участок работает следующим образом,мы должны отправлять имульсы SCL,чтобы данные поступали в mega,для этого отправляем импульс FF,и принемаем инфу,цикл(while) проверяет кодга передача FF закончится.
Спойлер
for (i=0;i<100;i++){
SPDR=0xff; while (!( SPSR&(1<<7)));
array[i]=SPDR ;
}
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Так вот вы сами и подписались в своей ошибке.Нужно каждые 74 импульса отправлять, а у вас уже 80 сообщений проходит в каждом сообщении как минимум 8 импульсов это ведь последовательный интерфейс.Карта может так уснуть запросто.
Лучше дергать при каждой отправке.
Поставьте хром, а то такие жесткие ошибки допускаете в орфографии.
Лучше дергать при каждой отправке.
Поставьте хром, а то такие жесткие ошибки допускаете в орфографии.
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
DrHlus писал(а):Вопрос по УГО микроконтроллеров. Какой правильный порядок выводов (в т.ч. питания) должен быть по ГОСТам?
УГО МК не может полностью соответствовать ГОСТ ибо в большинстве случаев выводы двунаправленные. А раз так, то их надо размещать в правой части, в левой части должны быть входы и УГО становится "однобоким". Но для нормоконтроля обычно достаточно и такого отображения(рисунок). Для себя привожу альтернативные функции выводов т.к. именно они чаще используются
- Вложения
-
- mk.JPG
- (125.77 КБ) 1616 скачиваний
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Немного не понял почему если слева входы справа выходы оказался TxD слева, известно, что это передаваемые данные.А SS вроде как используется только когда мега в режиме slave и причем как вход, а нарисована справа.