Перейти к содержанию

Процессор аудиосистемы на ATMEGA8515


Рекомендуемые сообщения

Собрал вполне хорошую аудиосистему. Сейчас программирую микросхему процессора. Решился делать на ATMEGA8515 под неё собственно и делал разводку на плате. Впаял гнездо для микросхемы, напрямую решил не паять лучше пусть будет съёмная да и прошиваю я её отдельно программатором. Перед работой с данной микросхемой глянул кое какие данные в даташите. От туда же понял что для данной микросхемы обязательно нужно установить кварц. Так как встроенного у неё нет. Ну не беда поставил на самой плате на 8 MHz при прошивке на программаторе подкидывал кварц на 4 MHz. Возможно где то нужно фьюзы перенастроить я их не трогал оставил всё как есть по умолчанию. Может нужно сделать какую - нибудь правку в коде прошивки. Код прошивки тоже прилагаю:

/*
 * PROCESSOR_ATMEGA8515.c
 * Created: 03.05.2022
 *  Author: tifaso
 */ 

#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

void buttons(void);

volatile uint8_t color_music=1;
volatile uint8_t menu=1;
volatile uint8_t bat=0;
volatile uint8_t power=0;

ISR(TIMER1_OVF_vect)
{
	buttons();
}

int main(void)
{
	DDRB = 0b00000000;
	DDRD = 0b11111110;
	DDRC = 0b11111111;
	DDRA = 0b10000000;
	DDRE = 0b110;
	
	PORTB = 0b00000000;
	PORTD = 0b00000000;
	PORTC = 0b00000000;
	PORTA = 0b00000000;
	PORTE = 0b000;
	
	TIMSK |= (1<<2);
	TCCR1B = 0b00000001;
	TCNT1 = 54613;
	sei();
	
    while(1)
    {
        if (color_music == 1)
        {
			PORTD |= (1<<4);
        } 
        else
        {
			PORTD &= ~(1<<4);
        }
		if (~PIND & (1<<0))
		{
			PORTD |= (1<<7);
			PORTD &= ~(1<<6);
		} 
		else
		{
			PORTD &= ~(1<<7);
			PORTD |= (1<<6);
		}
		PORTD &= ~(1<<5);
    }
}

