Generování maximální frekvence – Arduino, ESP, Raspberry Pi

Tento pokus navazuje na minulý článek, ve kterém jsem zkoušel generovat signál Arduinem. Tentokrát porovnám možnosti Arduino UNO, ESP-01 a Raspberry Pi 3.

  1. Arduino UNO – první jsem testoval známou pokusnou desku Arduino UNO. Použitý čip je ATmega328 a běží na frekvenci 16MHz.Program jsem napsal v Arduino IDE a má jen pár řádků:                                               
    void setup() 
     {
     pinMode(13,OUTPUT);    //nastavení pinu 13 jako výstup
    }
    
    void loop()             //hlavní smyčka
     {
     digitalWrite(13,HIGH); //pin 13 log.1
     digitalWrite(13,LOW);  //pin 13 log.0
    }

    S tímto nejjednodušším programem jsem dosáhl výstupní frekvence asi 145kHz při spotřebě desky 49mA.

  2. ESP-01 – druhá v pořadí je miniaturní destička ESP-01.                                                   Použitý čip je ESP8266 a běží na frekvenci 80MHz.Program je opět v Arduino IDE, první verze je prakticky shodná jako u Arduina:    
    void setup() 
     {
     pinMode(0,OUTPUT); //nastavení pinu 0 jako výstup
    }
    
    void loop()          //hlavní smyčka
     {
     digitalWrite(0,HIGH); //pin 0 log.1
     digitalWrite(0,LOW);  //pin 0 log.0
    }

    S tímto programem jsem dosáhl tohoto průběhu na výstupu: Frekvence je sice 160kHz ale jde prakticky jen o 440 ns impulzy s 5,8 us mezerami. Pro vytvoření průběhu se střídou signálu 1:1 je potřeba upravit program:                                                                                                                                     

    void setup() 
     {
     pinMode(0,OUTPUT);     //nastavení pinu 0 jako výstup
    }
    
    void loop()             //hlavní smyčka
     {
     digitalWrite(0,HIGH);  //log.0 na pin 0
     delayMicroseconds(4);  //čekej 4 us
     digitalWrite(0,LOW);   //log.1 na pin 0
    }

    S tímto programem jsem dosáhl frekvence asi 91 kHz a se střídou téměř 1:1 při spotřebě 152 mA (včetně USB převodníku).

  3. Raspberry Pi 3 – Poslední testovaná deska je miniaturní počítač Raspberry Pi 3. Použitý čip je čtyřjádrový 64-bitový ARMv7 s frekvencí 1,2 GHz a OS Linux.Program je tentokrát napsaný v jazyku Python 3 a je také velmi jednoduchý:           
    import RPi.GPIO as GPIO  #přidání knihovny pro ovládání pinů
    GPIO.setmode(GPIO.BOARD) #číslování pinů
    GPIO.setup(7, GPIO.OUT)  #nastavení pinu 7 jako výstup
    while True:              #hlavní smyčka
     GPIO.output(7, True)    #log.1 na pin 7
     GPIO.output(7, False)   #log.0 na pin 7

    S tímto programem jsem dosáhl výstupní frekvence 198 kHz při spotřebě 350mA.

Závěrečné zhodnocení

V první řadě je třeba zdůraznit že každá z testovaných desek má jiné původní určení. ESP je dělané pro jednoduchou komunikaci pomocí wi-fi sítě a Raspberry Pi je kompletní počítač s plnohodnotným operačním systémem se všemi plusy i mínusy. Jediná deska která je určená pro nízkoúrovňové programování je Arduino. Tomu odpovídají naměřené výsledky:

  • Arduino UNO – 145 kHz při 49 mA
  • ESP-01             – 91 kHz při 152 mA
  • Raspberry Pi – 198 kHz při 350 mA

 

PS: Jsem si vědom i jiných možností programování jako je využití jazyka C nebo přímo asembleru při jejichž využití by došlo k dosažení vyšších frekvencí. Chtěl jsem ukázat čeho je možné dosáhnout při použití laicky známých prostředků.

11 komentářů u „Generování maximální frekvence – Arduino, ESP, Raspberry Pi“

  1. Můžu zkusit to samé v assembleru na PMI-80, má to však jeden háček – nemám to čím změřit 😀

        1. Sám nevim, všechno už sem povyměňoval a stejně to nejde, mam objednanej log. analyzátor tak na to pak zas možná kouknu.

          1. Aha… shodou okolností řeší jeden můj kamarád dost podobnej problém, asi se zamyslím nad nějakou diagnostickou kartičkou. To je originál původní PMI, replika PMI a nebo PMI nově postavené na originálním DPS z Piešťan? Jsou totiž na Aukru dostupné a dost lidí už nakoupilo, včetně mě, ale po doručení zboží jsem zjistil že to jsou DPS patrně z výroby vyřazené, protože kvalita je trochu horší a jsou viditelné různé nedostatky – tak jestli to nemůže být ta příčina (tj. proměřit spoje)…

          2. Mam repliku PMI-80M16. Teď čekam na log. analyzátor tak uvidim co pak uvidim 🙂

  2. Pod posledními dvěma příspěvky není tlačítko „Odpovědět“, tak jsem zvědav kam se to zařadí…

    Také mám M16 (č.007), při sestavování jsem zjistil že ta deska nemá moc kvalitně udělané prokovy (psal jsem to tehdy i Nostalcompovi), tak jsem všechny prokovy (bez součástky) procínoval a všechny součástky pájel oboustranně. Takže doporučuji zaměřit se i na tuto stránku, pokud by se při opravě následně podezření potvrdilo tak bych pak poprosil o odezvu… je na Vás kdyžtak nějaký kontakt (nemyslím tím kontaktní formulář na webu a podobně)?

      1. Budu se těšit. S tím kontaktem: Pak jsem taky zjistil, ale nejprve jsem přehlídnul, proto jsem se (zbytečně) zeptal. Takže se omlouvám, a také děkuji za tolerantní odpověď 🙂

        1. Tak kamarádovo PMI už funguje – nefungoval oscilátor, protože 8224 neměla +5V napájení, protože byly špatně propájené některé spoje na paticích (což by svědčilo opět na horší prokovy a kvalitu desky, byla to replika na novém DPS).

          Co to vaše?

          1. Ahoj, já jsem se k tomu ještě nedostal a nevim kdy dostanu 🙂 Jinak dobrá práce 😉

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *