Страница 616 из 628
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт дек 02, 2021 20:02:17
Олегыч1
ARV,

Вроде все теперь понятно, теперь наступает практика.
Добавлено after 2 hours 51 minute 14 seconds:
А для чего вообще нужна несущая частота в инфракрасных пультах? Ведь инфракрасное излучение передается оптически. Это же не радиоволна...
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт дек 02, 2021 20:52:31
ARV
чтобы выделять сигнал пульта на фоне других инфракрасных излучений. например, любая лампочка светит инфракрасным излучением импульсами 10 мс
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт дек 02, 2021 21:34:21
Олегыч1
Ну и что? Импульсы от лампочки не попадают ни под один протокол) Да какой там, даже если и протокол будет один и тот же, а кодировка другая, то все равно сигнал получается индивидуальный

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт дек 02, 2021 21:49:41
ARV
если вы считаете, что помехи не мешают приему полезного сигнала, мне нечего вам добавить к ранее сказанному. и вообще сомневаюсь в пользе продолжения диалога: очевидные, многократно описанные вещи у вас вызывают удивление и/или сомнение...
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт дек 03, 2021 00:41:34
Олегыч1
ARV, Прошу прощения.

Последние вопросы к данному разделу действительно не относятся...
Добавлено after 9 minutes 28 seconds:
Увлекся...
Кстати, действительно помехи могут мешать. Не подумал... На собственном опыте убедился. приемник радиолюстры вдруг начал переставать принимать сигнал от пульта после первой успешной команды от пульта (включение первой половины люстры). Оказалось косяк шел от 12 вольтовых светодиодных лампочек (аналог галогенных). Внутри каждой лампочки был ШИМ и дроссель помимо прочих компонентов. И видимо его частота как-то конфликтовала с несущей частотой от пульта. Проблему решить увы так и не удалось, кроме как поставить назад галогенки.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт дек 14, 2021 22:08:53
Эйлер Леонард
Добрый вечер. У меня не большой вопросик.
Вот классический код начинающего микроконтроллерщикаСпойлер
// ATtiny85 test
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void){
PORTB |= (1 << PB2);
DDRB |= ( 1 << PB2 );// output
while(1){
PORTB |= (1<<PB2);
_delay_ms(500);
PORTB &= ~(1<<PB2);
_delay_ms(500);
}
}
/*
0x18 PORTB – – PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0
0x17 DDRB – – DDB5 DDB4 DDB3 DDB2 DDB1 DDB0
0x16 PINB – – PINB5 PINB4 PINB3 PINB2 PINB1 PINB0
*/ Необходимо переписать тот же код без использования имен регистров, используя исключительно их адреса (0x18, 0x17, 0x16) согласно ДШ.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 15, 2021 00:00:14
ARV
а слабО проследить по цепочке инклюдников, начиная с avr/io.h, как там все эти PORTB и прочее описаны? вряд ли что-то иное придумать выйдет...
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 15, 2021 21:26:17
Эйлер Леонард
Нет. Чем сейчас я и занимаюсь. Разбираю по запчастям вот
это. Очень интересные файлики
Board.h GPIO.h. Скачал, установил. Немного подкорректировал, что бы отвязаться от Ардуины. Перевожу комментарии. Устал просто.
Добавлено after 4 minutes 48 seconds:
Особенно записывать биты столбиком на листочке и смотреть, что получится после << >> | &
Добавлено after 4 hours 32 minutes 2 seconds:
Решено. Выпотрошил из файла GPIO.h. всё то без чего класс может работать. Пусть не по фэн-шую. Зато теперь всё понятно и работает. А теперь меня заинтересовала идея напр. реализовать таким методом аппаратный SPI интерфейс (да мало ли чего).
Спойлер
/* ATiny85
регистр специального назначения
регистры SFR
*/
#define F_CPU 8000000UL //
#include <avr/io.h>
#include <util/delay.h>
#define GPIO_PIN(port,pin) (((port) << 4) | (pin))
#define GPIO_REG(pin) ((pin) >> 4)
#define GPIO_MASK(pin) _BV((pin) & 0xF)
class BOARD {
public: enum pin_t {
D0 = GPIO_PIN(0x36,0), // PINB:0
D1 = GPIO_PIN(0x36,1), // PINB:1
D2 = GPIO_PIN(0x36,2), // PINB:2
D3 = GPIO_PIN(0x36,3), // PINB:3
D4 = GPIO_PIN(0x36,4), // PINB:4
D5 = GPIO_PIN(0x36,5), // PINB:5
};
};
template<BOARD::pin_t PIN>
class GPIO {
public:
GPIO<PIN>& input() {
SFR()->ddr &= ~MASK;
return (*this);
}
void output(){ SFR()->ddr |= MASK;}
void low(){ SFR()->port &= ~MASK; }
void high(){ SFR()->port |= MASK; }
void write(int value){
if(value){ high(); } else { low(); }
}
bool read(){ return ((SFR()->pin & MASK) != 0); }
void operator=(int value) {
write(value);
}
protected:
struct gpio_reg_t {
volatile uint8_t pin; //!< Port Input Pins.
volatile uint8_t ddr; //!< Data Direction Register.
volatile uint8_t port; //!< Data Register.
};
gpio_reg_t* SFR(){ return ((gpio_reg_t*) GPIO_REG(PIN)); }
static const uint8_t MASK = GPIO_MASK(PIN);
};
GPIO<BOARD::D3> led;
int main(void){
led.output();// пин на выход
while (1) {// мигание светодиодом
led = 1; // зажечь
_delay_ms(500);
led = 0; // погасить
_delay_ms(500);
}
}
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Чт дек 16, 2021 15:54:54
Reflector
[uquote="Эйлер Леонард",url="/forum/viewtopic.php?p=4142042#p4142042"]Пусть не по фэн-шую.[/uquote]
С появлением constexpr перечисления для констант не используют:
Код: Выделить всё
struct BOARD
{
static constexpr auto D0 = GPIO_PIN(0x36,0);
.....
};
И макросы тут лучше заменить constexpr/consteval функциями.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт дек 17, 2021 21:35:53
Эйлер Леонард
Если внутри main() доступ к полям структуры такой:
uint8_t MASK2 = GPIO_MASK(BOARDn::D3); Но вот как структуру сделать параметром шаблона с возможностью доступа к полям, пока затрудняюсь. Голый(не class) enum pin_t в шаблоне такой <pin_t PIN>
Добавлено after 2 minutes 3 seconds:
Код:
Спойлер
/* ATiny85 -std=c++11
регистр специального назначения SFR
*/
#define F_CPU 8000000UL //
#include <avr/io.h>
#include <util/delay.h>
#define GPIO_PIN(port, pin) ( ((port) << 4) | (pin) )
#define GPIO_REG(pin) ((pin ) >> 4)
#define GPIO_MASK(pin) _BV( (pin) & 0xF )
class BOARD {
public:
enum pin_t {
D0 = GPIO_PIN(0x36,0), // PINB:0
D1 = GPIO_PIN(0x36,1), // PINB:1
D2 = GPIO_PIN(0x36,2), // PINB:2
D3 = GPIO_PIN(0x36,3), // PINB:3
D4 = GPIO_PIN(0x36,4), // PINB:4
D5 = GPIO_PIN(0x36,5), // PINB:5
};
};
/*
enum pin_t {
D0 = GPIO_PIN(0x36,0), // PINB:0
D1 = GPIO_PIN(0x36,1), // PINB:1
D2 = GPIO_PIN(0x36,2), // PINB:2
D3 = GPIO_PIN(0x36,3), // PINB:3
D4 = GPIO_PIN(0x36,4), // PINB:4
D5 = GPIO_PIN(0x36,5), // PINB:5
};
*/
/**/
struct BOARDn {
static constexpr auto D0 = GPIO_PIN(0x36,0); // PINB:0
static constexpr auto D1 = GPIO_PIN(0x36,1); // PINB:1
static constexpr auto D2 = GPIO_PIN(0x36,2); // PINB:2
static constexpr auto D3 = GPIO_PIN(0x36,3); // PINB:3
static constexpr auto D4 = GPIO_PIN(0x36,4); // PINB:4
static constexpr auto D5 = GPIO_PIN(0x36,5); // PINB:5
};
//template<pin_t PIN>
template<BOARD::pin_t PIN>
class GPIO {
public:
void output(){ SFR()->ddr |= MASK;}
void low(){ SFR()->port &= ~MASK; }
void high(){ SFR()->port |= MASK; }
void write(int value){
if(value){ high(); } else { low(); }
}
void operator=(int value){ write(value); }
protected:
struct gpio_reg_t {
volatile uint8_t pin; //!< Port Input Pins.
volatile uint8_t ddr; //!< Data Direction Register.
volatile uint8_t port; //!< Data Register.
};
gpio_reg_t* SFR(){ return ( (gpio_reg_t*)GPIO_REG(PIN) ); }
static const uint8_t MASK = GPIO_MASK(PIN);
};
/**/
GPIO<BOARD::D3> led;
//GPIO<pin_t::D3> led;
int main(void){
uint8_t TestMASK = GPIO_MASK(BOARDn::D3);// test
led.output();// пин на выход
while (1) {// мигание светодиодом
led=1; // зажечь
_delay_ms(500);
led=0; // погасить
_delay_ms(500);
}
}
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт дек 17, 2021 21:56:02
VladislavS
[uquote="Эйлер Леонард",url="/forum/viewtopic.php?p=4143525#p4143525"]Но вот как структуру сделать параметром шаблона с возможностью доступа к полям, пока затрудняюсь.[/uquote]
Лучше передавать адрес структуры. Так как порты это volatile сущности, которые из constexpr "вышибают".
Спойлер
Код: Выделить всё
struct PIN
{
volatile int x;
volatile int y;
};
#define PIN_A_BASE (0x1234)
#define PIN_A ((PIN*)PIN_A_BASE)
template <uint32_t PIN_BASE>
class TEST
{
public:
TEST() = default;
static inline void WriteX(int x) { base()->x = x; }
private:
static constexpr auto base() { return (PIN *)PIN_BASE; }
};
using TEST_PA = TEST<PIN_A_BASE>;
TEST_PA pa;
int main()
{
PIN_A->x=0;
TEST_PA::WriteX(1);
pa.WriteX(2);
}
Compiler Exploer
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт дек 17, 2021 22:15:28
O5SCP14
вместо attiny2313 можно поставить attiny2313a, или не прошьётся ?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Сб дек 18, 2021 05:35:48
akl
Можно без исключений.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Сб дек 18, 2021 05:48:34
АлександрЛ
[uquote="O5SCP14",url="/forum/viewtopic.php?p=4143538#p4143538"]вместо attiny2313 можно поставить attiny2313a,[/uquote]
Хотя, вообще- то, с точки зрения некоторых программаторов разница между ними есть, а для других программаторов- нет..