#define BUTTONS_PORTB_MASK (0b11111111)
#define BUTTONS_PORTB_PINS (PINB)
#define BUTTONS_PORTA_MASK (0b01111111)
#define BUTTONS_PORTA_PINS (PINA)
#define BUTTONS_PORTE_MASK (0b001)
#define BUTTONS_PORTE_PINS (PINE)
void buttons(void)
{
	static uint8_t old_buttons_PORTB = 0;
	static uint8_t old_buttons_PORTA = 0;
	static uint8_t old_buttons_PORTE = 0;
	uint8_t new_buttons_PORTB = ((~BUTTONS_PORTB_PINS) & BUTTONS_PORTB_MASK);
	uint8_t new_buttons_PORTA = ((~BUTTONS_PORTA_PINS) & BUTTONS_PORTA_MASK);
	uint8_t new_buttons_PORTE = ((~BUTTONS_PORTE_PINS) & BUTTONS_PORTE_MASK);
	uint8_t act_buttons_PORTB = 0;
	uint8_t act_buttons_PORTA = 0;
	uint8_t act_buttons_PORTE = 0;
	if (old_buttons_PORTB != new_buttons_PORTB)
	{
		act_buttons_PORTB = (((~old_buttons_PORTB) & BUTTONS_PORTB_MASK) & (old_buttons_PORTB ^ new_buttons_PORTB));
		old_buttons_PORTB = new_buttons_PORTB;
	}
	if (old_buttons_PORTA != new_buttons_PORTA)
	{
		act_buttons_PORTA = (((~old_buttons_PORTA) & BUTTONS_PORTA_MASK) & (old_buttons_PORTA ^ new_buttons_PORTA));
		old_buttons_PORTA = new_buttons_PORTA;
	}
	if (old_buttons_PORTE != new_buttons_PORTE)
	{
		act_buttons_PORTE = (((~old_buttons_PORTE) & BUTTONS_PORTE_MASK) & (old_buttons_PORTE ^ new_buttons_PORTE));
		old_buttons_PORTE = new_buttons_PORTE;
	}
	if (act_buttons_PORTB & (1<<0))
	{
		//Кнопка воспроизведения МР3 плеера
		PORTD |= (1<<5);
		PORTC |= (1<<0);
		_delay_ms(30);
		PORTC &= ~(1<<0);
	}
	if (act_buttons_PORTB & (1<<1))
	{
		//Кнопка цикличность МР3 плеера
		PORTD |= (1<<5);
		PORTC |= (1<<1);
		_delay_ms(30);
		PORTC &= ~(1<<1);
	}
	if (act_buttons_PORTB & (1<<2))
	{
		//Кнопка предыдущий МР3 плеера
		PORTD |= (1<<5);
		PORTC |= (1<<2);
		_delay_ms(30);
		PORTC &= ~(1<<2);
	}
	if (act_buttons_PORTB & (1<<3))
	{
		//Кнопка следующий МР3 плеера
		PORTD |= (1<<5);
		PORTC |= (1<<3);
		_delay_ms(30);
		PORTC &= ~(1<<3);
	}
	if (act_buttons_PORTB & (1<<4))
	{
		//Кнопка предыдущий канал FM приёмника
		while(PINB & (1<<4))
		{
			PORTD |= (1<<5);
			PORTC |= (1<<4);
			_delay_ms(30);
			PORTC &= ~(1<<4);
			_delay_ms(30);
		}
	}
	if (act_buttons_PORTB & (1<<5))
	{
		//Кнопка следующий канал FM приёмника
		while(PINB & (1<<5))
		{
			PORTD |= (1<<5);
			PORTC |= (1<<5);
			_delay_ms(30);
			PORTC &= ~(1<<5);
			_delay_ms(30);
		}
	}
	if (act_buttons_PORTB & (1<<6))
	{
		//Кнопка звук убавить FM приёмника
		while(PINB & (1<<6))
		{
			PORTD |= (1<<5);
			PORTC |= (1<<6);
			_delay_ms(30);
			PORTC &= ~(1<<6);
			_delay_ms(30);
		}
	}
	if (act_buttons_PORTB & (1<<7))
	{
		//Кнопка звук прибавить FM приёмника
		while(PINB & (1<<7))
		{
			PORTD |= (1<<5);
			PORTC |= (1<<7);
			_delay_ms(30);
			PORTC &= ~(1<<7);
			_delay_ms(30);
		}
	}
	if (act_buttons_PORTA & (1<<0))
	{
		//Кнопка включения цветомузыки
		PORTD |= (1<<5);
		if (PIND)
		{
			PORTD &= ~(1<<1);
			color_music=0;
		} 
		else
		{
			PORTD |= (1<<1);
			color_music=1;
		}
	}
	if (act_buttons_PORTA & (1<<1))
	{
		//Кнопка нормального режима
		PORTD |= (1<<5);
		PORTD &= ~(1<<2);
		PORTD |= (1<<3);
	}
	if (act_buttons_PORTA & (1<<2))
	{
		//Кнопка режима столбик
		PORTD |= (1<<5);
		PORTD |= ((1<<2)|(1<<3));
	}
	if (act_buttons_PORTA & (1<<3))
	{
		//Кнопка режима точка
		PORTD |= (1<<5);
		PORTD |= (1<<2);
		PORTD &= ~(1<<3);
	}
	if (act_buttons_PORTA & (1<<4))
	{
		//Кнопка переключателя внешнего входа
	}
	if (act_buttons_PORTA & (1<<5))
	{
		//Кнопка переключателя входов FM / МР3 
		PORTD |= (1<<5);
		if (PINE)
		{
			PORTE &= ~(1<<2);
			menu=0;
		} 
		else
		{
			PORTE |= (1<<2);
			menu=1;
		}
	}
	if (act_buttons_PORTA & (1<<6))
	{
		//Кнопка включения зарядного
		PORTD |= (1<<5);
		if (PINE)
		{
			PORTE &= ~(1<<1);
			bat=0;
		} 
		else
		{
			PORTE |= (1<<1);
			bat=1;
		}
	}
	if (act_buttons_PORTE & (1<<0))
	{
		//Кнопка включения
		PORTD |= (1<<5);
		if (PINA)
		{
			PORTA &= ~(1<<7);
			power=0;
		} 
		else
		{
			PORTA |= (1<<7);
			power=1;
		}
	}
}

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

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

