Так новая прошивка и создаст нужные значения. можно ведь просто при новом программировании залить в мк новое состояние ЕЕПРОМ.isx писал(а):Наоборот, у меня там левые значения (вышло после управления искрой электроподжига после нескольких перезагрузок), а теперь надо сбросить значения переменных, которые там храняться, или стереть еепром к чёрту, а значения прошивка сама создаст заново...
Мелкие вопросы по МК и ПЛИС.
- Реклама
- Сообщения: 2316
- Зарегистрирован: Вс июн 26, 2011 20:03:21
Здравствуйте!
Взял на днях схему терморегулятора на attiny2313 отсюда [url]eldigi.ru/site/term/18.php[/url]
При небольших перебоях напряжения в еепроме сбиваются значееия, и работа становится нестабильной. Как можно предотвратить это, может там программно есть какие способы защиты еепрома или что ещё?
Взял на днях схему терморегулятора на attiny2313 отсюда [url]eldigi.ru/site/term/18.php[/url]
При небольших перебоях напряжения в еепроме сбиваются значееия, и работа становится нестабильной. Как можно предотвратить это, может там программно есть какие способы защиты еепрома или что ещё?
Последний раз редактировалось isx Ср окт 30, 2013 10:33:27, всего редактировалось 1 раз.
В статье написано что BOD выключен, так как с ним при 0*С были сбросы. А включенный BOD как раз предохраняет от порчи EEPROM при просадке напряжения. Так что если температура эксплуатации больше нуля надо включить BOD обратно. Ну или как-то автоподогрев контроллеру сделать...
- Сообщения: 2316
- Зарегистрирован: Вс июн 26, 2011 20:03:21
Попробовать поставить внешний монитор питания (есть даже маленькие в SOT-23 корпусе типа MAX803).
Или вбить значения в исходник намертво, без возможности их изменения кнопками, но это отстой
Или вбить значения в исходник намертво, без возможности их изменения кнопками, но это отстой
- Реклама
- Сообщения: 2316
- Зарегистрирован: Вс июн 26, 2011 20:03:21
а это как поможет?Engineer_Keen писал(а):Попробовать поставить внешний монитор питания
это да... Регулировка здесь обязательна...Engineer_Keen писал(а):без возможности их изменения кнопками, но это отстой
EEPROM портится когда контроллер работает на пониженном напряжении (говорят что это из-за выполнения инструкций по случайным адресам). Такая возможность вроде как исключается, если включен внутренний BOD, который в эти моменты времени держит контроллер в ресете. Ну а раз при 0*С глючит и внутренний BOD (а глючит ли он у вас? включите проверьте!), то заместо него можно воткнуть внешний (у MAX803 диапазон от -40*С).isx писал(а):а это как поможет?
- Сообщения: 2316
- Зарегистрирован: Вс июн 26, 2011 20:03:21
Тоесть вешать его нужно на ресет?
Из супервизоров в наличии у нас только MAX1232ESA, но у него напряжение срабатывания 4.6В, мне кажется многовато...
Есть под заказ, но чё то не понятно. Посмотрите пожалуйста, там 2 товара с ценой, один 86 другой 6 руб. в чём разница и который мне нужен? http://www.compel.ru/?s=MAX803
P.S. НЕ реклама!
Из супервизоров в наличии у нас только MAX1232ESA, но у него напряжение срабатывания 4.6В, мне кажется многовато...
Есть под заказ, но чё то не понятно. Посмотрите пожалуйста, там 2 товара с ценой, один 86 другой 6 руб. в чём разница и который мне нужен? http://www.compel.ru/?s=MAX803
P.S. НЕ реклама!
Производитель, напряжение срабатывание, температурный диапазон...isx писал(а):в чём разница
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Сообщения: 2316
- Зарегистрирован: Вс июн 26, 2011 20:03:21
Странно... Такой большой ценовой разброс при таких маленьких различиях параметров...
Нашёл ещё TPS3510P в наличии, но с даташитом никак не разберусь..
Нашёл ещё TPS3510P в наличии, но с даташитом никак не разберусь..
Так в посмотрите минимальную партию тоisx писал(а):Странно... Такой большой ценовой разброс при таких маленьких различиях параметров...
Он похоже вам не подойдёт. Больше похоже на защиту питания материнской платы – отслеживает сразу три напряжения. Если только вся схема питается от 12 вольт, то можно подать через резисторный делитель на ненужные ножки. А нужное напряжение мониторить.TPS3510P в наличии, но с даташитом никак не разберусь..
- Сообщения: 2316
- Зарегистрирован: Вс июн 26, 2011 20:03:21
По поводу партии. Звонил в контору и узнавал, первая стоит 116р. за штуку, а вторая 29р.. Почему так не знают, говорят производители разные. Заказал 3шт. по 29р. на следущей недели придут, посморим что за звери 
По поводу TPS3510P. Верно, я и не подумал что надо будет вешать 12 (или сколько там порог) вольт, чтоб она из ресета вышла. У меня в схеме есть линия 12В, но всё же, по мне, это изврат какой-то
По поводу TPS3510P. Верно, я и не подумал что надо будет вешать 12 (или сколько там порог) вольт, чтоб она из ресета вышла. У меня в схеме есть линия 12В, но всё же, по мне, это изврат какой-то
- Сообщения: 219
- Зарегистрирован: Вт мар 12, 2013 16:05:45
Atmel Studio 6 при компиляции выдает ошибку:
Error 1 expected ')' before numeric constant 19 13
Error 1 expected ')' before numeric constant 19 13
Код: Выделить всё
#define F_CPU 8000000UL
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
#define KEY1UM PIND.2
#define KEY2UP PIND.3
#define KEY4IM PIND.6
void key_scan()
{
}
void kb_check()
{
key_scan((KEY1UM), 0); // Error 1 expected ')' before numeric constant
key_scan((KEY2UP), 1); // Error 2 expected ')' before numeric constant
key_scan((KEY4IM), 2); // Error 3 expected ')' before numeric constant
}
int main(void)
{
while(1)
{
}
}
Правильно выдает. Вызываете функцию key_scan с параметрами, а объявлена она без них.
- Сообщения: 219
- Зарегистрирован: Вт мар 12, 2013 16:05:45
То же самое, ошибка не пропала.
Спойлер
Код: Выделить всё
#define F_CPU 8000000UL
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
#define KEY1UM PIND.2
#define KEY2UP PIND.3
#define KEY4IM PIND.6
#define NOTT 0
#define PRES 1
#define LEAV 2
#define HOLD 3
uint8_t key_state[5];
uint8_t key_count[5];
uint8_t kb_tmrU, kb_tmrI;
uint8_t wait_key_tmr = 0;
uint16_t wait_key_tmr2 = 0;
void key_scan(uint8_t key, uint8_t num) //функция определение клика и удержания
{
if (key == 0) //кнопка нажата
{
if (key_count[num] < 255) key_count[num]++; //считаем время удержания
else key_state[num] = HOLD; //0,28сек
}
else if (key_count[num] > 0 && key_state[num] != HOLD) key_count[num] --; //кнопка отжата, считаем время от последнего нажатия
else key_count[num] = 0;
if (key_count[num] == 0) key_state[num] = NOTT;
else if (key_count[num] > 8) //интервал, после которого фиксируется однократное нажатие (с отпусканием)
{
if (key_state[num] == PRES && key == 1) key_state[num] = LEAV;
}
else if (key_count[num] > 4) //интервал, после которого фиксируется нажатие (10ms)
{
if (key_state[num] == NOTT) key_state[num] = PRES;
}
}
void kb_check()
{
key_scan((KEY1UM),0); // Error 1 expected ')' before numeric constant
key_scan((KEY2UP),1); // Error 2 expected ')' before numeric constant
key_scan((KEY4IM),2); // Error 3 expected ')' before numeric constant
}
int main(void)
{
while(1)
{
}
}
AStudio не знает такого:#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
PIND.2
- Сообщения: 219
- Зарегистрирован: Вт мар 12, 2013 16:05:45
То же самое.pyzhman писал(а):Попробуйте так:Код: Выделить всё
(KEY1UM,0)
Это под Atmel Studio 6, а как тогда если не PIND.2
там даже в строке вверху при выделении пина появляется :
#define PIND _SFR_IO8(0x09)
Последний раз редактировалось service47 Чт ноя 07, 2013 10:04:15, всего редактировалось 1 раз.


