Arduino kezdő
Re: Arduino kezdő
Sikerült megvalósítani az elképzelést, még egyszer köszönöm Robert és kapu48!
Re: Arduino kezdő
Most fedeztem fel az arduino 1.8.10-ben, hogy már használható a Serial.printf(); utasítás!
Ez nekem újdonság!
Kód: Egész kijelölése
Serial.printf("HTTP error %d\n", httpCode);
Re: Arduino kezdő
Sziasztok. Abban kérném a segítségetek, hogy melyik regiszterek módosításával lehet power down módba helyezni egy atmega328p-t. Vagy egyáltalán ebben a formában megoldható?
Re: Arduino kezdő
Az adatlap ATmega328P - 9.Power Management and Sleep Modes fejezete:
SMCR, MCUCR, PRR.
http://ww1.microchip.com/downloads/en/D ... asheet.pdf
SMCR, MCUCR, PRR.
http://ww1.microchip.com/downloads/en/D ... asheet.pdf
http://www.tavir.hu - a gazda
Re: Arduino kezdő
Megtaláltam, csak sajnos nem igazán egyértelmű számomra. (kezdő vagyok) Az SMCR-t értem hogy azzal állítom be azt hogy milyen üzemmódba lépjen elalváskor és a SE bit kapcsolja be az alvást. Az MCUCR-t viszont nem értem mi köze van hozzá. A PRR-t pedig külön meg kell adni nem elég kiválasztani, hogy milyen alvási módot választok az SMCR-ben, mert pl power down módban elméletileg lekapcsol, akkor is szükséges hogy előtte kikapcsoljam a timer-eket és a többit? Kérhetném hogy elmagyarázd, sajnos az angol nem az erősségem.
Re: Arduino kezdő
Keresztkérdés: Ha arduino akkor nem egyszerűbb a libraryt használni hozzá?
Mondjuk a beépítetteket:
https://www.arduino.cc/en/Reference/LowPowerDeepSleep
Részletesebben:
https://thekurks.net/blog/2018/1/24/gui ... sleep-mode
És még 3 alternatíva:
http://www.engblaze.com/low-power-libra ... ion-calls/
Vagy ha megismerni csak: egyszerűbb a libraryba belesni, és ott vannak a regisztercímzések....
1, Leveszik a válladról a terhet
2, Arduino alatt _TILOS_ kezdőként regisztereket piszkálni. A keretrendszer sokat használ, és ennek logikáját rúgod fel. Következmény: hibásan működő program.
Magyarul fórumban is volt már elég részletesen körüljárva a _külső_ hardwareeszközökön hogy mi múlik : viewtopic.php?t=1194
Mondjuk a beépítetteket:
https://www.arduino.cc/en/Reference/LowPowerDeepSleep
Részletesebben:
https://thekurks.net/blog/2018/1/24/gui ... sleep-mode
És még 3 alternatíva:
http://www.engblaze.com/low-power-libra ... ion-calls/
Vagy ha megismerni csak: egyszerűbb a libraryba belesni, és ott vannak a regisztercímzések....
1, Leveszik a válladról a terhet
2, Arduino alatt _TILOS_ kezdőként regisztereket piszkálni. A keretrendszer sokat használ, és ennek logikáját rúgod fel. Következmény: hibásan működő program.
Magyarul fórumban is volt már elég részletesen körüljárva a _külső_ hardwareeszközökön hogy mi múlik : viewtopic.php?t=1194
http://www.tavir.hu - a gazda
Re: Arduino kezdő
Egyszerűbb volna, csak szeretném megismerni egy másik projekt okán amiben attiny10 lesz és ott nem lesz elég memóriám a library-hez. Nem is vagyok biztos benne hogy működne. Egy zseblámpa lesz amiben az attiny kapcsolgatja a LED-eket és szeretném ha kikapcsolt állapotban a minimális fogyasztást lehetne kihozni belőle. Belestem a library-be de nem bírtam értelmezni a programját. Annyit értettem hogy hogy az MCUCR-t állítgatja, csak azt nem hogy melyik biteket és hogyan Ja az asm rész meg kínai számomra. Tudom hogy ezzel felrúgom az arduino lényegét, de sajnos a C++ programozást nem ismerem.
Re: Arduino kezdő
Attiny10 és Arduino ????
Öngyilkosság és ősz hajszálak kergetése? -> 1 KByte Flask és 32 Byte! SRAM ????
ASM-ben direktben programozva - esetleg....
A Tiny10-hez MKII programozó kell, AVR-Studioval...
Mielőtt nagyon belemerülnél: A Tiny10-et vágnám ki a fenébe....
Kérdés: melyik utasítás/sor nem megy a Libraryból? (A teljes void fuggveny() részt másold ide - úgy lehet megfogni).
Öngyilkosság és ősz hajszálak kergetése? -> 1 KByte Flask és 32 Byte! SRAM ????
ASM-ben direktben programozva - esetleg....
A Tiny10-hez MKII programozó kell, AVR-Studioval...
Mielőtt nagyon belemerülnél: A Tiny10-et vágnám ki a fenébe....
Kérdés: melyik utasítás/sor nem megy a Libraryból? (A teljes void fuggveny() részt másold ide - úgy lehet megfogni).
http://www.tavir.hu - a gazda
Re: Arduino kezdő
Regiszterek step-by-step használata:
https://gist.github.com/bolandrm/af2ea4db1800df2084c5
és a sleep.h:
https://github.com/vancegroup-mirrors/a ... vr/sleep.h
Értelmezéshez:
_BV
Még egy gyakori utasítás, egészen pontosan makró: _BV(x). Ez egyenértékű egy bit balra léptetésével x lépést. Ezzel lehet adott bitet kiválasztani. Pl. a _BV(0) eredménye bináris 00000001 lesz, a _BV(5) eredménye pedig bináris 00100000, azaz decimális 32.
Még néhány hasonló:
http://faragocsaba.hu/arduino-kamera
A programkód alatt a magyarázatoknál.
https://gist.github.com/bolandrm/af2ea4db1800df2084c5
és a sleep.h:
https://github.com/vancegroup-mirrors/a ... vr/sleep.h
Értelmezéshez:
_BV
Még egy gyakori utasítás, egészen pontosan makró: _BV(x). Ez egyenértékű egy bit balra léptetésével x lépést. Ezzel lehet adott bitet kiválasztani. Pl. a _BV(0) eredménye bináris 00000001 lesz, a _BV(5) eredménye pedig bináris 00100000, azaz decimális 32.
Még néhány hasonló:
http://faragocsaba.hu/arduino-kamera
A programkód alatt a magyarázatoknál.
http://www.tavir.hu - a gazda
Re: Arduino kezdő
Neten találtam arduino-ra feltölthető programozó software-t és hozzá való arduino IDE-t, a program sem lesz bonyolult. A fordító szerint eddig simán elfér. Persze még közel sincs kész. Gyárilag is egy 6 lábú Attiny van benne elég buta programmal amit szeretnék egy kicsit kiokosítani. Persze másikat programoznák fel és forrasztanák a helyére. De könnyen lehet hogy tévedek az egészben de unaloműzésnek jó
Re: Arduino kezdő
Kód: Egész kijelölése
#define set_sleep_mode(mode) \
do { \
MCUCR = ((MCUCR & ~_BV(SM1)) | ((mode) == SLEEP_MODE_IDLE ? 0 : _BV(SM1))); \
MCUCSR = ((MCUCSR & ~_BV(SM2)) | ((mode) == SLEEP_MODE_STANDBY || (mode) == SLEEP_MODE_EXT_STANDBY ? _BV(SM2) : 0)); \
EMCUCR = ((EMCUCR & ~_BV(SM0)) | ((mode) == SLEEP_MODE_PWR_SAVE || (mode) == SLEEP_MODE_EXT_STANDBY ? _BV(SM0) : 0)); \
} while(0)
Kód: Egész kijelölése
#define sleep_cpu() \
do { \
__asm__ __volatile__ ( "sleep" "\n\t" :: ); \
} while(0)
#endif
Nézegettem azokat a sleep programokat amiket linkeltél, de ott mindegyik kikapcsolja a megszakításokat és a BOD-ot. Adatlapban nem találtam utalást arra hogy ezeket ki kell kapcsolni alvó módba küldés előtt.
Re: Arduino kezdő
Megszakítások:
- csak azok legyenek aktívak, amik felkeltsék a processzort
BOD:
- kikapcsolod, mert a tápfeszfigyelés is áramot fogyaszt
- csak azok legyenek aktívak, amik felkeltsék a processzort
BOD:
- kikapcsolod, mert a tápfeszfigyelés is áramot fogyaszt
http://www.tavir.hu - a gazda
Re: Arduino kezdő
Azt hiszem megvan a megoldás Csak eddig nem jól értelmeztem a google fordítót Nem az SMCR SE bitje kapcsolja alvó üzemmódba, az csak engedélyezi hogy mehet. Mindenképp "sleep" utasítás kell neki
Így működik az alvó üzemmód, persze még ebben nincs benne minden energiatakarékos üzemmód. De azt nem értem, hogy elméletileg csak a lefutó élre kellene felébrednie, de a felfutóra is felébred, de lehet hogy csak a prell miatt. A globális megszakításnak pedig muszáj elalvás előtt bekapcsolva lennie, mert másképp nem ébred fel a külső megszakításra.
Kód: Egész kijelölése
void setup() {
pinMode(13, OUTPUT);
pinMode(2, INPUT_PULLUP);
}
void loop() {
digitalWrite(13, HIGH);
delay(700);
digitalWrite(13, LOW);
delay(700);
EICRA = _BV(ISC01);
EIMSK = _BV(INT0);
cli();
SMCR = 0B00000101;
sei();
asm ("sleep");
SMCR = 0B00000000;
}
Re: Arduino kezdő
A prell az sok (10...30) fel és lefutó él....
Más: Alvó üzemmódban a Pullupokat ki kell kapcsolni (áramfelvételt okoz).
Külső ellenállások nem javasoltak...
Más: Alvó üzemmódban a Pullupokat ki kell kapcsolni (áramfelvételt okoz).
Külső ellenállások nem javasoltak...
http://www.tavir.hu - a gazda
Re: Arduino kezdő
Ez nem a végleges program Csak egyáltalán működésre próbáltam bírni a sleep funkciót. A másik nagyon jó kérdés hogy hogyan lehetne kiszűrni a prellt alvó módban? Kondi a kapcsolón? Mert pl ha a egy gombbal teszem alvó módba, a gomb felengedésekor nem volna jó ha fel is ébredne. De erre biztos találok megoldást az interneten. Köszönöm a segítséget. Majd ha készen leszek vele megosztom a kódot itt