44 минуты назад, tifaso сказал:

...Перед работой с данной микросхемой глянул кое какие данные в даташите. От туда же понял что для данной микросхемы обязательно нужно установить кварц. Так как встроенного у неё нет.

Где Вы такое вычитали?

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

4 минуты назад, tifaso сказал:

почему эта микросхема не стартует

Откуда такая уверенность? Для начала, в программе измените частоту на 1 МГц и попробуйте.

Ссылка на комментарий
Поделиться на другие сайты

Слушайте, мне это напомнило прапорщика Задова - зачем заниматься мазохизмом, установите Протеус, потратьте немного времени на настройку - ИМНО 2 - 3 часа, и моделируйте Ваши хотелки.

Ведь никто не будет Ваши коды в виде

* PROCESSOR_ATMEGA8515.c * Created: 03.05.2022 * Author: tifaso */ #define F_CPU 8000000UL

собирать и тестировать.

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, tifaso сказал:

Может нужно сделать какую - нибудь правку

Код прошивки тоже прилагаю:

Как в бородатом анекдоте:
"- Понятно, что курил режиссер. Осталось выяснить у какого дилера он это брал и сколько это стоит?!..."
это гениальный полет мысли даже комментировать адекватно  вряд ли получится.
Вот объясните , накой  нужно было создавать прерывание по таймеру, делать в нем виртуальную клавиатуру, что бы там же в прерывании опрашивать выводы на прямую в бесконечных циклах и вгонять МК в ступор делаями = гениальные решения...
 

Ссылка на комментарий
Поделиться на другие сайты

@Volodya_Tver Так никто и не говорит собирать и тестировать потому как в этом коде я уверен потому как в 8 меге и в 16 меге аналогичные коды работали. Я больше чем уверен что проблема где то в самой микросхеме. Ну а с протеусом и пытаться даже нечего он тупо не работает у меня на компе.

Но есть идея сделать тестовый стенд в железе для проверки микросхем. Идея уже была давно, но всё руки до неё не дойдут.

1 минуту назад, IMXO сказал:

Вот объясните , накой  нужно было создавать прерывание по таймеру, делать в нем виртуальную клавиатуру, что бы там же в прерывании опрашивать выводы на прямую в бесконечных циклах и вгонять МК в ступор делаями = гениальные решения...

Там разве что на четырёх кнопках сделан цикл на то что пока нажата кнопка действие должно повторятся, а при отпускании мы выходим из цикла и всё. Но на микросхему то это никак не должно отразится. В противном случае я даже не представляю как такое можно реализовать.

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

@IMXO Я тут начинаю в голове прикидывать вполне рабочий алгоритм вместо цикла. Если создать переменные и менять их по нажатию кнопки, а уже в самом бесконечном цикле программы поставить проверку переменных и действия этих кнопок с возвратом в конце переменной в ноль. Так что пока переменная в единице код выполняется. Кнопку отпустили переменная обнулилась и мы вышли из этого условия.

Только я всё равно не пойму как это влияет на микросхему. Если даже она включится не желает. То есть не отзывается на кнопку включения. И получается то что до выполнения этого кода я ещё не дошёл. Или тут всё в порядке написания.

