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

Вопросы от начинающих по МК


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

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

  • Ответов
  • Создана
  • Последний ответ

Топ авторов темы

Имеем 2 МК на плате с ISP. Прошивка предполагается от одного программатора по-очередно. Хотелось бы распаять только один разъем ISP и не передергивать кабель. Вопрос: какие контакты разъема можно объединить, а какие нужно завести на микропереключатель/мультплексор выбора МК? Просто это в отладчике не посмотришь, да и на макете нужно полностью обвязывать 2 МК. Может кто уже делал?

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

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

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

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

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

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

Если эти выводы больше нигде не используются (в рабочем режиме работают только как входы), можно объединить все, кроме ресета. На SPI неактивного контроллера будет приходить информация от программатора, но ее несложно проигнорировать. Ну и, конечно, хорошо бы поставить по всем линиям контроллеров защитные резисторы где-нибудь 100 - 500 Ом на случай перевода ноги на выход.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

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

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

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

Вопрос такой: нужно написать прошивку на микроконтроллер от Freescale MC9S08AW60, нужно генерировать ШИМ сигнал, менять частоту кнопками, отображать ее на дисплее, и при достижении определенного значения тока, отключать нагрузку.

В принципе нашел примеры кусков кода для МК AVR, но вопрос такой: программа будет на Си, будет ли различие в командах для МК AVR и Freescale в рамках требуемой задачи? Естественно, что в блоке #include, нужно будет прописать подключаемые библиотеки для этого МК, но как насчет остальных команд?

Прогуглил примеры программ для freescale, порылся в документации, ничего путного не нашел, помогите плиз :)

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

Скопировал вопрос из песочницы - ответьте пожалуйста:

17 ножка(MOSI) подтянута к плюсу - это скажется как то при внутрисхемном программировании или лучше резистор впаять после прошивки?

То же и с остальными выводами(1,18,19).

http://radiokot.ru/c...tal/measure/69/

И ещё непонятно почему ОУ питается от 12 Вольт,а не от стабилизированных 5В.

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

17 ножка(MOSI) подтянута к плюсу

И ещё непонятно почему ОУ питается от 12 Вольт,а не от стабилизированных 5В.

Прошивайте спокойно. А вот по поводу ОУ, то ему нужно подавать стабилизированных +12, иначе показания датчика давления, будут прыгать!!!

А лучше применить простой LM358, его можно питать от 5 вольт, но нужно будет пересчитать коэффициент усиления, или программно подстроить...

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

Второй стаб.в планы не входит - нет места на плате.

ОУ как раз будет 358.Пересчитывать ничего не надо, для этого есть R2.

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

Ничего стабилизировать там не надо. ОУ в таком включении обладает такими свойствами что выходное напряжение зависит только от входного и соотношения номиналов резисторов в цепи ОС. От 5 вольт LM358 запитать не получится - во первых работает она на таком напряжении фигово, а во вторых на выходе будет не больше 3.8В - больше не может обеспечить выходной каскад усилителя. Питайте его от 12В и не парьтесь. Единственное что вместо резистора на выходе обозначенного как "102" я бы поставил параметрический стабилизатор на стабилитроне на 4.7В иначе при неисправности резистора R-2 на контроллер может пойти 12В.

Учение - изучение правил. Опыт - изучение исключений.

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

Имеем 2 МК на плате с ISP.

кроме ресета...поставить по всем линиям контроллеров защитные резисторы где-нибудь 100 - 500 Ом.

Протравил, распаял, соединил, (кроме ресета) через 100 ом линии ISP на программатор. МК не видятся. а)Точно ли 100 ом не мешает сигналам портов идущих на/к программатору? б) ИМХО, линии ISP всегда были "осторожны и чувствительны" к нагрузкам, а тут два МК и оба запитаны 5в в) Ресет - я понимаю, это типа "выборка кристала", тут вопросов нет, я доверяю Вам, хотя больше нигде эту информацию не перечитывал.

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

Коммутировать желательно +5В, для полного отключения МК. Иначе, уже прошитый, МК будет создавать солидную помеху своему собрату по программированию. Ведь у него ресет будет снят и он будет выполнять уже заложенную в него программу. А ну как линии SPI будут активированы как выходы с низким уровнем. Тогда ответ МК будет идти на программатор через делитель напряжения 1/2 и с программатора, при условии, что в нем тоже установлены резисторы (обычно 220 Ом) сигналы будут гасится создаваемыми делителями на резисторах. Идеально, конечно, иметь два разъема для ISP.

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

Протравил, распаял, соединил, (кроме ресета) через 100 ом линии ISP на программатор. МК не видятся. а)Точно ли 100 ом не мешает сигналам портов идущих на/к программатору?

У меня по всем выходам программатора, включая ресет, стоят резисторы 120 Ом, нормально программирует. В рабочем режиме это либо входы, либо выходы (у неактивного контроллера стоит принудительно настроить как входы без подтяжки, DDRx=0, PORTx=0). В обоих случаях такое маленькое сопротивление ни на что не повлияет.

