Fórum témák
» Több friss téma |
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
Az egy CPU, itt meg főleg mikrokontrollerekről van szó.
Lehet, hogy Linuxos topikban több esély lenne.
Egyenlőre azt nem tudom, hogy ha ezt meg is csinálom, akkor az u-boot képes-e a flash tartalmat egy az egyben vissza tölteni a másik eszköz flashébe. Meg ha jól tudom, azt is úgy kell csinálni, hogy először betöltöm a RAM-ba (ami szerintem nem sok), és onnan ki az SD kártyára?
Hello. Van egy usbasp programozóm, de nem tudom működésre bírni, aláíratlan illesztőprogramra hivatkozva. Ezt el is engedtem ..
De .. van 2db dip tokos atmega8, amit fel kellene programozni. Valaki tudná vállalni nekem?
Illesztőprogram ügyben keress rá a Zadig nevezetű segédprogramra.
Azon már túl vagyok, nem segített sajnos. De tegnap este találtam hozzá másik drivert, azzal talán jó lehet majd a másik gépen xp- vel.
Ezzel a driverrel már látja a gép, a led villog a programozón, de hibaüzrnetbe torkollik a történet.
Extreme burner szerint " power on failed" és " no communication with target chip". Használt azmega8, eredeti környezetében programozó csatin keresztül, és kivéve külön próbálva is ugyan ez a helyzet. Neten keresgélve sokan szenvednek ezzel a problémával, de megoldást nem találtam ....
Esetleg másik programozó program, avrdudess talán.
A hozzászólás módosítva: Szept 21, 2024
Nem érvényes win32 alkalmazásra hivatkozva nem csinál semmit. Szerintem feladom
Nem fényes a helyzet ...
Rá néztem...
Nekem se látja az Atmega8-16PU -t az USBAsp programozó, érdekes. Még alacsony programozási sebességen se. A többi Atmega -t látja.
Ha el tudod hozni/juttatni a 15. kerületbe, akkor megcsinálom neked a programozást. Ha érdekel keress magánban.
ATMEGA8 megszakítások assembler programozásaAtmega 8 megszakításainak programozásával kapcsolatos a kérdésem.Szoftverből(!) szeretném indítani az INT1 (külső-) a megszakítási rutint. A leírást úgy értelmeztem, hogy a GIFR regiszter INTF1 bitjének H-ra írása indítja a megszakítás vektorára ugrást, onnan a megszakítási rutinjára ugrik. A tapasztalatom, hogy amikor az INT1 megszak rutinba ugrik, utána az INT1 rutin és minden egyéb megszakítási rutin "lefagy". (nálam Timer megszak rutin fut a háttérben, az INT1-től alacsonyabb prioritású). A ciklikus program többnyire fut tovább... A célom, hogy szoftverből indítva, az INT1 futhasson akár más, alacsonyabb prioritású rutin megszakításával is. Az INT1-ből kilépés után természetesen minden fusson tovább. Van valakinek tanácsa, hogy miket kell beálítani, hogy ne álljon le a megszakítási rendszer? A hozzászólás módosítva: Nov 1, 2024
Az adatlap szerintem nem ír arról, hogy a GIFR, INTF1-el magad is kiválthatnál INT1 megszakítást, viszont ha az INT1 lábat kimenetnek állítod, akkor magának a lábnak az állításával is kiváltható software-esen az INT1 megszakítás. Ezt konkrétan említi is az adatlap.
Idézet: „The external interrupts are triggered by the INT0, and INT1 pins. Observe that, if enabled, the interrupts will trigger even if the INT0..1 pins are configured as outputs. This feature provides a way of generating a software interrupt.” A hozzászólás módosítva: Nov 2, 2024
Köszönöm!
A javasolt megoldás működik! A cikl prg-t annyira lelassítottam sw hurokkal, hogy LED-ekkel követni lehessen, hogy idősorrendben mi történik. Még tovább tesztelem, hogy hogy fér össze más megszakításokkal, illetve az INT1 érzékelési módok hogy használhatók. Hátrány, hogy az INT1 pin-t nem lehet másra használni, így a PortD nem 8 bites...
Újabb problémába ütköztem.
Az INT1 megszak rutinból reti-vel, helyesen működik: - a porton az INT1 bit billegetése adja az IRQ-t - a megszak rutinban LED-et kapcsol be - visszaugrik a hívás helyére, és folytatja a programot - a háttérben a Timer0_OVF megszakításban számláló folyamatosan, jól fut Amikor reti helyett: pop r10 pop r10 rjmp Cimke utasításokkal küldöm vissza, akkor - a ciklikus prg továbbra is fut - a porton az INT1 bit változatlanul billeg (adja az IRQ-t) - a Timer0_OVF megszakítás leáll, nem működik - az INT1 megszakítási rutinba nem ugrik bele (nem kapcsolja be a LED-et) Ami érdekes: reset után rögtön belép az INT1 megszak rutinba, de utána már "lefagy" Van tipped, hogy mi a hiba?
Amikor egy megszakítás keletkezik akkor a globális megszakítás bit SREG,I automatikusan 0-ra lesz állítva. A RETI nem csak visszatér a megszakításból, de az SREG,I-t is visszabillenti 1-be. Ez hiányzik amikor nem RETI-t használsz.
Röviden a RETI az egy SEI + RET együtt. Persze kérdés, hogy mit szeretnél elérni a Cimke-re ugrassal, ha eredetileg nem is onnan jött a megszakítás. A hozzászólás módosítva: Nov 3, 2024
Ezt eddig sehol sem olvastam!...Beírtam a sei-t, és már működik is!!!
Azt persze nem értem, hogy egy megszak vektorra ugrás miért tiltja le a general megszak engedélyezést?!? A prioritási sorrendet ezek szerint nem kezeli? Azaz ha alacsonyabb prioritású megszakítási rutin fut, akkor egy magasabb prioritású az alacsonyabbat nem szakítja meg?!? Több elképzelésem is van: - A cikl prg ciklusidejétől (pl 50ms) rövidebb késleltetéseket (pl. 1ms, vagy kisebb) akarok használni. A késleltető hurok növeli a cikl prg futásidejét, és pocsékolja a CPU időt. - Azt tervezem, hogy a az INT1 rutin kezeljen-felügyeljen más prg, szubrutin futásokat. Ezzel az egyik rutinban indított várakozás alatt más feladatot is végezhet a CPU.
Csak akkor szakítja meg a magasabb prioritású, ha az ISR elején engedélyezed a megszakításokat. Ez az AVR alapértelmezett működése.
Bővebben: AVR Interrupts
Köszönöm! Így már világos.
Eddig csak az ATMEL leírásokat használtam, amire hivatkoztál (Microchip) nagyon jó! Innentől kezdve "megtérek" (áttérek...) Atmel mini 328 standbyMeg tudom-e csinálni egy atmel alapú, kínai, mini panellel, hogy olyan állapotba teszem ami csak néhány uA-t fogyaszt (nem kell neki semmit csinálnia) és egy kontaktussal ébresztem és a végén ugyanezzel a záró kontaktussal visszaaltatom?Biciklire kellene. Tudok rá fizikai kapcsolót tenni, de azt amíg dolgozom simán kapcsolgathatják. Ezért gondoltam, hogy teszek egy reed relét a műanyag házon belülre és egy mágnessel be- és kikapcsolom. Életképes az ötlet?
Akkor már, ha már építesz belé egy reed relét, és van nálad mágnes, miért nem egyszerűen fabrikálsz egy tartót, amibe egyszerűen belecsúsztatod a mágnest?
Az eredeti ATmega328-nak van sleep módja, amiből egy INT0 vagy INT1 bemeneti láb változás megszakítás fel tudja ébreszteni. Adatlap 10-es fejezet.
SMCR = 0x0F majd a SLEEP utastás felhívása Azt nem tudom, hogy a kinaí klónban is müködik-e.
Ha ez egy eredeti AVR-t tartalmazó Arduino klón, akkor az MCU-t el tudod altatni. De a board többi komponense, mint power LED, LDO-k, és az USB illesztő IC mind-mind fogyasztani fog továbbra is.
Ha az MCU is klón, akkor nézd meg az adatlapját. Ha a board nem Arduino, akkor nézd meg, hogy még milyen komponensek vannak rajta, amik fogyasztanak.
Ha nem kell neki semmit csinálnia, akkor miért nem lehet teljesen kikapcsolni?
Hasznos dolog az altatás. Anélkül tud eseményre felébredni, hogy külön be kellene kapcsolni.
Gafly: Mert a mágnest a kulcstartómra teszem. Csak így van esélye, hogy mindig kéznél legyen. Az egész kulcscsomó meg ne fityegjen már a biciklin!
vargham: Akkor azokat ki kell szednem. pont: Mivel? Kapcsolóval? Ha én ki tudom kapcsolni akkor bárki be tudja az utcán. majkimester: Köszönöm. Olvasom. Majd breadboard-on összerakom és mérem.
Szerintem a kutya nem akar ismeretlen, ne adj isten elrejtett kapcsolót kapcsolgatni, de ha ezt mindképp ki kell zárni, akkor lehet használni kódkapcsolót, mert ha valaki nagyon akarja akkor Ő is visz egy mágnest....
Szia!
Tegyél be a dobozába egy TTP225-ös kispanelt és egy FET-tel kapcsolgathatod az egész tápfeszét. A TTP nem fogyaszt semmit. Kívülről nem látszik, hol kell tapizni. |
Bejelentkezés
Hirdetés |