Мелкие вопросы по МК и ПЛИС.
- Сообщения: 436
- Зарегистрирован: Сб апр 10, 2010 16:46:26
- Реклама
- Сообщения: 27
- Зарегистрирован: Пн ноя 21, 2011 15:41:23
Добрый день, кто подскажет какие галочки нужно поставить в PonyProg для ATMEGA8A если автор прошивки указал,что для Avreal должны быть "Ext = 0xFF; High = 0xDD; Lo = 0xFF. Чуть что есть фьюз доктор - можно ошибиться =)
- Сообщения: 581
- Зарегистрирован: Ср янв 05, 2011 10:03:18
Можете все сделать сами пользуясь http://fusecalc.mirmk.net/ На значение Ext не обращайте внимания. Поиском по Гуглу можно найти еще несколько версий того же предмета...Drinker писал(а):Добрый день, кто подскажет какие галочки нужно поставить в PonyProg для ATMEGA8A если автор прошивки указал,что для Avreal должны быть "Ext = 0xFF; High = 0xDD; Lo = 0xFF.
С уважением,
Виктор.
Виктор.
- Сообщения: 27
- Зарегистрирован: Пн ноя 21, 2011 15:41:23
Доброго вечера!
Вопрос по УГО микроконтроллеров. Какой правильный порядок выводов (в т.ч. питания) должен быть по ГОСТам?
Вопрос по УГО микроконтроллеров. Какой правильный порядок выводов (в т.ч. питания) должен быть по ГОСТам?
- Реклама
как известно у AVR есть 32 РОН
значит я могу в своей проге создать только 32 переменные ?
значит я могу в своей проге создать только 32 переменные ?
Tell Me The Truth
Ешо в оперативке можно целую кучу переменных создать, когда оперативка кончится тогда всёFreshMan писал(а):как известно у AVR есть 32 РОН
значит я могу в своей проге создать только 32 переменные ?
Не все! Можно использовать некоторые неиспользуемые регистры ввода/вывода, например OCR таймеров...zero648 писал(а):когда оперативка кончится тогда всё
Почему фиг?
Код: Выделить всё
__eeprom int Var1;Ну если только для редких обращений, а то тормозит да и память быстро убьется.
Никто не отменял внешнюю память 
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
Подскажите что за ерунда,подсоединил микроСД и тут же программатор,для проверки вывожу букву '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');
Чет не пойму что это за код?Это в основном цикле или что?
И где включение USART?
Неплохо было бы добавить нормальные комментарии вместо кракозябры.
И где включение USART?
Неплохо было бы добавить нормальные комментарии вместо кракозябры.
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
Просто я думал дело не в коде)
#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=SPDR ;
}
for (i=0;i<100;i++)
{
OCR1AL=array;
delay_us(1);
putchar(array) ;
}
}
}
кстате в протеусе работает
Спойлер
#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=SPDR ;
}
for (i=0;i<100;i++)
{
OCR1AL=array;
delay_us(1);
putchar(array) ;
}
}
}
кстате в протеусе работает
А вы случайно не забыли дергать ногой slave select?Слышал, что часто на этом запарываются начинающие.В коде я этого не увидел.Карта просто засыпает если этого не делать.
Если вы думаете, что дело не в коде, зачем тогда сюда его кидаете?
Короче код какой то мутный непонятно что там для чего делается.Что значит посылаем 74 импульса?И почему в цикле 80?
Это вы читаете из карты памяти и отправляете на шим так я понял?
объясните как работает этот участок кода
Если вы думаете, что дело не в коде, зачем тогда сюда его кидаете?
Короче код какой то мутный непонятно что там для чего делается.Что значит посылаем 74 импульса?И почему в цикле 80?
Это вы читаете из карты памяти и отправляете на шим так я понял?
объясните как работает этот участок кода
Код: Выделить всё
for (i=0;i<100;i++)
{
SPDR=0xff; while (!( SPSR&(1<<7)));
array[i]=SPDR ;
}
- Сообщения: 303
- Зарегистрирован: Сб янв 08, 2011 13:48:41
да я отправлял на шим. Я читал что дергать ногой SS необязательно достаточно раз при 74 импульсах(80 на всякий случай)
этот участок работает следующим образом,мы должны отправлять имульсы SCL,чтобы данные поступали в mega,для этого отправляем импульс FF,и принемаем инфу,цикл(while) проверяет кодга передача FF закончится.
{
SPDR=0xff; while (!( SPSR&(1<<7)));
array=SPDR ;
}
этот участок работает следующим образом,мы должны отправлять имульсы SCL,чтобы данные поступали в mega,для этого отправляем импульс FF,и принемаем инфу,цикл(while) проверяет кодга передача FF закончится.
Спойлер
for (i=0;i<100;i++){
SPDR=0xff; while (!( SPSR&(1<<7)));
array=SPDR ;
}
Так вот вы сами и подписались в своей ошибке.Нужно каждые 74 импульса отправлять, а у вас уже 80 сообщений проходит в каждом сообщении как минимум 8 импульсов это ведь последовательный интерфейс.Карта может так уснуть запросто.
Лучше дергать при каждой отправке.
Поставьте хром, а то такие жесткие ошибки допускаете в орфографии.
Лучше дергать при каждой отправке.
Поставьте хром, а то такие жесткие ошибки допускаете в орфографии.
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
УГО МК не может полностью соответствовать ГОСТ ибо в большинстве случаев выводы двунаправленные. А раз так, то их надо размещать в правой части, в левой части должны быть входы и УГО становится "однобоким". Но для нормоконтроля обычно достаточно и такого отображения(рисунок). Для себя привожу альтернативные функции выводов т.к. именно они чаще используютсяDrHlus писал(а):Вопрос по УГО микроконтроллеров. Какой правильный порядок выводов (в т.ч. питания) должен быть по ГОСТам?
- Вложения
-
- mk.JPG
- (125.77 КБ) 1617 скачиваний
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Немного не понял почему если слева входы справа выходы оказался TxD слева, известно, что это передаваемые данные.А SS вроде как используется только когда мега в режиме slave и причем как вход, а нарисована справа.