Например, у TL866 они указаны отдельно:
А у AVRDUDESHELL - одной строкой:
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Сб дек 18, 2021 15:05:55
O5SCP14
АлександрЛ писал(а): точки зрения некоторых программаторов разница между ними есть
С точки зрения моего

хочу
lgbtrgb контроллер с ду собрать
https://radioparty.ru/device/avr/390-rg ... attiny2313
но просто 2313 битым оказался, хотя не использовал ни разу, в 2313a зашил так красный светит и 0 реакции. Этот вариант единственный с тв пультом нашёл, потому что все эти специальные пульты это дядя Ляо и ожидание в месяц.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср дек 29, 2021 22:15:26
den2
Ребят подскажите если можно как быть и что делать.
МК СТМ32 на некоторых из МК отваливается СДВ интерфейс и программа его не видит.Приходится прошивать по УАРТ.
Пины Дата и Клок не подтянуты к плюсу питания.Может в этом проблема?Или всёж сам интерфейс в МК мрет?
И если проблема в этом то стоит ли подтягивать и порт УАРТ к плюсу?Для надежности.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн май 30, 2022 17:42:17
Roman Solovey
Поделитесь ссылкой если есть, на терминал у которого есть 9битный режим.. столько их скачал, а такого не нашел((
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн май 30, 2022 19:11:34
ARV
Roman Solovey, ну, чисто теоретически мой терминал может включать 9-битный режим... вот ссылка:
https://cloud.mail.ru/public/Audn/95Vd3Xz1j
только по-моему, драйверы портов этот режим не поддерживают, во всяком случае, мои попытки включить 9 бит дают ошибку
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн май 30, 2022 20:43:24
Roman Solovey
ARV, а как же тогда люди проверяют 9 битный режим? тупо два мк соеденяют?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пн май 30, 2022 21:05:47
ARV
Roman Solovey, понятия не имею, кому он нафиг нужен, этот режим. подозреваю, что никто его и не проверяет и не применяет