б) ИМХО, линии ISP всегда были "осторожны и чувствительны" к нагрузкам, а тут два МК и оба запитаны 5в в) Ресет - я понимаю, это типа "выборка кристала", тут вопросов нет, я доверяю Вам, хотя больше нигде эту информацию не перечитывал.

Уж больно экзотика, два контроллера с одним разъемом. По-хорошему лучше программировать по отдельности, но если соблюдать осторожность - должно заработать и так. Осторожность - в программе сразу настраивать выводы SPI на вход, чтобы не мешало программироваться второму контроллеру. Надежнее, конечно, поставить логику для "нормального" выбора интересующего кристалла, буферные усилители и прочее. Но программирование операция достаточно редкая чтобы настолько усложнять схему.

Коммутировать желательно +5В, для полного отключения МК.

МК это как бы КМОП-логика, отключать его по питанию еще хуже: будет включаться через защитные диоды от MOSI и SCK, и тогда его поведение будет куда менее предсказуемым. Не стоит экспериментировать с такими недокументированными возможностями.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

У меня по всем выходам программатора, включая ресет, стоят резисторы 120 Ом, нормально программирует.

Все заработало, надо было как всегда быть повнимательнее... вообще, с ростом опыта (это у меня кажись, всего, пятый МК, точнее даже первая "пара" :yes: МК ) представляется, что вероятность "заработки" его сразу весьма велика - это не куча дискретной логики.... А так, приколько перекидывать микрик выбора МК находясь в окне Прожиг программатора, даже не делая перекомпиляции, и шьется тот который выбран. Единственное, что в одном МК MOSI не пошел почему-то через 100 ом, поставил перемычку. Отладку делал, держа кнопочку Ресет неакивного МК (хорошо, что предусмотрел заранее). Также ставил и панельки, так что дело было не в "двойной нагрузке" - выявил быстро, выдернув второй кристал вообще)). Спасибо.

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

Да, такие возможности существуют. Несколько раз удавалось пролить МК, забыв подать питание. Однако можно принудительно защититься от такой возможности. Несколько увеличить номиналы резисторов и повысив ток потребления МК (резистор параллельно). Это поможет исключить паразитное питание.

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

Здравствуйте)) Помогите пожалуста с таким вопросом) к устроиству которому я собрал как на видео я хочу по uart отправить данные на компьютер и записать в тхт файл, как мне это сделать? Можно ли через протеус сделать виртуальный Юсб и посмотреть что происходит ?

/*
* AVRGCC1.cpp
*
* Created: 02.10.2014 10:56:54
* Author: Konan
*/
#define F_CPU 8000000
#include <avr/io.h>
#include "n5110.h"
#include <math.h>
#include <util/delay.h>
#include <stdlib.h>
#define USART_H
//#include "usart.h"
volatile unsigned char usartRxBuf = 0;
void presets()
{
//инилизация дисплея
Lcd_init();
// Настройка АЦП
//ADCSR
ADCSR |=(1<<ADEN) //Задействие АЦП
| (1<<ADPS2) |(1<<ADPS1)|(1<<ADPS0);//Делитель 128=64кГЦ
//ADMUX
ADMUX |=(1<<REFS1)|(1<<REFS0); //Опорное наприжение в 2,56
UBRRH = 0;
UBRRL = 51; //скорость обмена 9600 бод
//разр. прерыв при приеме, разр приема, разр передачи.
UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
//обращаемся к регистру UCSRS, размер слова – 8 бит
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}
//инициализация usart`a
//void USART_Init(void)
//{
//}
int readADC(unsigned int ac)
{
unsigned char st_ADMUX=ADMUX;
st_ADMUX &= ~((1<<MUX3)|(1<<MUX2)|(1<<MUX1)|(1<<MUX0));
switch (ac)
{
case 1: st_ADMUX|=((0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(1<<MUX0));break;
case 2: st_ADMUX|=((0<<MUX3)|(0<<MUX2)|(1<<MUX1)|(0<<MUX0));break;
default:break;
}
ADMUX=st_ADMUX;
_delay_ms(10);
int temp=0;
for (int i=0;i<20;i++)
{
ADCSRA|=(1<<ADSC);
while ((ADCSRA&(1<<ADSC)));
temp+=ADCW;//temp=temp+ADC
}
return temp/20;
}
//отправка символа по usart`у
void USART_SendChar(unsigned char arr)
{
while(!(UCSRA & (1<<UDRE)));
	 UDR = arr;

}
//прием символа по usart`у в буфер
ISR(USART_RX_vect)
{
usartRxBuf = UDR;
}
int main(void)
{ presets();
while(1)
{
char arrey[3];
arrey[0]=((readADC(0)*2.56*(30/2.56))/1023);
arrey[1]=((readADC(1)*2.56*(3/2.56))/1023);
arrey[2]=(((readADC(2)*2.56*100*(3.73/2.56))/1023)-273.15);
arrey[3]="s";
USART_SendChar(arrey[0]);
USART_SendChar(arrey[1]);
USART_SendChar(arrey[2]);
USART_SendChar(arrey[3]);
// Lcd_prints(0,0,FONT_1X,(unsigned char*) PSTR("Volium="));
Lcd_clear();
Lcd_prints(0,0,FONT_1X,(unsigned char*) PSTR("Привет"));
	 Lcd_printf(0,1,FONT_1X,(((readADC(0)*2.56*(30/2.56))/1023)),2);
Lcd_printf(0,2,FONT_1X,((readADC(1)*2.56*(3/2.56))/1023),2);
Lcd_printf(0,3,FONT_1X,(((readADC(2)*2.56*100*(3.73/2.56))/1023)-273.15),0);
// Lcd_printf(0,4,FONT_1X,(tmp),2);
Lcd_update();
_delay_ms(200);
}
}

Я сделал вот таким образом) правильно ли не знаю? Жду ващих советов)) Буду очень благодарен))

