Например TDA7294

Форум РадиоКот • Просмотр темы - проблема с программрованием Attiny261V
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн янв 05, 2026 11:06:43

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: проблема с программрованием Attiny261V
СообщениеДобавлено: Пт июн 12, 2020 18:30:04 
Открыл глаза

Зарегистрирован: Пт июл 12, 2013 09:03:55
Сообщений: 66
Рейтинг сообщения: 0
сразу извиняюсь что создал отдельную тему - вдруг уже было похожее, но тут уже нужно вопрос решить срочно (вчера)...
есть плата (проверена на всё уже что только можно) - управление водой (в саду) для полива и водопровода
программу пишу на atmel studio, прошивку заливаю через progisp.
текст программы:
/*
* pump_comtrol_2.cpp
*
* Created: 21.05.2019 16:10:37
* Author : lsv_general
*/

#include <avr/io.h>
#include <avr/interrupt.h>

#define Port_Sens200Top PA5
#define Pin_Sens200Top PINA5
#define Port_Sens200Bottom PA6
#define Pin_Sens200Bottom PINA6
#define Port_Sens500Bottom PA7
#define Pin_Sens500Bottom PINA7
#define Port_SensShower PA4
#define Pin_SensShower PINA4

#define Port_Reserv PA3
#define Pin_Reserv PINA3

#define Port_Run200 PB4
#define Port_RunShower PB6
#define Port_Pump PB5

volatile uint16_t c_sec = 0;
volatile uint16_t c_msec = 0;
volatile uint8_t isWork = 0;
volatile uint8_t timer_500 = 0;

//volatile uint8_t Pump200Work = 0;
volatile bool Pump200Work = false;
volatile bool PumpShowerWork = false;
volatile bool b200 = false;
volatile bool bTest = false;

void delay(uint16_t msec);

ISR ( TIMER0_COMPA_vect)
{
c_sec++;
if (c_sec>999){
c_sec=0;
isWork=1;
}
c_msec++;
}

int main(void)
{
Pump200Work=false;
PumpShowerWork=false;
MCUCR = (1<<PUD);
DDRA = (0<<Port_Sens200Top)|(0<<Port_Sens200Bottom)|(0<<Port_Sens500Bottom)|(0<<Port_SensShower)|(1<<Port_Reserv);
DDRB = (1<<Port_Run200)|(1<<Port_RunShower)|(1<<Port_Pump);

TCCR0A = (0<<ICEN0)|(0<<TCW0)|(1<<CTC0)|(0<<ICNC0)|(0<<ICES0)|(0<<ACIC0); // 8-bit CTC mode
TCCR0B = 0x05;//0x05; // делитель 1024
TCNT0L = 0;
OCR0A = 3; // число для сравнения счетчика
TIMSK = (1<<OCIE0A);
sei();
while (1)
{
if (isWork==1){
isWork=0;

bTest=!bTest;

//continue;

if (timer_500>0) {
timer_500--;
}


b200=!b200;
if (bTest){
PORTA |= (1<<Port_Reserv);
} else {
PORTA &= ~(1<<Port_Reserv);
}

}
}
}
void delay(uint16_t msec)
{
c_msec=0;
while (c_msec!=msec){}
}


проблема возникает на простом месте - если комментировать строку
b200=!b200;
то всё работает, в смысле "тестовый" светодиод моргает как положено, если расскомментировать и залить в контроллер - даже светодиод не моргает.
где и что не так ?


Вернуться наверх
 
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Пт июн 12, 2020 22:35:27 
Предполагаю что алгоритм простой. Интересно было бы его узнать. :)


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Сб июн 13, 2020 08:36:48 
Открыл глаза

Зарегистрирован: Пт июл 12, 2013 09:03:55
Сообщений: 66
Рейтинг сообщения: 0
Предполагаю что алгоритм простой. Интересно было бы его узнать. :)

алгоритм действительно простой (три поплавковых датчика, реле давления, два электроклапана и насос), и его нет в тексте сверху только по одной причине, как только что-то "пополняется" в программе перестаёт работать всё. Вот методом исключения добился устойчивого глюка на практически ровном месте. Куда "копать" уже просто не представляю.


Вернуться наверх
 
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Сб июн 13, 2020 08:55:09 
Я спрашивал за алгоритм, чтобы написать свой вариант по вашему словесному описанию. Вы лишь озвучили какая используется периферия. О самом алгоритме ни слово. :roll: Схему платы тоже желательно показать… и саму плату тоже… так как часто бывает, что проблемы возникают ещё и при неправильной разводке ПП. Ещё - МК на какой частоте тактируется?


