Hirdetés

2024. május 3., péntek

Gyorskeresés

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2023-03-11 00:46:52

LOGOUT.hu

Arduino hardverrel és szoftverrel foglakozó téma. Minden mikrovezérlő ami arduinoval programozható, és minden arduino program, board, és hardverrel kapcsolatos kérdések helye.

Összefoglaló kinyitása ▼

Hozzászólások

(#3151) Gergosz2 válasza Sokimm (#3150) üzenetére


Gergosz2
veterán

tárolásra. Nem is tudom mit mondjak, gondolj olyanra, hogy megakarod számolni, hányszor kapcsolt ki meg be az arduniod vagy bármi egyéb dologra, ahol táp nélkül akarod megtartani az értékeket.

[ Szerkesztve ]

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#3152) Teasüti válasza Sokimm (#3150) üzenetére


Teasüti
nagyúr

Én pl. kalibrációs értékeket mentek el benne, amit onnan tölt be egy esetleges reboot esetén.

Flash élettartam.
A CPU meg évtizedeket szolgálhat. Igazából én még csak nem is hallottam hír szinten se öregségben elhunyt processzorról eddig életemben.
A 20-30 éves PC-k is vígan futnak még, persze ha az alaplap és rajta a kondik bírják még.

[ Szerkesztve ]

(#3153) Teasüti


Teasüti
nagyúr

MPU6050 lelkivilágához ért itt vki?

Átnyálaztam magam ezen, mellé felcsaptam még ezt is.
Viszont akad pár kérdésem, amit nem értek, infót neten nem találtam, a program és a kézikönyv nem tárgyalja.
Pl. a FIFO olvasása és írása hogy működik?
Van egy FIFO_R_W regiszterem, de ez csak egyetlen bájt az 1024-ből. Szóval ezt miként használja a modul? Az olvasás gondolom úgy megy, mint a 60 KB soros puffer esetén, hogy a kiolvasott adat helyére a sorban következő kerül míg ki nem ürül a FIFO. Így van?
Viszont az írás teljesen ködös, egyáltalán mit és miért kéne ebbe írni kívülről az adatbusz felől?

Aztán ott van a low pass filter és a sample rate.
Ha jól értem a kézikönyvet, akkor a chip a mintavételi frekinél alacsonyabb szűrő frekivel írja ki a szűrt értéket a regiszterbe.
Viszont ennek látszólag ellenmond az alábbi kód:
// Configure MPU6050 gyro and accelerometer for bias calculation
writeByte(MPU6050_ADDRESS, CONFIG, 0x01); // Set low-pass filter to 188 Hz
writeByte(MPU6050_ADDRESS, SMPLRT_DIV, 0x00); // Set sample rate to 1 kHz
writeByte(MPU6050_ADDRESS, GYRO_CONFIG, 0x00); // Set gyro full-scale to 250 degrees per second, maximum sensitivity
writeByte(MPU6050_ADDRESS, ACCEL_CONFIG, 0x00); // Set accelerometer full-scale to 2 g, maximum sensitivity

uint16_t gyrosensitivity = 131; // = 131 LSB/degrees/sec
uint16_t accelsensitivity = 16384; // = 16384 LSB/g

// Configure FIFO to capture accelerometer and gyro data for bias calculation
writeByte(MPU6050_ADDRESS, USER_CTRL, 0x40); // Enable FIFO
writeByte(MPU6050_ADDRESS, FIFO_EN, 0x78); // Enable gyro and accelerometer sensors for FIFO (max size 1024 bytes in MPU-6050)
delay(80); // accumulate 80 samples in 80 milliseconds = 960 bytes

Tehát 80 ms-et vár, ami e szerint 80 minta (1 kHz). Viszont feljebb meg 188 Hz-es lowpass van beállítva, szóval ezt nem értem.

A célom az volna, hogy egy tetszőleges lowpass frekvencián megtöltsem a FIFO-t a gyorsulásérzékelő adataival, majd ezt burst read módban kiolvasni relatíve ritkán, hogy a fő programomat ne lassítsa be a 200 hz-es I2C olvasás szerencsétlen Uno-n. E helyett mondjuk a megengedhető legnagyobb késleltetéssel végezni egyetlen I2C műveletet a teljes FIFO puffert kiemelve, majd matekozni.
Ehhez talán interrupt se fog kelleni, max flag-ként.
Illetve azon fílózom még, hogy ha overflow interrupt-ot választok, akkor a FIFO eleje már felülírodott, mire jön a jel? Mert tök jó lenne úgy időzíteni a burst read-et is, hogy teli puffernél olvasson.

szerk: illetve továbbra se tudok interrupt-ban I2C műveletet végezni. Ez normális?

Köszi! :R

[ Szerkesztve ]

(#3154) Sokimm válasza Gergosz2 (#3151) üzenetére


Sokimm
senior tag

Köszönöm szépen! Neked is Teasüti! Már világos, hogy mért nem értettem, mivel még nem volt szükségem ilyen dologra (tárolni valamit a programon kívül), de már tudom merre induljak tovább!
Az élettartam dolgokra is köszi a linket, akkor nem félek, hogy a redőnyöm (vezérlője) bedöglik pár hónapon belül. :P

[ Szerkesztve ]

(#3155) tvamos válasza Sokimm (#3150) üzenetére


tvamos
nagyúr

ROM, ami elektronikusan írható
Nem, az a PROM. A ROM az, amit a gyarban programoznak be.[link]
Ezeknel a prociknal nem tudom, hogy tudsz-e a Flash-be irni programkodbol, futasi idoben, szerintem nem, ha kell valamire non-volatile memory, csak az EEPROM-ban tudod tarolni. (Nagyobb prociknal, pl ARM, tudsz a Flash-be irni.)

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#3156) hermit válasza fpeter84 (#2908) üzenetére


hermit
tag

Szia,

megerkezett az 5100-as ethernet shield-em.

Ha rateszem a megara, akkor el sem tud indulni, csak a piros led-je vilagit a meganak; ill. az ethernet-nek is.
Ha teszek a setup-ba egy led villogtatast, akkor meg idaig sem jut el az ethernettel. Lehet hogy hibas az ethernet modul es megfogja az egesz megat?

Szerencsere a kijelzoje jol mukodik!

(#3157) fpeter84 válasza hermit (#3156) üzenetére


fpeter84
senior tag

A LED-nek erőteljes a fénye vagy csak pislákol? Ha utóbbi akkor rövidzárlatra tippelnék, ha nem akkor valami mással akasztja meg a kontrollert... Nézd át az egészet, hogy valahol nem látsz e megfolyt ónt a lábak között...

Tápot USB-ről kap vagy külső tápról? Utóbbit mindenképpen érdemes kipróbálni, hátha csak nem bírja a portod...

(#3158) gyapo11 válasza tvamos (#3155) üzenetére


gyapo11
őstag

Szerintem lehet írni a flashbe: link

menyország -> mennyország, akadáj -> akadály, jótálás -> jótállás, Iphoneal > Iphone-nal, kisuly > kisujj, csővet > csövet

(#3159) omárserif


omárserif
újonc

Sziasztok!
Nagyon kezdő vagyok a témában, most került hozzám egy MEGA 2560.
Kérdésem, hogy az USB csatlakoztatás után folyamatosan villog a Teszt "L" led, és ezt semmilyen módon nem tudom megszüntetni.
Előre is köszi.

(#3160) Gergosz2 válasza omárserif (#3159) üzenetére


Gergosz2
veterán

gondolom a Blink progi van rátöltve.

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#3161) omárserif


omárserif
újonc

Nem, semmi nincs rákötve, teljesen szűz board.

(#3162) tibi-d válasza omárserif (#3161) üzenetére


tibi-d
tag

Én is kaptam olyan UNO-t, amin alapból villogott a LED. A "gyárban tesztelés céljából" feltöltötték a Blink programot a panelre, hogy a vevő lássa, hogy működik. Próbaképp egy másik programot tölts rá. Ha megszűnik a villogás, akkor ez volt a helyzet.

(#3163) fpeter84 válasza omárserif (#3161) üzenetére


fpeter84
senior tag

Nekem eddig az összes kínai nano/uno/mega/due mind a blink progival feltöltve jött - nyilván amikor a bootloadert sütik bele akkor azzal együtt ezt is megkapja...

(#3164) mekkGyver


mekkGyver
aktív tag

Üdv. Írok egy programot tabletre, ami soros porton arduinoval vezérelne egy autórádiót. Egy kb. 12 gombból álló bill. mátrixot kellene nyomkodnia. Kézenfekvő megoldás lenne egy relékből, vagy optokból álló kapcsolás, de egyrészt macerás, másrészt felesleges költségnek gondolom, mert szerintem simán meg lehetne oldani közvetlenül az arduino be/kimeneteivel. Épített már valaki hasonló kapcsolást? Jó lenne ha lenne valami példa program kiindulásnak. (Ha összejön, így szeretném megoldani a beltérim kapcsolgatását is wifin keresztül, mert az infra sokat hibázik.)

Idegeskedni nem más, mint mások hülyesége miatt magunkon bosszút állni.

(#3165) omárserif


omárserif
újonc

Sajnos ha más programot töltök rá akkor is tovább villog :((

(#3166) tvamos válasza gyapo11 (#3158) üzenetére


tvamos
nagyúr

Ez nem konstansokat tárol a program memóriában?

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#3167) Gergosz2 válasza tvamos (#3166) üzenetére


Gergosz2
veterán

de

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#3168) tvamos válasza Gergosz2 (#3167) üzenetére


tvamos
nagyúr

Akkor futasi idoben ez sem ir a program memoriaba?

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#3169) Teasüti válasza tvamos (#3168) üzenetére


Teasüti
nagyúr

Nem.

Eleve ezt hogy oldják meg arm-nél, h ne írd felül a programot? Van egy lefoglalt terület a flash-ben, vagy te magad "partícionálhatsz" fordítás után?

MPU6050-hez senki nem ért?

[ Szerkesztve ]

(#3170) Janos250 válasza omárserif (#3165) üzenetére


Janos250
őstag

Akkor nem sikerült a rátöltés!

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#3171) tvamos válasza Teasüti (#3169) üzenetére


tvamos
nagyúr

Simán átmásolod a programot RAM-ba, onnan futtatod, és írod a flash-t. Újabban már ez sem kell, lapokra van osztva a flash, egyikben fut a kód, másikat írod.

De tuti Arduinon is lehet akkor, mert van bootloader. Akkor rosszul tudtam, az újabb avr-eknél biztosan lehet.

Aha, ja. Ha eltolod, felülírod a kódot.

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#3172) hermit válasza fpeter84 (#3157) üzenetére


hermit
tag

Eroteljes a megan es az etherneten is, de mind a ketton csak a a piros led vilagit. Ha rajt van az ethernet, akkor latszik a mega a programozo tool-ban.
Atneztem, nem lattam rajt semmi olyat, amit rovidzart okozhatna.
Eloszor usb-rol probaltam, majd kulso taprol is, de sajnos ugyanaz lett a vegeredmeny mindket esetben. :-/

(#3173) Teasüti


Teasüti
nagyúr

Miért van az, hogy az alábbi 3 soros kód részlet - hőmérséklet olvasása MPU6050-ről - nem fut le a setup()-ban (rawData[ ] nem tartalmaz semmit), míg a loop()-ban igen?

szerk: nem aktuális, delay megoldotta.
Gondolom a szenzor reset után még nem volt adat, mikor olvasott az Uno. :F

//temperature from MPU6050
Serial.println(readTempData());
Serial.print(float(readTempData()/340.0 + 36.53), 2);
Serial.println(" °C");

int16_t readTempData()
{
uint8_t rawData[2]; // x/y/z gyro register data stored here
readBytes(MPU6050_ADDRESS, TEMP_OUT_H, 2, &rawData[0]); // Read the two raw data registers sequentially into data array
Serial.println(rawData[0], BIN);
Serial.println(rawData[1], BIN);
return ((int16_t)rawData[0]) << 8 | rawData[1] ; // Turn the MSB and LSB into a 16-bit value
}

void readBytes(uint8_t address, uint8_t subAddress, uint8_t count, uint8_t * dest)
{
Wire.beginTransmission(address); // Initialize the Tx buffer
Wire.write(subAddress); // Put slave register address in Tx buffer
Wire.endTransmission(false); // Send the Tx buffer, but send a restart to keep connection alive
uint8_t i = 0;
Wire.requestFrom(address, count); // Read bytes from slave register address
while (Wire.available()) {
dest[i++] = Wire.read();
} // Put read results in the Rx buffer
}

[ Szerkesztve ]

(#3174) Teasüti válasza Teasüti (#3173) üzenetére


Teasüti
nagyúr

Van egy felfutási ideje a hőmérőnek reset után. Érdekes.
Úgy 4-500 ms kell neki init után, mire valós adatot mutat.
Vagyis nem volt elég megvárni, míg megjött az első data ready interrupt.

(#3175) tvamos válasza Teasüti (#3174) üzenetére


tvamos
nagyúr

En csak annyit latok, hogy PLL setting time: 10ms + Gyroscope start-up time 30ms.
Meg meg, hogy a FIFO-bol olvassa a homersekletet, amit nemmtudom mekkora. Gondolom be lehet allitani.

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#3176) DougButabi


DougButabi
tag

Sziasztok!

Nagyon elakadtam, a segítségeteket kérem.

Rf kommunikációval próbálkozok ( VirtualWire). Tudok mindenféle adatot küldeni, de a string változó kifogott rajtam, egyszerűen nem megy sehogy.

Találtam egy ilyen példát ami látszólag pont megoldás nekem, csak az a baj, hogy nem működik, nem küld semmit:

void SendData(String Data)
{
//Making char Array of String
const char* rawdata = Data.c_str();

vw_send((uint8_t *)rawdata, strlen(rawdata)); //Send Data
vw_wait_tx(); // Wait until the whole message is gone
}

viszont ez működik tökéletesen:

char *controller;
controller="blablabla" ;
vw_send((uint8_t *)controller, strlen(controller));
vw_wait_tx(); // Wait until the whole message is gone

Valakinek ötlet?

(#3177) zka67 válasza DougButabi (#3176) üzenetére


zka67
őstag

Szia, írasd ki soros porton a rawdata karaktereit (hexában) és az strlen értékét, és meglátod hogy van-e különbség az elvárt és a valós értékek között.

(#3178) DougButabi válasza zka67 (#3177) üzenetére


DougButabi
tag

Megnéztem, tökéletesen az elvárt eredményt hozza, látszólag semmi hiba, mindössze nem küldi el az üzenetet:

Talán így jobban érthető, egy receiver arduino-n csak a második üzenetet kapom meg.

void loop
{
SendData("Hello");
delay(50000);
}

void SendData(String Data)
{

//Ez nem működik semmi pénzért

const char* rawdata = Data.c_str();
vw_send((uint8_t *)rawdata, strlen(rawdata));
vw_wait_tx();

//Ez pedig simán elmegy

char *Uzenet;
Uzenet = "Hello2";
vw_send((uint8_t *)Uzenet , strlen(Uzenet ));
vw_wait_tx();

}

(#3179) zka67 válasza DougButabi (#3178) üzenetére


zka67
őstag

Szia, szerintem a const körül lesz valami, ha jól sejtem, akkor a const a kódmemóriába kerül, míg te a ram címét adod át. Próbáld meg, és vedd ki azt a const-ot.

(#3180) DougButabi válasza zka67 (#3179) üzenetére


DougButabi
tag

Megpróbáltam,
Erre:
char *rawdata = Data.c_str();

Ezt mondja:
invalid conversion from 'const char*' to 'char*'

(#3181) Daszkalosz19


Daszkalosz19
aktív tag

Sziasztok!
most kezdem tanulgatni az aurdino programozást és találtam egy jó kis [oldalt],de az ott található arduino kódok ellenőrzés után mindegyik re hibát ír ki.
Mindre a void setup-ra!
Mi lehet a hiba?
Nézzétek el tudatlanságom,még kezdő vagyok :U
/*
AnalogReadSerial
Analóg kiolvasás és soros port
Az analóg 0 pinből olvassa ki az értékeket, amiket utána serial monitoron kiír. A potméter középső lábát A0-ba kötjük, a két szélsőt az 5 V-ba és a földbe. -
*/

void setup() {
// inicializáljuk a soros kommunikációt 9600 bits/mp-en:
Serial.begin(9600);
}

void loop() {
// kiolvassuk a bemenetet analóg 0 pinen:
int sensorValue = analogRead(A0);
// kiprinteli a kiolvasott értéket:
Serial.println(sensorValue);
delay(1);
// a delay késlelteti a kiolvasást, a stabilitás érdekében
}

(#3182) Teasüti válasza Daszkalosz19 (#3181) üzenetére


Teasüti
nagyúr

Nálam lefordítja így ahogy van. :F
Gondolom friss verziód van neked is.

[ Szerkesztve ]

(#3183) Teasüti válasza tvamos (#3175) üzenetére


Teasüti
nagyúr

Ezt hol látod? Átsiklottam felette biztos.
Arról nincs infód véletlenül miért kell a PWR_MGMT_1 regiszterben a reset után még külön ébreszteni (kinullázni a regisztert)? A doksi szerint ha végez a reset-tel, akkor ez a kapcsoló automatikusan átfordul nullába. De nálam vmiért nem és nem is működik a modul, amíg külön nem írok nullákat ide.

DEVICE_RESET: When set to 1, this bit resets all internal registers to their default values.
The bit automatically clears to 0 once the reset is done

FIFO-t nem használok jelenleg. felraktam maxra a lowpass filtert, aztán csak a regisztereket olvasom.
Egész jó eredményt ad, mintavételezéssel és átlagolással se kapnék szükségszerűen jobb eredményt, de legalább megspórolok némi cpu időt. :)

MÁS
Watchdog interrupt-ra tud vki egy tutorial-t példával?
Csak olyan cikket találtam, ami egy erre épülő library-t mutat be, de nem akarok library-t használni, amikor pár sor az egész és legalább látnám mit is csinál regiszter szinten a kód.
(Lassan meg kéne néznem mi is az a library és hogy lehet létrehozni sajátot.)

[ Szerkesztve ]

(#3184) tvamos válasza Teasüti (#3183) üzenetére


tvamos
nagyúr

Itt: [link]
Letoltottem a datasheetet, ott olvastam.

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#3185) tvamos válasza Teasüti (#3183) üzenetére


tvamos
nagyúr

Hat, ne haragudj, ezt nem tudom. En ST-t hasznalok, es azt sem Arduinoval.

"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János

(#3186) Janos250 válasza Daszkalosz19 (#3181) üzenetére


Janos250
őstag

Nekem is lefordítja. Írd ide, mit ír ki hibaként, hogy tudjunk segíteni!
Továbbá:
Milyen Arduino panelt használsz? (pl. UNO, stb.)
Melyik verziót használod az Arduino környezetből? 1.6.9 jelenleg a legújabb, de a régebbiek is jók.
Ugye innen (https://www.arduino.cc/en/Guide/HomePage) töltötted le? (Találtam már a neten máshol berhelt verziót)
Az installálós, vagy a portable verziót használod?
(Portable attól lesz, hogy a zip fájlt egyszerűen kicsomagolod, és első indítás ELŐTT csinálsz benne egy portable könyvtárat. Ugyanott, ahol a többi könyvtár is van. Ő csinál magának a portable könyvtárban a programjaidnak egy sketchbook könyvtárat, ahova a programjaidat teszi. Indítani az arduino.exe indításával lehet. A portable verzió ide rakja a saját dolgait, és békén hagyja a dokumentumok könyvtárat. ELVILEG bárhova áthelyezve működik, és ha több portable verzió van egymás mellett, nem zavarják egymást.)

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#3187) soldi3r


soldi3r
veterán

Lenne egy bizonyos dolgom, amit szeretnek szemmel tartani, kovetnek, nevezzuk autonak.
Err van tobb celeszkoz is, amit a gpslive elofizetessel tudok hasznalni, szoval ezt kipipalnam.
Viszont megoldhato, hogy egy kis kamerat is elrejtsek benne es valahogy ennek a kepet tovabbitsam egy adott helyre? pl egy Arduino segitsegevel?
Talaltam hasonlo projektet, de nem tudom, hogy ez mennyire lehet eletkepes. Sajnos celeszkozt erre nem talaltam.

E30 (oo=[][]=oo)

(#3188) Janos250 válasza soldi3r (#3187) üzenetére


Janos250
őstag

IP camera.
Hálóra (pl. mobil internet, SIM kártyás router, arduino) kötve tudod nézni a kamera képét.

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#3189) soldi3r válasza Janos250 (#3188) üzenetére


soldi3r
veterán

Igen. Ez a kerdes, hogy pl egy Arduinon keresztul tudom e nezni a kepet.

E30 (oo=[][]=oo)

(#3190) Daszkalosz19 válasza Janos250 (#3186) üzenetére


Daszkalosz19
aktív tag

Szia!
Arduino megám van és az 1.6.5 verziót használom exe telepítős nem portable és a hivatalos oldalról töltöttem le.
Viszont a többi kódot betölti csak a Rékásat nem!

Ez a hibakód!
Arduino: 1.6.5 (Windows 8.1), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

Build options changed, rebuilding all

_03AnalogPin.ino: In function 'void setup()':
_03AnalogPin:7: error: redefinition of 'void setup()'
sketch_jun14a:1: error: 'void setup()' previously defined here
_03AnalogPin.ino: In function 'void loop()':
_03AnalogPin:12: error: redefinition of 'void loop()'
sketch_jun14a:6: error: 'void loop()' previously defined here
redefinition of 'void setup()'

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.

(#3191) Janos250 válasza Daszkalosz19 (#3190) üzenetére


Janos250
őstag

Így van beállítva?

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#3192) Janos250 válasza Daszkalosz19 (#3190) üzenetére


Janos250
őstag

Hopsz, látom, igen, úgy van beállítva.
Akkor a következő lépés, hogy a file/preferences menüben berakod a pipát a
Show verbose output during részben a compilation elé.
Akkor igen szószátyár lesz, minden lépést kommentál, de akkor talán több látszik, hogy hol akad el.

Azt gyanítom, hogy valami vagy hiányzik, vagy összekavarodott.
Lehet, hogy új letöltés lesz a vége.
Megpróbálhatod egy új letöltést, és a ha a portable verzióval használod, nem zavarja meg a már meglévő installáltat.

Az amerikaiak $ milliókért fejlesztettek golyóstollat űrbéli használatra. Az oroszok ceruzát használnak. Én meg arduinot.

(#3193) Gergosz2 válasza Daszkalosz19 (#3190) üzenetére


Gergosz2
veterán

nincs véletlen kettő loop-od meg setup-od? Akkor szokott ilyen hibákat dobni, ha egy már meglévő változót/függvény nevét használod egy új névnek.

Nokia 6030 Hardcore User // I Panic Restaurant by Taito

(#3194) Daszkalosz19 válasza Janos250 (#3191) üzenetére


Daszkalosz19
aktív tag

így van beállítva igen

(#3195) Daszkalosz19 válasza Gergosz2 (#3193) üzenetére


Daszkalosz19
aktív tag

Nincs kettő. De én is azt gyanítom,hogy valami hiányzik.
Szerintem újra telepítem és kiderül

(#3196) Daszkalosz19


Daszkalosz19
aktív tag

Újra telepítettem,de ugyanaz a hiba :U
Portable verziónál is
Közben meg lett a hiba :)
Gergosz2: Tényleg két db volt belőle!!!

[ Szerkesztve ]

(#3197) Daszkalosz19 válasza Gergosz2 (#3193) üzenetére


Daszkalosz19
aktív tag

Nem hittem volna,hogy a sketch-et betőltve a kezdő fül bezavarja!
Köszönöm a segítségeteket :R

(#3198) tothop válasza Sleed (#1) üzenetére


tothop
újonc

Sziasztok,
Keresek valakit, aki ismeri / dolgozott már Arduino mikrokontrollerrel.
Munka lenne számára. tothp@tavasz56.hu ill. 20/775-9411
Tóth Péter

(#3199) Teasüti


Teasüti
nagyúr

Watchdog témakörben van itt egy cikk, ami vhogy elmenti egy ISR_NAKED interrupt-tal, hogy hol lett megszakítva a program. Ez debug-ra volna jó, hogy aztán lehessen látni visszafejtés után pontosan milyen parancsnál fagyott le a futtatás.

Function called when the watchdog interrupt fires. The function is naked so that
we don't get program stated pushed onto the stack. Consequently the top two
values on the stack will be the program counter when the interrupt fired. We're
going to save that in the eeprom then let the second watchdog event reset the
micro.

Nem fordul le a példa program, szóval szeretném újraalkotni alacsony szinten a kulcs részeit, viszont még elég hiányosak az ismereteim, meg a library-t se igazán értem még, hogy sketch-be át tudjam írni.
Nem tudom mi az a "stack" és hogy lehet kezelni. Illetve ez milyen területe az Arduino-nak? Még azt se igazán tudom mit kéne keresni a neten némi tájékozódás gyanánt. :B

[ Szerkesztve ]

(#3200) Teasüti


Teasüti
nagyúr

Illetve akartam kérdezni, hogy regiszter tologatásnál mit jelent egy ilyen művelet: 1<<WDRF?
Bitshift referencia szerint így kellene kinéznie:
Syntax:
variable << number_of_bits
variable >> number_of_bits

Szóval ez alapján nem tudom értelmezni a fenti műveletet.
Tolja el az 1-et balra a WDRF regiszterrel (ami 8 bites gondolom)?? :F
Ha jól láttam az összes regiszter beállítása hasonlóképp működik*, de eddig csak értetlen copy&paste alapján végeztem tutorial-ból.
De szeretném megérteni mi is történik itt. :R
Érdekességképpen az I2C buszon lévő modulok regisztereit AND és OR művelettel lehet írni, ami adja magát és logikus is.

Köszi!

*pl Timer1 config:

OCR1A = 31250; // compare match register 16MHz/256/2Hz
TCCR1B |= (1 << WGM12); // CTC mode
TCCR1B |= (1 << CS12); // 256 prescaler
TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt

[ Szerkesztve ]

Copyright © 2000-2024 PROHARDVER Informatikai Kft.