@snn_krs Где это написано то? Инфы по даташиту я не нашёл по прерываниям и тупо брал код прерываний от 8 меги. Возможно в этом то и есть проблема.

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, tifaso сказал:

Если даже она включится не желает.

нормальные люди для проверки МК  заливают элементарный ногадрыг Hello World , или это не наш случай...

Ссылка на комментарий
Поделиться на другие сайты

14 часов назад, tifaso сказал:

эта микросхема не стартует.

Кто сказал, что она не стартует? Напиши тупое шевеление каким-нибудь выводом и проверь МК.

 

15 часов назад, tifaso сказал:

Перед работой с данной микросхемой глянул кое какие данные в даташите. От туда же понял что для данной микросхемы обязательно нужно установить кварц. Так как встроенного у неё нет.

Это какие? Название МК? Ибо достаточно было посмотреть на ПЕРВУЮ страницу даташита чтобы убедиться в том, что от других AVR он не отличается в плане тактирования:

image.png.65d6fd83006ce6790c5732efba408e39.png

 

11 часов назад, tifaso сказал:

Где это написано то?

В даташите, только его читать надо.

 

11 часов назад, tifaso сказал:

Инфы по даташиту я не нашёл по прерываниям и тупо брал код прерываний от 8 меги.

Тупо брал, тупо и получилось. А даташит ты даже не смотрел:image.png.c746d93f636333c0ff5b04942ac72d81.png

 

И на будущее, используй МК с нормальным отладчиком, PIC, STM, C8051 и т.п. дабы не сидеть и не гадать, что и где не работает.

Ссылка на комментарий
Поделиться на другие сайты

@BARS_ Я использую только микросхемы ATMEL потому как с другими нет возможности работать и то только то что доступно мне в нашем местном магазине. И не нужно мне тут пытаться навязать инет магазины всё равно не пойду туда.

Так переправил код прошивки. Сейчас всё получилось так.

/*
 * PROCESSOR_ATMEGA8515.c
 * Created: 03.05.2022
 *  Author: tifaso
 */ 

#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

void buttons(void);

volatile uint8_t color_music=1;
volatile uint8_t menu=1;
volatile uint8_t bat=0;
volatile uint8_t power=0;
volatile uint8_t vol_l=0;
volatile uint8_t vol_r=0;
volatile uint8_t chanel_l=0;
volatile uint8_t chanel_r=0;

ISR(TIMER1_OVF_vect)
{
	buttons();
}

int main(void)
{
	DDRB = 0b00000000;
	DDRD = 0b11111110;
	DDRC = 0b11111111;
	DDRA = 0b10000000;
	DDRE = 0b00000110;
	
	PORTB = 0b00000000;
	PORTD = 0b00000000;
	PORTC = 0b00000000;
	PORTA = 0b00000000;
	PORTE = 0b00000000;
	
	TIMSK |= (1<<7);
	TCCR1B = 0b00000001;
	TCNT1 = 54613;
	sei();
	
    while(1)
    {
        if (color_music == 1)
        {
			PORTD |= (1<<4);
        } 
        else
        {
			PORTD &= ~(1<<4);
        }
		if (~PIND & (1<<0))
		{
			PORTD |= (1<<7);
			PORTD &= ~(1<<6);
		} 
		else
		{
			PORTD &= ~(1<<7);
			PORTD |= (1<<6);
		}
		if (chanel_l == 1)
		{
			PORTC |= (1<<4);
			_delay_ms(30);
			PORTC &= ~(1<<4);
			_delay_ms(30);
			chanel_l=0;
		}
		if (chanel_r == 1)
		{
			PORTC |= (1<<5);
			_delay_ms(30);
			PORTC &= ~(1<<5);
			_delay_ms(30);
			chanel_r=0;
		}
		if (vol_l == 1)
		{
			PORTC |= (1<<6);
			_delay_ms(30);
			PORTC &= ~(1<<6);
			_delay_ms(30);
			vol_l=0;
		}
		if (vol_r == 1)
		{
			PORTC |= (1<<7);
			_delay_ms(30);
			PORTC &= ~(1<<7);
			_delay_ms(30);
			vol_r=0;
		}
		PORTD &= ~(1<<5);
    }
}

