Наши выпускают кварцы (НС-49U) L и S — с нагрузочной ёмкостью и без неё. Какой мне нужен для тактирования МК и почему?
Мелкие вопросы по МК и ПЛИС.
Чой-то я туплю...
Наши выпускают кварцы (НС-49U) L и S — с нагрузочной ёмкостью и без неё. Какой мне нужен для тактирования МК и почему?
Наши выпускают кварцы (НС-49U) L и S — с нагрузочной ёмкостью и без неё. Какой мне нужен для тактирования МК и почему?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Реклама
- Сообщения: 436
- Зарегистрирован: Сб апр 10, 2010 16:46:26
Нашел вот старую тему на хоботе. В принципе, должны работать оба, хотя для те же PICов, например, изготовитель рекомендует с параллельным резонансом. В случае применения кварца с последовательным резонансом, генерируемая частота может отличаться от паспортной. Я сейчас использую в основном Geyer-овские кварцы KX-3H, KX-K и KX-9A.
если кто либо из многоуважаемой публики юзает mikroC PRO for AVR подскажите пожалуйста: имеется ли в данной проге генератор кода ?
Tell Me The Truth
В общем, ничего не почерпнул. Тогда другой вопрос: импортные кварцы — больше похожи на S или L?murzila писал(а):Нашел вот старую тему на хоботе.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Реклама
- Сообщения: 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 ;
}