Вернуться наверх
   
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Вс июн 14, 2020 21:13:58 
Открыл глаза

Зарегистрирован: Пт июл 12, 2013 09:03:55
Сообщений: 66
Рейтинг сообщения: 0
Я спрашивал за алгоритм, чтобы написать свой вариант по вашему словесному описанию. Вы лишь озвучили какая используется периферия. О самом алгоритме ни слово. :roll: Схему платы тоже желательно показать… и саму плату тоже… так как часто бывает, что проблемы возникают ещё и при неправильной разводке ПП. Ещё - МК на какой частоте тактируется?

будет и схема, и если надо плата, я чё-та уперся в мертвое место... ...как только я делаю присвоение к переменной типа volatile uint8_t - всё встаёт в ступор


Вернуться наверх
 
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Вс июн 14, 2020 21:27:46 
Я не знаю Си… пишу совсем на другом языке… потому мне важен просто словесное описание ваших хотелок… далее напишу тестовый вариант, а Вы его проверите в железе… и если всё будет работать нормуль, то расскажу как я организовал свой вариант. :) Короче без Вашего описания и схемы, помощи от меня ждать бессмысленно. Ваша программа из первого поста, для меня не читабельна. :dont_know:


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Вс июн 14, 2020 22:11:27 
Открыл глаза

Зарегистрирован: Пт июл 12, 2013 09:03:55
Сообщений: 66
Рейтинг сообщения: 0
Ваше предложение я понял и буду иметь ввиду )) но мну очень интересует использование atmel studio... ...и похоже тут что-то встаёт клином, что-то посоветуете попроще может быть ? на С ? ...что бы были варианты при вот таком вот затыке

Добавлено after 1 minute 38 seconds:
на "совсем другом языке" - ассемблер ? ...я чёт тяжело его воспринимаю ))


Вернуться наверх
 
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Вс июн 14, 2020 22:22:22 
на "совсем другом языке" - ассемблер ?

Algorithm Builder


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Пн июн 15, 2020 10:38:17 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1494
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15341
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Attiny261V - для любительских поделок весьма редковстречающийся...
Ставить его предпочтительно или из-за недостатка лапок в других моделях или для применения имеющихся там полезностей -
• 3 High Frequency PWM Outputs with Separate Output Compare Registers
• Programmable Dead Time Generator
и/или
• 16 Differential ADC Channel Pairs
• 15 Differential ADC Channel Pairs with Programmable Gain (1x, 8x, 20x, 32x)
:dont_know:
:roll:

С атмел студией - разве под ассемблером помочь можно...
Си - у меня под адуринку рассчитан, а там Attiny261V нету...
В принципе посмотреть общую схемку с "хотелками" - может чего и придумается...
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Пн июн 15, 2020 11:13:39 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
SergL, вы скомпилируйте проект со строчкой b200=!b200; из первого сообщения этой темы.
Проект полностью в архив zip и сюда выложите.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Пн июн 15, 2020 18:06:42 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Вы уверены, что привели весь код? У вас же b200 нигде не используется больше. И никаких timed sequence в цикле рядом я не вижу, чтобы он как-то мешал работать. Где #include <stdbool.h>, <stdint.h> ? У вас без них по идее ругнулось бы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Вт июн 16, 2020 19:42:36 
Открыл глаза

Зарегистрирован: Пт июл 12, 2013 09:03:55
Сообщений: 66
Рейтинг сообщения: 0
спасибо за все ответы... ...а вообще контроллеры бракованые часто попадаются в магазинах ?
...тот что уже впаяный в плату - глючит "на ровном месте", нашёл в загашнике такой же второй (покупал сразу два), собрал "макетку" - всё работает как запрограммировано, но (!!!) частота нифига не 8МГц, а где-то ~1МГц.
вот думаю чего поделать - пойти ещё что-ль в другой магазин попробовать купить ))) или остановиться на втором и "на глаз" счётчик использовать

Добавлено after 2 minutes 4 seconds:
Вы уверены, что привели весь код? У вас же b200 нигде не используется больше. И никаких timed sequence в цикле рядом я не вижу, чтобы он как-то мешал работать. Где #include <stdbool.h>, <stdint.h> ? У вас без них по идее ругнулось бы.

хм... ...не знаю, всё отлично компилится (Atmel Studio 7)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Вт июн 16, 2020 20:45:44 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18450
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
SergL писал(а):
частота нифига не 8МГц, а где-то ~1МГц
новые микроконтроллеры идут с завода с запрограммированным фьюзом CKDIV8 и активным внутренним генератором 8МГц, таким образом эти МК работают на частоте 1 МГц "из коробки"

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Вт июн 16, 2020 21:32:26 
Открыл глаза

