Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
WinAVR / GCC alapszabályok:
1. Ha ISR-ben használsz globális változót, az legyen "volatile"
2. Soha ne érjen véget a main() függvény
3. UART/USART hibák 99,9% a rossz órajel miatt van
4. Kerüld el a -O0 optimalizációs beállítást minden áron
5. Ha nem jó a _delay időzítése, akkor túllépted a 65ms-et, vagy rossz az optimalizációs beállítás
6. Ha a PORTC-n nem működik valami, kapcsold ki a JTAG-et
Bővebben: AVR-libc FAQ
Lapozás: OK   747 / 837
(#) simonsen hozzászólása Okt 18, 2016 /
 
Üdv mindenkinek!

Elkezdtem az arduino nanoval foglalkozni,
A kérdésem az lenne , hogy egy SPI TFT kijelzőt hogyan lehet feliratozni?
Gondolok itt menü dobozokra funkció gombokra.

Ez nem érintő képernyős TFT.

Létezik ehhez valamilyen TFT maker vagy valami hasonló ?

Nem nagyon értek ilyesmihez de jó lenne ha a kijelzőn azok jelennének meg grafikusan amiket látni szeretnék és nem azok amiket mások látni akarnak.

Érdekesnek találtam a BAR funkciót is amit feszültség változásával kúszik egy sávban de ebből kéne nekem legalább 4 sáv és csatorna mérésekhez.

Előre is köszönöm a segítségeket UTF könyvtárról már hallottam vajmi keveset de még számomra tabu.
TFT_display

Üdvözlettel simonsen!
(#) TavIR-AVR válasza simonsen hozzászólására (») Okt 19, 2016 /
 
Megrajzolod pl. Corel, powerpoint,stb és képként rakod ki.
(#) csatti2 válasza simonsen hozzászólására (») Okt 19, 2016 /
 
Szerintem az Arduino fórumon több segítséget kapsz ezzel kapcsolatban. AVR =/= Arduino
(#) Eregyenlouperi hozzászólása Okt 20, 2016 /
 
Sziasztok !

Kb 3 hónapja kezdtem el foglalkozni az Arduino programozással
Belekezdtem egy erősítő átalakításába azért , hogy távkapcsolóval lehessen működtetni a hangerőszabályozást és a ki-be kapcsolást.
A távkapcs vevő mintaprogi melyet a netről bányásztam elő működik szépen , (a program files könyvtárban kellett garázdálkodni picit érte ) . Igazából nem is vagyok elakadva csak valamit nem értek . A megjegyzésben van a kérdéses sor lentebb /*......*/ között.

#include <IRremote.h>

int RECV_PIN = 8;
int RELAY_PIN = 7 ;
IRrecv irrecv(RECV_PIN);
decode_results eredmeny;

void setup()
{
pinMode(RELAY_PIN, OUTPUT);
irrecv.enableIRIn(); // Start the receiver

}

int on = 0;
unsigned long last = millis();

void loop() {
if (irrecv.decode(&eredmeny)) {
irrecv.resume();
if (millis() - last > 250) {
on = !on ;

/* A net-ről "begyűjtött" mintaprogiban ez található :
digitalWrite(RELAY_PIN, on ? HIGH : LOW);
Ha átírom erre :
digitalWrite(RELAY_PIN, on );
Ugyanaz történik , legalább is ua.-t látom.
Kérdezném , hogy mi szükség van a " ? High:low" kifejezésre ?
Mi az a többlet (hatás) amiért ezt így oldották meg ?
*/

//digitalWrite(RELAY_PIN, on ? HIGH : LOW);

//digitalWrite(RELAY_PIN, on );
}
last = millis();

}
}
Nem pontosan az amit a netről leszedtem , mert közben elkezdtem kigyomlálni és átalakítani a saját elképzelésem szerintire. A mellékletben van az eredeti.

IRrelay.ino
    
(#) csatti2 válasza Eregyenlouperi hozzászólására (») Okt 20, 2016 /
 
Első körben lásd a hozzászólásom közvetlenül a tied felett.
A válasz viszont az, hogy a helyes megoldás a példabeli. A te kódod ugyan működik, de ha bármi megváltozik a digitalWrite kezelésében az Arduino keretrendszerében, akkor működő képtelenné válhat a kódod. A "hivatalosan" elfogadott értékek ugyanis jelenleg a HIGH és a LOW, de bármikor behozhatnak vmi újat (pl. HighZ vagy hasonló).
(#) kapu48 válasza Eregyenlouperi hozzászólására (») Okt 21, 2016 /
 
Az if else rövidített formálya:
  1. digitalWrite(RELAY_PIN, on ? HIGH : LOW);
  2. kifejtve:
  3. digitalWrite(RELAY_PIN, if(on)  HIGH else LOW);
(#) killbill válasza kapu48 hozzászólására (») Okt 21, 2016 /
 
Idézet:
„Az if else rövidített formálya:”
formája
Nem egészen. Az if-else az utasítás, vezérlési szerkezet. A ?: pedig operátor. A kettő egészen más dolog.
A hozzászólás módosítva: Okt 21, 2016
(#) Eregyenlouperi válasza csatti2 hozzászólására (») Okt 23, 2016 /
 
Jogos az észrevétel , legközelebb jobban figyelek hova írjak.
(#) Eregyenlouperi válasza kapu48 hozzászólására (») Okt 23, 2016 /
 
lyaly. Egyébként köszönöm a segítséged.
(#) csabeszq hozzászólása Okt 25, 2016 /
 
Neopixel-ről érdeklődnék (WS2812b).

A szalag 30 LED-es, amikor beállítom a színét halvány lilára, a LED-ek villódznak. Más színeknél is előjön a villódzás, de főleg alacsony intenzitás mellett. Gondolom ilyenkor válik láthatóvá.

Még mikrovezérlő sem kell, szimplán felprogramozom a szalagot, megszakítom az adat vonalat, úgy is előjön a villódzás.

Jelenleg a kapcsolás breadboardon van, nincsenek forrasztások, 4700 µF-os kondenzátor simítja a tápot, 330 ohm-os a DATA leválasztása a mikrovezérlőről. A táp 1A-es mobil töltő.

Miért vibrálhat a színe 20% intenzitásnál? Kevés a 4700 uF? Amikor kikapcsolom a szalagot, látni ahogy elhalványodik, de csak pár tized másodpercig marad életben.
A hozzászólás módosítva: Okt 25, 2016
(#) rascal válasza csabeszq hozzászólására (») Okt 25, 2016 /
 
Ezt az adatlapot találtam: Bővebben: Link, de ez semmit nem ír a teljesítmény igényéről, maximális áramfelvételéről. Próbáld meg nagyobb terhelhetőségű tápról, vagy próbálj csak egy darabot meghajtani, hogy a többi ne okozzon fogyasztást.
(#) wbt válasza csabeszq hozzászólására (») Okt 25, 2016 /
 
Szerintem nem kevés a 4700uF, talán sok is (a kapcsolóüzemű tápok, főleg az ilyen kicsik nem nagyon szeretik a nagy kondit a kimeneten), szerintem gerjed tápoldalon a cucc. A WS2812 LED-enként 17mA-el hajtja a LED-eket. Ha kész szalagot használsz, akkor ott egységenként szokott (volt) lenni 1-1 100nF-1µF a tápon, tapasztalataim szerint bőven elég a normál működéshez. Nálam 144-es csík 2.5A-es kapcsolóüzemű tápról jár 220µF kimeneti szűrőkondival (igaz, nincs is kihajtva "fehérre" mind, mert az 6-8A lenne, de tökéletesen működik).
(#) Kovidivi hozzászólása Okt 27, 2016 /
 
Sziasztok!
Az AtmelStudio által kijelzett "Data Memory Usage : 1440 bytes 70,3 % Full" mit jelent pontosan? Ha felmegyek 89% környékére, akkor újraindul menet közben az AVR, és furcsán viselkedik. Azt hinné az ember, hogy minden változónak a maximális helyigényét számolja, de nem. Talán az induláskori memóriafelhasználást? Mert amint belelépek a függvénybe, ami sok memóriát igényel, újraindul szegény, tehát ilyenkor elfogy a memória. Köszi.
Ismerem a pgm_space-t, nem azzal van baj, hanem azzal, hogy fejlesztés alatt először összeraknám a projekt fő alkotóelemeit, aztán ha kész, ráérek majd szépen áthelyezgetni a dolgokat a program memóriába. Plusz van, amit nem tudok áthelyezni máshova: egy duplán bufferelt, 6 ADC csatorna értékeit tartalmazó 32 elemű int tömb, ami már magában is 768byte. Most megfeleztem, csak 16 mintát tárolok.
(#) lokátoros válasza Kovidivi hozzászólására (») Okt 27, 2016 /
 
Szia,
Idézet:
„Mert amint belelépek a függvénybe, ami sok memóriát igényel, újraindul szegény, tehát ilyenkor elfogy a memória”


Amit nem tud megmondani a Build fordítási időben, az a stack mérete futásidőben. Nem lehet hogy a függvényed túl sok local változót használ, amik a stack-en tárolódnak, és felülír egy globális változót? Vagy éppen fordítva?
A hozzászólás módosítva: Okt 28, 2016
(#) Kovidivi válasza lokátoros hozzászólására (») Okt 27, 2016 /
 
Tehát a stack méretét nem tudjuk, ami ha betelik, problémát okoz. Akkor ez az oka a problémának. Köszi.
(#) lokátoros válasza Kovidivi hozzászólására (») Okt 27, 2016 /
 
Csak egy tipp volt, de könnyen lehet hogy ez a baj. Próbáld meg debuggolni hogy a kritikus függvénybe belépéskor hova mutat a StackPointer. Ha ráadásul közben a program beugrik egy megszakítási rutinba az további területeket írhat felül, és ha az interrupt vagy a te függvényed pont azt a globális változót módosítja ami ezen a területen van, akkor akár a függvény/interrupt visszatérési értékét is elronthatja. Ilyenkor szoktak előjönni nagyon érdekes és érthetetlen bugok.
(#) Kovidivi válasza lokátoros hozzászólására (») Okt 27, 2016 /
 
Igazából nagyon könnyű előidézni. Ha egy char tömbbe pár karakterrel több betűt írok, akkor előjön a hiba. Eltárolom ezeket inkább a program memóriában.
(#) csabeszq válasza wbt hozzászólására (») Okt 28, 2016 /
 
Köszi. Más szalaggal is kipróbáltam, azzal megy. Érdekes.
(#) wbt válasza csabeszq hozzászólására (») Okt 28, 2016 /
 
Akkor cseréld ki próbából az első WS2812B-t. Szokott úgy meghalni, hogy furimányokat csinál és mivel ha az első zizi, akkor a többi is az lehet. Nekem 144-es szalag 1. LEDje haldoklik (alapban halvány fehér) és ez attól van, hogy tápfesz nélkül kapott bemenő jelet. (nem volt soros védő ellenállás sem).
(#) slap hozzászólása Okt 30, 2016 /
 
Sziasztok, egy nagyon egyszerű példával kapcsolatban szeretnék segítséget kérni, ami biztos nagyon triviális, de egyszerűen nem jövök rá.
Össze kell adni a számokat 87-ig assemblyben. Ezt hogy tudom úgy megtenni, hogy a helyes eredményt kapjam? Vagyis ne a 8 bites regiszterekben, hanem X, Y, Z valamelyikében kéne nem? Vagy valami másik módszer kéne rá?
A hozzászólás módosítva: Okt 30, 2016
(#) monxla hozzászólása Okt 30, 2016 /
 
Sziasztok,

AVR Studio 7 tel kapcsolatban kérdezném, valóban igaz az, hogy nem lehet futtatni ill. debugolni programot benne hardver debugging tool nélkül?
Pl. ATMEL-ICE vagy hasonló tool ok nélkül?
Gondolkodom hogy az AVR Studio 6 ost le kellene váltani 7 re.

Előre is köszi.
(#) kapu48 válasza slap hozzászólására (») Okt 30, 2016 1 /
 
Gondolom, erre gondolsz:
Bővebben: Link
Atmel AVR 8-bit Instruction Set

7. ADIW – Add Immediate to Word
(#) rolandgw válasza slap hozzászólására (») Okt 30, 2016 /
 
Bővebben: Link
Bővebben: Link
A hozzászólás módosítva: Okt 30, 2016
(#) slap hozzászólása Okt 30, 2016 /
 
Nagyon szépen köszönöm.
(#) rolandgw válasza monxla hozzászólására (») Okt 30, 2016 /
 
Szia! Nem igaz. Egyébként gyorsabb és kisebb a helyigénye, mint a 6-osnak. Az AVR32 és ASF elhagyható telepítésnél, ha nincs rá szükség.
(#) slimtomi hozzászólása Okt 30, 2016 /
 
Sziasztok!
Olyan programot írok, ami részben kommunikál egy másik AVR-rel is.
Egyelőre egy darab AVR-em van. Próbák idejére beköthetem a TX lábat közvetlenül az RX lábra?
(#) kapu48 válasza slimtomi hozzászólására (») Okt 30, 2016 1 /
 
Igen, megteheted.
(#) david10 válasza slimtomi hozzászólására (») Okt 30, 2016 /
 
Probák idejére bekötheted.
Én így szoktam tesztelni a MAX232-t.
(#) slimtomi válasza david10 hozzászólására (») Okt 30, 2016 /
 
Rendben, nagyszerű.
Tudomásom szerint 64 byte az AVR-ben található UART puffermérete. Így ha adatot küldök, akkor nem is muszáj azonnal kiolvasnom Serial.read-del.
(#) david10 válasza slimtomi hozzászólására (») Okt 30, 2016 /
 
Elméletileg így kellene legyen, de a gyakorlatban majd kideríted.
Az eredményre én is kiváncsi leszek.
Következő: »»   747 / 837
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem