Go Down

Topic: [OT] PIC, 8051, MCU e CPU varie (Read 385884 times) previous topic - next topic

PaoloP


testato

Il problema è quando hai SOLO compilatori online.
concordo, vedi mbed
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

BaBBuino

Si, in effetti i compilatori online sono una pessima idea. Se poi penso che devo lasciare il mio codice aziendale sul Cloud, mi vengono i capelli dritti!

Ho provato qualcosa di questi piccoli PIC, ed in effetti non ci fai un granchè, però se devo usare un piccolo ATmega8 per smazzare qualche servizio di IO, questi possono benissimo sostituirlo, anche perchè costano anche meno di un dollaro.

Sono palesemente progettati per orientarsi al mercato del "bianco", del resto un Timer Angolare va più che bene per far girare il motore di una lavatrice.

Cmq li tengo presente per mini-applicazioni. Devo sondare bene cosa ci si può fare con la mini CPLD presente all'interno...


zoomx

BaBBuino,
facci sapere e se lasci del codice accessibile nel cloud fai un fischio.

BaBBuino

Seee.... così vedi i miei segreti, il codice alieno che uso per far blinkare i LED...

Ma nemmeno per sogno! 

zoomx


dally

Code: [Select]

#include <functional>
#include <type_traits>

template<typename BASE>
constexpr bool _isOneOf_f()
{
    return false;
}

template<typename BASE, typename TEST, typename... TYPES>
constexpr bool _isOneOf_f()
{
    return std::is_same<BASE, TEST>::value || _isOneOf_f<BASE, TYPES...>();
}

template<typename BASE, typename... TYPES>
constexpr bool isOneOf = _isOneOf_f<BASE, TYPES...>();


template<typename V1>
constexpr auto _biggestValue_f(const V1 v1)
{
    return v1;
}

template<typename V1, typename... TYPES>
constexpr auto _biggestValue_f(const V1 v1, const TYPES... others)
{
    return std::max(v1, _biggestValue_f(others...));
}

template<typename... TYPES>
constexpr auto biggestTypeSize = _biggestValue_f(sizeof(TYPES)...);



template<typename TOSEARCH>
constexpr int _findTypeIndex_f(const int indexSoFar)
{
    return -1;
}

template<typename TOSEARCH, typename TEST, typename... TYPES>
constexpr int _findTypeIndex_f(const int indexSoFar)
{
    if(std::is_same<TOSEARCH, TEST>::value)
        return indexSoFar;
    else
        return _findTypeIndex_f<TOSEARCH, TYPES...>(indexSoFar + 1);
}

template<typename TOSEARCH, typename... TYPES>
constexpr int findTypeIndex = _findTypeIndex_f<TOSEARCH, TYPES...>(0);



template<typename RETTYPE, typename... ERRORTYPES>
class Except
{
    private:
        char values[biggestTypeSize<RETTYPE, ERRORTYPES...>];
        int whichIsIt = 0;


    public:

        template<
            typename TYPE,
            typename = std::enable_if_t< isOneOf<TYPE, RETTYPE, ERRORTYPES...> >
        >
        Except(TYPE value)
            : whichIsIt{ findTypeIndex<TYPE, RETTYPE, ERRORTYPES...> }
        {
            TYPE *ptr = reinterpret_cast<TYPE*>(&this->values[0]);
            *ptr = value;
        }


        template<
            typename ERRT,
            typename = std::enable_if_t< isOneOf<ERRT, ERRORTYPES...> >
        >
        Except<RETTYPE, ERRORTYPES...> & when(const std::function<void(const ERRT &)> & callback)
        {
            if(findTypeIndex<ERRT, RETTYPE, ERRORTYPES...> == whichIsIt)
                callback(*reinterpret_cast<ERRT*>(&this->values[0]));
            return *this;
        }


        void ok(const std::function<void(const RETTYPE &)> & callback)
        {
            if(whichIsIt == 0)
                callback(*reinterpret_cast<RETTYPE*>(&this->values[0]));
        }
};



you can see my alien code
it's not C, it's not C++, it's
what the fudge & frog is it?
good question @_______@

BaBBuino

#2467
Oct 26, 2016, 05:54 pm Last Edit: Oct 26, 2016, 05:56 pm by BaBBuino
Code: [Select]

#include <functional>
#include <type_traits>

template<typename BASE>
constexpr bool _isOneOf_f()
{
    return false;
}

template<typename BASE, typename TEST, typename... TYPES>
constexpr bool _isOneOf_f()
{
    return std::is_same<BASE, TEST>::value || _isOneOf_f<BASE, TYPES...>();
}