#define BUTTONS_PORTB_MASK (0b11111111)
#define BUTTONS_PORTB_PINS (PINB)
#define BUTTONS_PORTA_MASK (0b01111111)
#define BUTTONS_PORTA_PINS (PINA)
#define BUTTONS_PORTE_MASK (0b00000001)
#define BUTTONS_PORTE_PINS (PINE)
void buttons(void)
{
	static uint8_t old_buttons_PORTB = 0;
	static uint8_t old_buttons_PORTA = 0;
	static uint8_t old_buttons_PORTE = 0;
	uint8_t new_buttons_PORTB = ((~BUTTONS_PORTB_PINS) & BUTTONS_PORTB_MASK);
	uint8_t new_buttons_PORTA = ((~BUTTONS_PORTA_PINS) & BUTTONS_PORTA_MASK);
	uint8_t new_buttons_PORTE = ((~BUTTONS_PORTE_PINS) & BUTTONS_PORTE_MASK);
	uint8_t act_buttons_PORTB = 0;
	uint8_t act_buttons_PORTA = 0;
	uint8_t act_buttons_PORTE = 0;
	if (old_buttons_PORTB != new_buttons_PORTB)
	{
		act_buttons_PORTB = (((~old_buttons_PORTB) & BUTTONS_PORTB_MASK) & (old_buttons_PORTB ^ new_buttons_PORTB));
		old_buttons_PORTB = new_buttons_PORTB;
	}
	if (old_buttons_PORTA != new_buttons_PORTA)
	{
		act_buttons_PORTA = (((~old_buttons_PORTA) & BUTTONS_PORTA_MASK) & (old_buttons_PORTA ^ new_buttons_PORTA));
		old_buttons_PORTA = new_buttons_PORTA;
	}
	if (old_buttons_PORTE != new_buttons_PORTE)
	{
		act_buttons_PORTE = (((~old_buttons_PORTE) & BUTTONS_PORTE_MASK) & (old_buttons_PORTE ^ new_buttons_PORTE));
		old_buttons_PORTE = new_buttons_PORTE;
	}
	if (act_buttons_PORTB & (1<<0))
	{
		//Кнопка воспроизведения МР3 плеера
		PORTD |= (1<<5);
		PORTC |= (1<<0);
		_delay_ms(30);
		PORTC &= ~(1<<0);
	}
	if (act_buttons_PORTB & (1<<1))
	{
		//Кнопка цикличность МР3 плеера
		PORTD |= (1<<5);
		PORTC |= (1<<1);
		_delay_ms(30);
		PORTC &= ~(1<<1);
	}
	if (act_buttons_PORTB & (1<<2))
	{
		//Кнопка предыдущий МР3 плеера
		PORTD |= (1<<5);
		PORTC |= (1<<2);
		_delay_ms(30);
		PORTC &= ~(1<<2);
	}
	if (act_buttons_PORTB & (1<<3))
	{
		//Кнопка следующий МР3 плеера
		PORTD |= (1<<5);
		PORTC |= (1<<3);
		_delay_ms(30);
		PORTC &= ~(1<<3);
	}
	if (act_buttons_PORTB & (1<<4))
	{
		//Кнопка предыдущий канал FM приёмника
		PORTD |= (1<<5);
		chanel_l=1;
	}
	if (act_buttons_PORTB & (1<<5))
	{
		//Кнопка следующий канал FM приёмника
		PORTD |= (1<<5);
		chanel_r=1;
	}
	if (act_buttons_PORTB & (1<<6))
	{
		//Кнопка звук убавить FM приёмника
		PORTD |= (1<<5);
		vol_l=1;
	}
	if (act_buttons_PORTB & (1<<7))
	{
		//Кнопка звук прибавить FM приёмника
		PORTD |= (1<<5);
		vol_r=1;
	}
	if (act_buttons_PORTA & (1<<0))
	{
		//Кнопка включения цветомузыки
		PORTD |= (1<<5);
		if (PIND)
		{
			PORTD &= ~(1<<1);
			color_music=0;
		} 
		else
		{
			PORTD |= (1<<1);
			color_music=1;
		}
	}
	if (act_buttons_PORTA & (1<<1))
	{
		//Кнопка нормального режима
		PORTD |= (1<<5);
		PORTD &= ~(1<<2);
		PORTD |= (1<<3);
	}
	if (act_buttons_PORTA & (1<<2))
	{
		//Кнопка режима столбик
		PORTD |= (1<<5);
		PORTD |= ((1<<2)|(1<<3));
	}
	if (act_buttons_PORTA & (1<<3))
	{
		//Кнопка режима точка
		PORTD |= (1<<5);
		PORTD |= (1<<2);
		PORTD &= ~(1<<3);
	}
	if (act_buttons_PORTA & (1<<4))
	{
		//Кнопка переключателя внешнего входа
	}
	if (act_buttons_PORTA & (1<<5))
	{
		//Кнопка переключателя входов FM / МР3 
		PORTD |= (1<<5);
		if (PINE)
		{
			PORTE &= ~(1<<2);
			menu=0;
		} 
		else
		{
			PORTE |= (1<<2);
			menu=1;
		}
	}
	if (act_buttons_PORTA & (1<<6))
	{
		//Кнопка включения зарядного
		PORTD |= (1<<5);
		if (PINE)
		{
			PORTE &= ~(1<<1);
			bat=0;
		} 
		else
		{
			PORTE |= (1<<1);
			bat=1;
		}
	}
	if (act_buttons_PORTE & (1<<0))
	{
		//Кнопка включения
		PORTD |= (1<<5);
		if (PINA)
		{
			PORTA &= ~(1<<7);
			power=0;
		} 
		else
		{
			PORTA |= (1<<7);
			power=1;
		}
	}
}