http://forum.cxem.ne...ttach_id=310784

post-184379-0-93146300-1416102913_thumb.png

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

нет не правильно ....

arrey[0]=((readADC(0)*2.56*(30/2.56))/1023);

на пальцах: readADC(0)= 1022...

результат =(1022*2,56*(30/2,56))/1023 = 29,9706744868

тк char arrey[3]; те целочисленный

в arrey[0] = 29

для правильного вывода:

1. значение readADC(0)(или то что вы пытаетесь отправить по юарту) нужно преобразовать в строку http://we.easyelectr...lye-chisla.html

2. далее обозначить начало строки : код 0х02 - код начала текста в ASCII,

обозначить конец строки : коды 0х0D , 0x0A - возврат каретки , перевод строки

3. полученный массив символов отправлять посимвольно функцией USART_SendChar(х)

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

я хочу по uart отправить данные на компьютер и записать в тхт
# cat /dev/ttyS0 > resfile.txt

Средствами системы. Можно написать и свою программу, делающую тоже самое. Вместо ttyS0 подставить то, на какой из портов данные будут приходить.

int readADC(unsigned int ac);

...

char arrey[3];

arrey[0]=((readADC(0)*2.56*(30/2.56))/1023);

Слово "array" пишется через 'а', а через 'e' больше похоже на имя греческого бога войны.

Присвоение char'у значения типа int? Ну-ну.

нет не правильно .... для правильного вывода:
Смотря что автор хочет получить, вдруг анализ файла будет проходить в автоматическом режиме? Там не нужно, чтобы числа были в читаемом виде.
2. далее обозначить начало строки : код 0х02
Первый раз слышу. Всегда и без этого работало.
для правильного вывода:
Либо sprintf'ом.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

  • 2 недели спустя...

Вчера всё читалось и прошивалось.А сегодня CodeVision выдаёт :

communication error, please check the following:

-the Programmer's power supply is on

-the Programmer type is correctly set in the Settings/Programmer menu

-the Printer port adress is correctly set in the Settings/Programmer menu

-the AVR chip is not damaged

Может неправильно фьюзы выставил?

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

communication error, please check the following:

-the Programmer's power supply is on

-the Programmer type is correctly set in the Settings/Programmer menu

-the Printer port adress is correctly set in the Settings/Programmer menu

-the AVR chip is not damaged

Ошибка соединения, произведите проверку по пути:

- питание программатора подключено?

- правильно ли заданы настройки программатора в меню?

- правильный ли адрес СОМ порта?

- АВРчип не заблокирован?

Учим английский!

Изменено пользователем chip-chip

Все можно наладить, если вертеть в руках достаточно долго!

Если ничто другое не помогает, прочтите, наконец, инструкцию!

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

от внутреннего источника тактов?

вчера работало, сегодня нет.. чудес ведь не бывает, если изменяли настройки тактирования, то подкиньте кварц, если не использовали. И соединения проверьте. У меня бывало на тонком текстолите от деформаций пропадал контакт на плате

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

Когда прошивал изменил только один фьюз:CKSEL2

Этого может оказаться вполне достаточным. Не знаю, в каком состоянии были эти фьюзы до последнего программирования, но вы могли переключить источник тактирования МК. Посмотрите внимательно таблицы фьюзов в даташите и не забывайте, что запрограммированному фьюзу (птичка) соответствует лог.0

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

Интернет отвалился.....

Забыл сказать - вчера от сегодня отличалось ещё тем,что сегодня я напаял дополнительные элементы,в частности резистор на RES - подтянут к плюсу.Убрал его и всё стало нормально.

А в EEPROM ничего записывать не надо?:

http://radiokot.ru/circuit/digital/measure/69/

Чё то не работает схема,диод мигает,на экране затемнена верхняя строка.

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

Чтобы программатор не перетянул 10 кОм?

Контрастность крутили?

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

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

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

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

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

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

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

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

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

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

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

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

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