template<typename BASE, typename... TYPES>
constexpr bool isOneOf = _isOneOf_f<BASE, TYPES...>();


template<typename V1>
constexpr auto _biggestValue_f(const V1 v1)
{
    return v1;
}

template<typename V1, typename... TYPES>
constexpr auto _biggestValue_f(const V1 v1, const TYPES... others)
{
    return std::max(v1, _biggestValue_f(others...));
}

template<typename... TYPES>
constexpr auto biggestTypeSize = _biggestValue_f(sizeof(TYPES)...);



template<typename TOSEARCH>
constexpr int _findTypeIndex_f(const int indexSoFar)
{
    return -1;
}

template<typename TOSEARCH, typename TEST, typename... TYPES>
constexpr int _findTypeIndex_f(const int indexSoFar)
{
    if(std::is_same<TOSEARCH, TEST>::value)
        return indexSoFar;
    else
        return _findTypeIndex_f<TOSEARCH, TYPES...>(indexSoFar + 1);
}

template<typename TOSEARCH, typename... TYPES>
constexpr int findTypeIndex = _findTypeIndex_f<TOSEARCH, TYPES...>(0);



template<typename RETTYPE, typename... ERRORTYPES>
class Except
{
    private:
        char values[biggestTypeSize<RETTYPE, ERRORTYPES...>];
        int whichIsIt = 0;


    public:

        template<
            typename TYPE,
            typename = std::enable_if_t< isOneOf<TYPE, RETTYPE, ERRORTYPES...> >
        >
        Except(TYPE value)
            : whichIsIt{ findTypeIndex<TYPE, RETTYPE, ERRORTYPES...> }
        {
            TYPE *ptr = reinterpret_cast<TYPE*>(&this->values[0]);
            *ptr = value;
        }


        template<
            typename ERRT,
            typename = std::enable_if_t< isOneOf<ERRT, ERRORTYPES...> >
        >
        Except<RETTYPE, ERRORTYPES...> & when(const std::function<void(const ERRT &)> & callback)
        {
            if(findTypeIndex<ERRT, RETTYPE, ERRORTYPES...> == whichIsIt)
                callback(*reinterpret_cast<ERRT*>(&this->values[0]));
            return *this;
        }


        void ok(const std::function<void(const RETTYPE &)> & callback)
        {
            if(whichIsIt == 0)
                callback(*reinterpret_cast<RETTYPE*>(&this->values[0]));
        }
};



you can see my alien code
it's not C, it's not C++, it's
what the fudge & frog is it?
good question @_______@
Hahaha... questa volta mi hai fatto ridere!

A good example of "Obfuscated coding"!

speedyant

Hanno iniziato prima di venerdi
https://github.com/stm32duino/BoardManagerFiles

Boards available: - STM32F103RB-Nucleo - STM32L476RG-Nucleo




Sono tentato... Tentatissimo...
Avrei anche una scheda compatibile, forse due, pare che sia presente anche la nucleof091rc.

testato

#2469
Mar 30, 2017, 06:01 pm Last Edit: Mar 30, 2017, 06:01 pm by Testato
non perdere tempo, roba ferma dal rpimo rilascio, ST sperava che la community gli facesse gratis il lavoro, avevano fatto male i conti.
E' praticamente un progetto abbandonato al momento.

Altro discorso il core "originale" stm32duino, quello e' stabile ed affidabile, ma ugualmente non fa progressi.
Ho presentato alcune PR che non vengono mergiate per mancanza di tempo da parte del mantainer nel testarle
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

speedyant

Io mi riferivo anche a quanto segnalato su http://www.emcu.eu/, dove cita "How to use STM32 in the ARDUINO IDE".

Comunque mi basta, per ora, sapere che i pic32 sono comunque supportati tramite le board della chipkit.


zoomx

Io mi riferivo anche a quanto segnalato su http://www.emcu.eu/, dove cita "How to use STM32 in the ARDUINO IDE".
Fa riferimento ai core di STM32duino di cui parla Testato.

speedyant

Ma per i pic 8bit c'è qualche "porting" da provare?

zoomx

Per i PIC mi pare ci fosse qualcosa ma non l'ho mai provato.

Intanto ST ha pubblicato la prima release del core F4
https://github.com/stm32duino/Arduino_Core_STM32F4

Testato, non sono solo le tue pull request ad essere in coda ma anche quelle di alcuni che hanno contribuito parecchio al core. E' che Roger sembra molto indaffarato. Sul forum avevano parlato di una gestione più collegiale proprio per evitare questo ma non so com'è finita.

speedyant

Io "butto un occhio"... Ci fosse il supporto per la discoveryf4...

Go Up