Но так это всё и не желает работать. Хотя уже есть маленькие сдвиги в нужную сторону начала работать индикация на светодиоде, которая находится в бесконечном цикле. Значит уже можно сделать вывод что то что находится в бесконечном цикле отрабатывает.

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, tifaso сказал:

начала работать индикация на светодиоде, которая находится в бесконечном цикле. Значит уже можно сделать вывод что то что находится в бесконечном цикле отрабатывает.

Глубокая мысль, требует время на осмысление...

Хорошо зафиксированный пациент в анестезии не нуждается

Ссылка на комментарий
Поделиться на другие сайты

11 минут назад, tifaso сказал:
TCNT1 = 54613;

Я так понимаю этой строчкой вы что-то задумали? 
Если да, то где такая же в прерывании, если нет присвойте 0, не смущайте остальных. 

Ссылка на комментарий
Поделиться на другие сайты

11 минут назад, tifaso сказал:

потому как с другими нет возможности работать и то только то что доступно мне в нашем местном магазине

21 век за окном, алиэкспрес...

 

11 минут назад, tifaso сказал:

И не нужно мне тут пытаться навязать

Ну так страдай дальше. Вместо того, чтобы под отладкой за 5 минут узнать, что и где не работает, ты будешь месяц смотреть, 

12 минут назад, tifaso сказал:

начала работать индикация на светодиоде,

 

P.S.

Никогда не используй задержку в прерываниях.

 

Ссылка на комментарий
Поделиться на другие сайты

Знал бы что эта микросхема такая капризная никогда бы не выбрал её для процессора. Лучше бы 16 мегу взял там и документации поболее и уже опыт работы с ней есть. В отличии от этой микросхемы 8515 меги.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...