Нано 3 - эффект разной земли
- Войдите на сайт для отправки комментариев
Втр, 22/03/2016 - 20:04
Сейчас делат небольшой проект. Т.к. зрение изначально хреновое, а с возрастом не улучшается, да и паять в последние годы редко приходилось - попросил на работе коллег спаять макетки.
Первая пошла без проблем. Потом человек ушел в отпуск, поручил другому.
И тут пошли ЧУДЕСА!
В схеме есть 4-секционный 7-сегментный LED-индикатор на 1637.
Подключаю к макетке - не работает.
Загружаю скетч - начинает работать.
Отключаю USB, включаю по новой - не работает. Загружаю скетч - опять работает.
В результате выяснил что на нане земля на 4 ноге и на 29. А чел одну ногу не пропаял. После пропая дорогвсе заработало.
Вот вопрос - почему при старте земли разделены а после заливки скетча объедены?
Может быть дело не в скетче, а просто в "холодной пайке". Вы теребили платку при переключении разъема, контакт то появлялся, то пропадал, а как пропаяли, так чудеса и кончились.
В том то и вопрос что ничего не шевелилось! Т.е. именно после заливки скетча земля на индикаторе появлялась.
В том то и вопрос что ничего не шевелилось! Т.е. именно после заливки скетча земля на индикаторе появлялась.
забей - было что-то непропаяно, поэтому что-то работало странно.
если желаешь узнать, почему - анализируй схему, откуда бралась земля при заливке.
В том то и вопрос что ничего не шевелилось! Т.е. именно после заливки скетча земля на индикаторе появлялась.
Разобраться с тем, что вытворяет софт дуси мало вероятно - как оно порты крутит, как регистры упраления. Может быть, при определённой нагрузке земля через цепи внутри кристалла проклёвывается... Примерно, как часто на ВАЗ 2109 задние фонари из-за отгнивания земли забавно начинают работать. :)
В том то и вопрос что ничего не шевелилось! Т.е. именно после заливки скетча земля на индикаторе появлялась.
Я сталкивался со схемным решением для промышленного сварочного источника, когда сигнал управления 0 - 10 В проходил через межплатный разъём. Чтобы обеспечить прохождение сигнала малого уровня через тот же контакт разъема по незасимимому контуру пускали ток в 10 мА при напряжении в несколько десятков Вольт. Вспомогательный ток "разбивал" окисную пленку на разъеме, и даже малый сигнал управления проходил беспрепятственно. В Вашем случае работа скетча могла менять параметры цепи так, что "пробивалось" переходное сопротивление "сопливого" контакта и цепь становилась рабочей. Пропайка контакта прекратила всю эту "хиромантию".
вечером проверю еще раз на разных контроллерах и платах.
те на разных контроллерах получилось:
если ноги земли соединены перемычкой - индикатор работает.
если на землю идет только одна нога - индикатор не работает.....
вечером проверю еще раз на разных контроллерах и платах.
Если вопрос так зацепил, то Вы приведите полную схему устройства. Так будет конкретней, а то мы пока обсуждаем "в принципе", а надо - "в кожухе". :))
вечером проверю еще раз на разных контроллерах и платах.
те на разных контроллерах получилось:
если ноги земли соединены перемычкой - индикатор работает.
если на землю идет только одна нога - индикатор не работает.....
Вчера ковырял LCD 5110... Для вывода диагностики... Случайно дернул на макетке у него питание, он работает как ничего не случилось. Потом дёрнул ещё землю - всё равно работает! Задумался чем эта собака питается... :)))
А вот CE и Reset с ног проца отобрать и железно подать почему-то не получилось...
Возобновлю тему по новым обстоятельствам.
Пока причина совершенно непонятна - и даже не понимаю куда копать.
А суть проблемы следующая:
- если загрузить скетч по шнурку - то он запускается моментом.
- а вто если отключить питание и снова включить - ардуино болтается на уровне загрузчика, моргает 13 ногой и не выходит в сетап.
Вот начало скетча (весь не привожу - смысла нет, т.к. дело не доходит даже до сетапа)
01
// подключение библиотек
02
#include <TM1637.h>// индикатор 4 секции 7сегментов
03
#include <OneWire.h>// считка ТМ ключей
04
#include <EEPROM.h>// работа с паматью
05
06
// назначение пинов
07
#define TMread 2//TM key pin
08
#define LEDclk 3//LED 1637 pin CLK
09
#define LEDdio 4//LED 1637 pin DIO
10
11
#define SoundPin 9//Звук в динамик
12
13
#define pinKBx1 6 // 1 столбец кнопок
14
#define pinKBx2 7 // 2 столбец кнопок
15
#define pinKBx3 8 // 3 столбец кнопок
16
#define pinKBy1 14 // 1 строка кнопок
17
#define pinKBy2 15 // 2 строка кнопок
18
#define pinKBy3 16 // 3 строка кнопок
19
#define pinKBy4 17 // 4 строка кнопок
20
// x1 x2 x3
21
//y1 1 2 3
22
//y2 4 5 6
23
//y3 7 8 9
24
//y4 A B C
25
26
#define Battary 21 // измерение напряги аккма
27
//long int KBatt=1453; // Коэффициент для измерения напряги аккума 1
28
//long int KBatt=1442; // Коэффициент для измерения напряги аккума 2
29
//long int KBatt=1428; // Коэффициент для измерения напряги аккума 3
30
//long int KBatt=1447; // Коэффициент для измерения напряги аккума 4
31
//long int KBatt=1425; // Коэффициент для измерения напряги аккума 5
32
//long int KBatt=1000; // Коэффициент для измерения напряги аккума 6
33
long
int
KBatt=1000;
// Коэффициент для измерения напряги теста
34
35
const
long
int
TimeXX=60000;
//делитель миллисекунд
36
int
TimeCH=1;
//минуты для ЧЕМОДАНА
37
byte
Seg_ON=0;
//двоеточие на индикаторе
38
byte
TMbuffer[8];
// буфер приема
39
byte
TMlistKEY[20][8];
// 5 ключей админских и 15 игровых ключей
40
byte
PrevCMD=0;
// Предыдущая команда
41
byte
NextCMD=0;
// следующая команда
42
byte
ChCMD=0;
// буфер считывания команды
43
byte
SetMode=0;
// режим - 0 не установлен, 1 кнопки, 2 ключи
44
byte
SetTimerMode=1;
// режим - 0 таймер выключен, 1 таймер включен
45
unsigned
long
buffMillis=0;
// буфер для расчетов
46
unsigned
long
PrevMillis=0;
// предыдущее время в миилсах
47
unsigned
long
NextMillis=0;
// следующее время в миилсах
48
unsigned
long
CMDmillis[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
// следующее время в миилсах
49
50
byte
buffTM[8];
// буфер приема ТМ-ключей
51
52
byte
ChemodanKey[4]={0,0,0,0};
53
54
TM1637 tm1637(LEDclk,LEDdio);
55
OneWire ds(TMread);
// выход считывателя на пин TMread
56
57
void
setup
()
// стартовая инициализация
58
{
59
Serial
.begin(9600);
//для отладки
60
Serial
.println(
"Start..."
);
//для отладки
61
62
//SirenaOUT();
63
/* Инициализация структур */
64
pinMode(pinKBx1, INPUT);
// назначить порт ввода X1
65
digitalWrite(pinKBx1, HIGH);
// включить подтягивающий резистор
66
pinMode(pinKBx2, INPUT);
// назначить порт ввода X2
67
digitalWrite(pinKBx2, HIGH);
// включить подтягивающий резистор
68
pinMode(pinKBx3, INPUT);
// назначить порт ввода X3
69
digitalWrite(pinKBx3, HIGH);
// включить подтягивающий резистор
70
pinMode(pinKBy1, OUTPUT);
// назначить порт вывода Y1
71
pinMode(pinKBy2, OUTPUT);
// назначить порт вывода Y2
72
pinMode(pinKBy3, OUTPUT);
// назначить порт вывода Y3
73
pinMode(pinKBy4, OUTPUT);
// назначить порт вывода Y4
74
75
pinMode(Battary, INPUT);
// назначить порт вывода A7
76
77
tm1637.init();
78
tm1637.
set
(5);
//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
79
tm1637.display(0,0);
//в левом сегменте 0 остальные потушены
80
81
// Читаем с хранилища ключи - 20 шт 5 админских 0-4 и 15 игровых 5-20
82
for
(
byte
TM1 = 0; TM1 < 20; TM1++)
83
{
84
for
(
byte
TM2 = 0; TM2 < 8; TM2++)
85
{
86
TMlistKEY[TM1][TM2]=EEPROM.read(TM1*8+TM2);
87
}
88
}
89
}
Блин ну ГРАБЛИ!
Похоже если на ПК запущен ide - загрузчик не запускается пока не получит скетч %(
и похоже если в скетче есть сериал-вывод - то так же загрузчик не запускает сетап пока не увидит монитор %(
Простите, но Вы сейчас ерунду написали. Загрузчик не знает, запущена IDE на ПК или нет. И он точно не ждёт открытия монитора (терминала). При открытии монитора разве что ресет микроконтроллера происходит. Загрузчик не может "видеть" приложения на ПК.
тем не менее факт - скетч в контроллере не входит в сетап если подключен к компу и запущен ide. стоит закрыть ide - стартует скетч. впрочем нужно еще несколько экспериментов - но уже не сегодня......
Для чистоты эксперимента проверяю.
1. IDE включен, терминал включен, в сетапе есть сериал-инит и сериал-принт:
- загрузка скетча, МК работает
- дергаю питание
- в сетап не заходит
- выключил и включил терминал - сработало
- выключил терминал - мигание 13 ногой - МК не работает
-передернул питание
- МК не грузится
- включил терминал - мк загрузился, работает
- выключил терминал - усе, мк висит
- выключил IDE - загрузился МК, работает
- подключил внешние 12в - работает
2. Заккментил сериал-инит и сериал принт
- передернул питание - сетап не пошел.
- вклюил терминал - работает
- выключил терминал - бутлоадер
- - выключил ide - работает
- передернул питание - при выключенном ide запустился
- на внешнем 12в запустился......
я в непонятках.