Jump to content
Andrey_47

Указатели на отдельные выводы порта. Виртуальный порт

Recommended Posts

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

Решил для начала попробовать с помощью указателей создать переменную, и, чтобы с помощью этой переменной менять значение вывода одного из портов (PORTA0)

Вот как я это пытался делать:

#define F_CPU 8000000UL
#include <avr/io.h>

 int *a;

int main(void)
{
    DDRA |= (1<<0);
    a = &PA0;
    *a = 1;
       
    while (1) 
    {
    }
}


Разумеется ничего не компилируется, потому что вид записи типа  a = &PA0; является неправильным. 

Кто-нибудь знает как сделать правильный вид записи, чтобы с помощью переменной менять уровень одного из выводов порта???

Да и вообще, если есть примеры того, как сделать виртуальный порт из набора выводов других портов пришлите пожалуйста . А то по тому, что имеется в интернете не особо что то понятно.

 

Share this post


Link to post
Share on other sites

Задача абсолютно надуманная.

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

Но, с моей точки зрения, во всех случах это не стоит делать вообще: выгода сомнительная.

Указатель невозможно сделать на данные меньше байта размером.


Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Share this post


Link to post
Share on other sites

Время – деньги и наноамперы: применение часов реального времени Maxim Integrated

Зачем использовать внешнюю микросхему часов реального времени (RTC), а не внутренние RTC микроконтроллера? Хотя бы потому, что у RTC MAX31342 производства Maxim Integrated типовое потребление составляет 150 нА при 3 В и температуре 25°С, а у встроенных RTC одного из самых малопотребляющих микроконтроллеров при тех же условиях – примерно 370 нА.

Читать статью

12.10.2019 в 20:18, Andrey_47 сказал:

Разумеется ничего не компилируется, потому что вид записи типа  a = &PA0; является неправильным. 

епстественно неправильный, потомушта PA0 это не переменная и не адрес , это тупая автозамена дефайном для препроцессора вида:

/* ***** PORTB ************************ */
/* PORTB - Data Register, Port B */
#define    PB0          0       // 
#define    PB1          1       // 
#define    PB2          2       // 
#define    PB3          3       // 
#define    PB4          4       // 

а рабочие регистры описываются через асм вставки в тех же командах препроцессора :

#pragma used+
sfrb PINB=0x16;
sfrb DDRB=0x17;
sfrb PORTB=0x18;
sfrb PINA=0x19;
sfrb DDRA=0x1a;
sfrb PORTA=0x1b;
#pragma used-

усе это живет в инклюдах. и вы можете обозвать любой регистр на свое усмотрение теме же командами. но компилятор кодевиженАВР и еже с ним не позволяют создавать/накладывать переменные/структуры/объединения по конкретному адресу RAM в отличии от компиляторов других МК

и полностью согласен с @ARV для работы виртуальный порт на не нать.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Мало, собственно расчет драйвера ведется не по входной емкости силового транзистора, она сильно изменяется в зависимости от Vgs, а по заряду переключения Qg, конкретно мал выходной ток вывода Gate контроллера. Что касается 5-ти киловатт то на первой странице datdsheet конечно такой цифры нет, там ...in 100-W to Few-kW..., или "...от 100 Вт до нескольких кВт...", но не в этом суть. Микросхема UCC28180 применяется в топологии step-ap, а для мощностей типа 5-ти кВт уже требуется что-то типа Interleaved PFC, а контроллеры там уже совсем другие. Вообще UCC28180 разработали в TI, приведенная мной документация с этой микросхемой тоже от TI и там драйвера, а в Texas Instruments дураки не работают.
    • Нет у переменника "входа" и "выхода", есть равноправные крайние выводы и контакт "бегунка". И то, и другое легко однозначно определить с помощью омметра путем вращения вала регулятора: выводы, сопротивление между которыми не будет изменяться при вращении, являются крайними, соответственно оставшийся (оставшиеся) - и есть "бегунок".
    • вопрос был вполне конкретный. это у тебя данных (знаний) не достаточно. и из-за этого "пустоты" в  знаниях вопрос для тебя получился "пустой".
    • А чем отличается сварочный инвертор от ИИП для усилителя?
    • http://www.payatel.ru/829-mikroshema-cd4026.html и никаких микроконтроллеров
    • А вот и петлевое,
    • Вот тебе модель УМЗЧ, там есть вся необходимая развлекушка. https://yadi.sk/d/1qZTtcRXddj11Q
×
×
  • Create New...