Zpět – pro návrat na předchozí stránku používejte stand. funkce prohlížeče.

 

Úvod-blabla  1

BootLoader-zavaděč vs WatchDog  1

Fukce millis() 1

Př.1  1

Hlasový modul 1

Závěr  1

 

Úvod-blabla

    Jako bastlíř  se věnuju realizacím s mikrokontroléry typu PIC, ATMEL včetně HW i SW. Programy  v céčku. V poslední době jsem se   začal věnovat  projektu Arduino.  Přiměla mě k tomu normální zvědavost a intuice mi říkala, že asi uspořím spoustu času .  Nemá cenu se podrobněji rozepisovat, ale narazil jsem na několik problému  , které jsem  vyřešil s pomocí Internetu. Někdy s dost velkými potížemi, jelikož popisy  ne vždy byly zcela jasné , a které se někdy  zbytečně   odvolávaly na podrobnější znalosti. Proto jsem se rozhodl některé snad jasně popsat,   a které mám ověřeny. Dále se konkrétně věnuju Arduinu zakoupené na ebay s mikrokontrolérem ATmega328P (MC) a označený NANO.  Vývojové prostředí (IDE) používám verze 1.8.2

BootLoader-zavaděč vs WatchDog

   Pokud WatchDog(WD) resetuje MC pak s originálním zavaděčem se program zacyklí a problém je na světě. Zkoušel jsem různá řešení což mi zabralo spoustu času a bez úspěchu. Naposled jsem vyzkoušel vypálit upravený zavaděč a bylo po problémech.  Podívej se na  Př.1  .

Pokud bude zájem mohu upravený zavaděč pro ATmega328p dát k dispozici a zájemce si ho může sám vypálit.  Sice na tom nic není, ale pokud s tím nemáte  žádné zkušenosti , tak doporučuju  poohlédnout se po svém okolí.  

Fukce millis()

   Toto uvádím jen  pro ukázku proč nevadí přetečení  proměnné . Kouzlo tkví v tom, že proměnné se musí definoval jako unsigned long (bez znaménka) . Př.1  napoví

 

Př.1

/* Ukázka přerušení od watchdogu po úpravě zavaděče(BootLoader).

 * Při původním zavaděči se program zacyklí. Ověřeno pro Arduino s

 * MC ATmega328P.

 * Jako vedlejší je ukázka proč "nevadí" přetečení millis()

*/

#include <avr/wdt.h>   // pro watchdog

void setup() {Serial.begin(9600);

Serial.println(F("ISR BootLoaderBldPok."));

wdt_enable(WDTO_4S); //wdt_disable();

}

void loop() { wdt_reset(); //pokud   loop bude delší než 4s , pak se MC resetuje

  unsigned long a,b,c;a=0xffffff00;b=0x0f;c=(b-a);

  Serial.print("a=");Serial.print(a);Serial.print(" ");

  Serial.print("b=");Serial.print(b);Serial.print(" ");

  Serial.print("c=a-b ");Serial.print(a-b);Serial.print(" ");

  Serial.print("c=b-a ");Serial.print(b-a);Serial.println();

  Serial.print("nyni pro b=");b=0xffffffFF; Serial.print(b);//max hodnota

  Serial.print(" c=a-b ");Serial.print(a-b);Serial.print(" ");

  Serial.print("c=b-a ");Serial.print(b-a);Serial.print(" ");

  Serial.println();

  // put your main code here, to run repeatedly:

  delay(3000);

}

Hlasový modul

    Konkrétně pro letecké  modeláře nemající vysílač s telemetrií a chtějí ji nahradit.  Konstrukce spočívá s modulu s ATmega8,BMP0180 (BMP180 Digital Barometric Pressure Sensor Board Module) ,FS1000 (433Mhz RF transmitter and receiver link kit for Arduino )a pro vysílač vysílající data ( zde výška) a modulu přijímače(RXB6 433Mhz Superheterodyne Wireless) s ArduinoNANO-328, hlas. modulWT020  (WTV020 voice module SD card sound U-disk audio player). Vysílající frekvence je 433MHz. Přijímač detekuje vysílající  naměřená data a převede je na  hlas. 

Závěr

Prozatím vše.  Podrobnosti uvedu na požádání.