AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
14.03.2019, 14:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,106
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: Вопрос atmega 128.
Сообщение от nml
|
А в сон его. И на питание - аккум
|
Если я правильно понял, то там есть - 24В / 150 А*ч
|
|
|
|
14.03.2019, 15:09
|
|
Частый гость
Регистрация: 11.03.2019
Сообщений: 26
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос atmega 128.
Питание подаётся за ранее не ранее чем за пол часа, после последнего импульса, пауза в пару минут, что касается ресурса то совсем не факт что он 999 за 10 лет Наберёт, для вас все примитивно, для меня нет. Завтра выложу что есть, что бы убрать все недопонимание
Вроде сделал, в поотеусе работает, завтра выложу уверен будет что подправить, кстати вопрос, незадействованные ноги МК, нужно наверное на землю сажать?
Последний раз редактировалось RECTO; 19.03.2019 в 00:58.
Причина: 2 сообщения подряд от одного пользователя
|
|
|
|
14.03.2019, 16:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,794
Сказал спасибо: 2,913
Сказали Спасибо 3,120 раз(а) в 2,111 сообщении(ях)
|
Re: Вопрос atmega 128.
Сообщение от Yarikkasl
|
нужно наверное на землю сажать?
|
Самое беспроблемное для AVR, на мой вкус, если помеховая обстановка от "отличной" до "умеренной" - переводить в состояние "вход с подтяжкой к "+". И уровень будет зафиксирован и замыкания на соседние выводы/детали/пр. не должны будут приводить к катастрофическим последствиям.
Если коротить на землю (или питание) - сбойная запись в регистры порта может вызвать КЗ.
Если помеховая обстановка "плохая" - можно выводить "явный" высокий или низкий уровень. С одной стороны - возможны спецэффекты при замыканиях на соседние выводы/детали/пр. С другой стороны - это возможно только при отладке прибора, а не при штатной эксплуатации.
__________________
Экзорцист 40-го уровня.
|
|
|
Эти 4 пользователя(ей) сказали Спасибо ForcePoint за это сообщение:
|
|
|
14.03.2019, 19:27
|
|
Почётный гражданин KAZUS.RU
Регистрация: 15.11.2010
Сообщений: 2,378
Сказал спасибо: 338
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
|
Re: Вопрос atmega 128.
Сообщение от Yarikkasl
|
незадействованные ноги МК, нужно наверное на землю сажать?
|
нет. Только на вход и только подтяжка к плюсу (можно внутренним резистором).
|
|
|
Эти 2 пользователя(ей) сказали Спасибо parovoZZ за это сообщение:
|
|
|
15.03.2019, 06:55
|
|
Частый гость
Регистрация: 11.03.2019
Сообщений: 26
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос atmega 128.
#include ‹avr/io.h›
#define F_CPU 1000000L
#include ‹util/delay.h›
#include ‹avr/io.h›
#include ‹avr/interrupt.h›
#include ‹stdio.h›
#include ‹stdlib.h›
#include ‹avr/eeprom.h›
int i, k, R1, R2, R3;
uint16_t EEMEM l = 0;
uint16_t EEMEM q = 0;
int go [10] =
{
0b11000000,
0b11111001,
0b10100100,
0b10110000,
0b10011001,
0b10010010,
0b10000010,
0b11111000,
0b10000000,
0b10010000,
};
int R1 = 0;
int R2 = 0;
int R3 = 0;
int main(void)
{
i = eeprom_read_word ( & q );
k = eeprom_read_word ( & l );
DDRA = 0b00000000;
PORTA = 0b00001111;
DDRB |= ((1‹‹PB0)|(1‹‹PB1)|(1‹‹PB2)); //ножки SPI на выход
PORTB &= ~((1‹‹PB0)|(1‹‹PB1)|(1‹‹PB2)); //низкий уровень
SPCR = ((1‹‹SPE)|(1‹‹MSTR)); //объявление мастером
while (1)
{
if (PINA ==0b00001110)
{
_delay_ms(50);
if (PINA == 0b00001110)
i++;
_delay_ms(10);
while (PINA == 0b00001110)
{
}
}
else if (PINA == 0b00001100)
{
_delay_ms(50);
if (PINA == 0b00001100)
k++;
_delay_ms(10);
while (PINA == 0b00001100)
{
}
}
else if (PINA ==0b00001011)// признак подключения выносного табло отображается количество холостых поворотов
{
R1 = i/100;
R2 = i%100/10;
R3 = i%10;
SPDR = go[R1];//1
while(!(SPSR & (1‹‹SPIF)));//подождем пока данные передадутся
SPDR = go[R2];//2
while(!(SPSR & (1‹‹SPIF)));//подождем пока данные передадутся
SPDR = go[R3];//3
while(!(SPSR & (1‹‹SPIF)));//подождем пока данные передадутся
PORTB |= (1‹‹PB0); //высокий уровень
PORTB &= ~(1‹‹PB0);
_delay_ms(200);
}
else if (PINA == 0b00000011)// нажата кнопка отображается количество поворотов
{
R1 = k/100;
R2 = k%100/10;
R3 = k%10;
SPDR = go[R1];//1
while(!(SPSR & (1‹‹SPIF)));//подождем пока данные передадутся
SPDR = go[R2];//2
while(!(SPSR & (1‹‹SPIF)));//подождем пока данные передадутся
SPDR = go[R3];//3
while(!(SPSR & (1‹‹SPIF)));//подождем пока данные передадутся
PORTB |= (1‹‹PB0); //высокий уровень
PORTB &= ~(1‹‹PB0);
_delay_ms(200);
}
eeprom_update_word(&q,i);
eeprom_update_word(&l,k);
}
}
Последний раз редактировалось RECTO; 19.03.2019 в 01:15.
Причина: попробовал вставить теги "CODE"... но не получилось!
|
|
|
|
15.03.2019, 17:05
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
|
Re: Вопрос atmega 128.
Yarikkasl, Вы скопируйте Ваш исходник в .txt файл и сюда через Расширенный режим-›Управление вложениями
Тогда весь текст кода не пострадает… от взаимодействия с движком форума.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
16.03.2019, 20:28
|
|
Частый гость
Регистрация: 11.03.2019
Сообщений: 26
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос atmega 128.
mike-y-k, хорошо сделаю, как выйду на работу
|
|
|
|
17.03.2019, 02:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
|
Re: Вопрос atmega 128.
Yarikkasl,
а науя atmega 128 в счетчике импульсов от 0 до 999? тини2313 или м48 не овердофига для задачи? и зачем издеваться над EEPROM, если PCF8583 решит задачу (ДШ надо почитать для начала) - 6 тетрад в Event counter mode с батарейным хранением результата. на довесок - 240 байт озу
кстати, на подобное намекал
Сообщение от mike-y-k
|
есть внешние часы реального времени
|
|
|
|
|
17.03.2019, 14:56
|
|
Модератор
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
|
Re: Вопрос atmega 128.
jump, так сильно проще организовать сон в промежутках при отдельном последовательном драйвере для индикации и автономном питании при отсутствии основного. Большая часть мелких МК в таком режиме вполне год проживет на обычной CR2032.
Тут и STM8 вполне подойдёт, и MSP430, и PIC,…
Им нужно лишь просыпаться от импульса счета или кнопки и перезагружать данные в той же MAX7219. В варианте MAX7219 можно и оба счетчика вывести на индикатор - таки там 8x8 регистр с управлением индикаторами. А сами индикаторы в два цвета, чтобы не путались. Итого нужно всего 5 свободных ног, три из которых могут прерывания выдавать (если с кнопкой), а при полном индикаторе и двух будет достаточно. Единственное - в алгоритме предусмотреть контроль внешнего напряжения и при его появлении перезаписывать содержимое MAX7219 значением(ями) из памяти.
Тут вполне можно даже на прерывании с делителя отработать.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
|
|
|
|
18.03.2019, 07:06
|
|
Частый гость
Регистрация: 11.03.2019
Сообщений: 26
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Вопрос atmega 128.
Исходный файл.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:53.
|
|