Зарегистрирован: Пт июл 12, 2013 09:03:55
Сообщений: 66
Рейтинг сообщения: 0
SergL писал(а):
частота нифига не 8МГц, а где-то ~1МГц
новые микроконтроллеры идут с завода с запрограммированным фьюзом CKDIV8 и активным внутренним генератором 8МГц, таким образом эти МК работают на частоте 1 МГц "из коробки"

о как... ...а в даташите:
The device is shipped with CKSEL = “0010”, SUT = “10”, and CKDIV8 programmed. The default
clock source setting is therefore the Internal Oscillator running at 8 MHz with longest start-up
time and an initial system clock prescaling of 8. This default setting ensures that all users can
make their desired clock source setting using an In-System or High-voltage Programmer

и при чтении фьюзов из CKSEL только CKSEL1 выставлен
а я же сам выставляю деление частоты

Добавлено after 3 minutes 8 seconds:
пока программа выглядит так:

/*
* pump_comtrol_2.cpp
*
* Created: 21.05.2019 16:10:37
* Author : lsv_general
*/

#include <avr/io.h>
#include <avr/interrupt.h>

#define Port_Sens200Top PA5
#define Pin_Sens200Top PINA5
#define Port_Sens200Bottom PA6
#define Pin_Sens200Bottom PINA6
#define Port_Sens500Bottom PA7
#define Pin_Sens500Bottom PINA7 // есть вода +5V
#define Port_SensShower PA4
#define Pin_SensShower PINA4

#define Port_Reserv PA3
#define Pin_Reserv PINA3

#define Port_Run200 PB4
#define Port_RunShower PB6
#define Port_Pump PB5

volatile uint16_t c_sec = 0;
volatile uint16_t c_msec = 0;
volatile uint8_t iSens500 = 0;

volatile bool isWork = false;
volatile bool Pump200Work = false;
volatile bool PumpShowerWork = false;
volatile bool bNeed200 = false;

volatile bool bTest = false;

ISR ( TIMER0_COMPA_vect)
{
c_sec++;
if (c_sec>999){ //999
c_sec=0;

if (iSens500>0) {
iSens500--;
}

isWork=true;
}
c_msec++;
}

void delay(uint16_t msec)
{
c_msec=0;
while (c_msec!=msec){

}
}

bool Pin500Bottom()
{
return !(PINA & (1 << Pin_Sens500Bottom));
}

void PumpOn()
{
PORTB |= _BV(Port_Pump);
}

void PumpOff()
{
PORTB &= ~_BV(Port_Pump);
}

void Valve200On()
{
PORTB |= _BV(Port_Run200);
Pump200Work=true;
}

void Valve200Off()
{
PORTB &= ~_BV(Port_Run200);
Pump200Work=false;
}

void ValveShowerOn()
{
PORTB |= _BV(Port_RunShower);
PumpShowerWork=true;
}

void ValveShowerOff()
{
PORTB &= ~_BV(Port_RunShower);
PumpShowerWork=false;
}

void AllOff()
{
PumpOff();
Valve200Off();
ValveShowerOff();

}

int main(void)
{
MCUCR = (1<<PUD);
DDRA = (0<<Port_Sens200Top)|(0<<Port_Sens200Bottom)|(0<<Port_Sens500Bottom)|(0<<Port_SensShower)|(1<<Port_Reserv);
DDRB = (1<<Port_Run200)|(1<<Port_RunShower)|(1<<Port_Pump);

TCCR0A = (0<<ICEN0)|(0<<TCW0)|(1<<CTC0)|(0<<ICNC0)|(0<<ICES0)|(0<<ACIC0); // 8-bit CTC mode
TCCR0B = (1<<CS02)|(0<<CS01)|(1<<CS00);//0x05; // делитель 1024
TCNT0L = 0;
OCR0A = 1; // число для сравнения счетчика
TIMSK = (1<<OCIE0A);
sei();
//delay(1000);
while (1)
{
if (isWork){
isWork=false;

if (bNeed200) {
bNeed200 = bNeed200 && (PINA & (1 << Pin_Sens200Top));
} else {
bNeed200 = (PINA & (1 << Pin_Sens200Top)) && (PINA & (1 << Pin_Sens200Bottom));
}
if (Pin500Bottom()) { // уровень резервного бака ! нельзя включать насос.
AllOff();
iSens500 = 5; // ожидаем наполнение нижнего бака - 1 минуту.
}

if (iSens500>0) {
continue;
}

bTest=!bTest;
if (bTest){
PORTA |= 1 << Port_Reserv;
} else {
PORTA &= ~1 << Port_Reserv;
}
// сначала проверяем реле давления - для поддержания давления воды
if (PINA & (1 << Pin_SensShower)) {
ValveShowerOn();
PumpOn();
if (bNeed200) { // если было включено наполнение верхнего бака - отключаем клапан
Valve200Off();
}
continue;
}
if ((!(PINA & (1 << Pin_SensShower))) && PumpShowerWork) { // реле давления отключилось - выключаем накачку
if (bNeed200) { // требуется наполнение верхнего бака - переключаем клапаны
Valve200On();
ValveShowerOff();
} else { // иначе - отключаем клапаны и насос
AllOff();
}
continue;
}
// проверяем необходимость наполнения верхнего бака
if (bNeed200) {
Valve200On();
PumpOn();
} else { // иначе - выключаем насос
Valve200Off();
PumpOff();
}

}
}
}


с делителем и другими настройками таймера пока буду "играться"

Добавлено after 57 seconds:
...блин, все табы "испортились"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Ср июн 17, 2020 00:26:02 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Цитата:
The device is shipped with CKSEL = “0010”, SUT = “10”, and CKDIV8 programmed. The default
clock source setting is therefore the Internal Oscillator running at 8 MHz with longest start-up
time and an initial system clock prescaling of 8. This default setting ensures that all users can
make their desired clock source setting using an In-System or High-voltage Programmer

и при чтении фьюзов из CKSEL только CKSEL1 выставлен

Ну и? Никаких противоречий. CKSEL1 = 1 === CKSEL = 0010
Частота МК получается 1 МГц, за счет включенного CKDIV8, который ставит предделитель Fclk. Вы же ставите в коде делитель таймера. Это ж разные вещи.

Чтобы "табы" не съезжали, надо в тег [code] запихивать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Ср июн 17, 2020 06:17:59 
Открыл глаза

Зарегистрирован: Пт июл 12, 2013 09:03:55
Сообщений: 66
Рейтинг сообщения: 0
Ну и? Никаких противоречий. CKSEL1 = 1 === CKSEL = 0010
Частота МК получается 1 МГц, за счет включенного CKDIV8, который ставит предделитель Fclk. Вы же ставите в коде делитель таймера. Это ж разные вещи.

что-то я реально затупил... ...всё из-за хренового знания английского языка. Большое спасибо !!!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Чт июн 18, 2020 19:53:14 
Открыл глаза

Зарегистрирован: Пт июл 12, 2013 09:03:55
Сообщений: 66
Рейтинг сообщения: 0
ну... ...вроде всё, закончил
вырезал косячный контроллер (в прямом смысле вырезал - выпаивал по одной ноге), впаял новый, прошитый, провёл тестирование (вместо датчиков - джамперы) - работает как часы ))

Самсусамыч, Вам действительно нужна схема ? )) ...видел по разным темам что Вы и так очень хорошо в них разбираетесь, уж такую "мелочь" собрать даж напрягаться Вам не придётся ))


Вернуться наверх
 
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Чт июн 18, 2020 21:00:56 
Схема мне нужна была, чтобы для Вас написать программу. А так как Вы и сами справились, то я рад, что у Вас всё получилось. :) Вот есть такой таймер для полива… https://radiokot.ru/forum/viewtopic.php?f=2&t=167311 посмотрите, может пригодится.


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Чт июн 18, 2020 21:15:01 
Открыл глаза

Зарегистрирован: Пт июл 12, 2013 09:03:55
Сообщений: 66
Рейтинг сообщения: 0
А так как Вы и сами справились, то я рад, что у Вас всё получилось.

ой не сглазьте ) работает пока только всё дома, в выходные если всё будет благополучно - опробую при всём подключении датчиков/клапанов/насоса... ..а вообще планируется ещё более интересная история - капельный полив (но он плохо управляемый простыми трубками) с измерением влажности включением/перекрытия воды, измерением температура и возмохно автоматическим открытием "окон"... ...но эт чёт дофига ресурсов, надо посчитать, помидоры/огурцы могут не стоить того ) ...хотя время/силы родителей это очень много съэкономит ))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: проблема с программрованием Attiny261V
СообщениеДобавлено: Пт июн 19, 2020 09:48:22 
Вымогатель припоя

Карма: -8
Рейтинг сообщений: 49
Зарегистрирован: Вс дек 28, 2014 21:54:05
Сообщений: 615
Рейтинг сообщения: 0
Огурцы да помидоры по сравнению с какими испанскими... Как сравнить? А опыт, а удовольствие? Нечего тут сомневаться, ДЕЛАЙТЕ!

_________________
Я всё-всё узнAю и стану профессором.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 20 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y