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   839 / 839
(#) vargham válasza scooby_ hozzászólására (») Szept 14, 2024 /
 
Az egy CPU, itt meg főleg mikrokontrollerekről van szó.
Lehet, hogy Linuxos topikban több esély lenne.
(#) scooby_ válasza pipi hozzászólására (») Szept 14, 2024 /
 
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?
(#) kuner hozzászólása Szept 20, 2024 /
 
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?
(#) morgo válasza kuner hozzászólására (») Szept 21, 2024 /
 
Illesztőprogram ügyben keress rá a Zadig nevezetű segédprogramra.
(#) kuner válasza morgo hozzászólására (») Szept 21, 2024 /
 
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.
(#) kuner válasza kuner hozzászólására (») Szept 21, 2024 /
 
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 ....
(#) Ragathol válasza kuner hozzászólására (») Szept 21, 2024 /
 
Esetleg másik programozó program, avrdudess talán.
A hozzászólás módosítva: Szept 21, 2024
(#) kuner válasza Ragathol hozzászólására (») Szept 21, 2024 /
 
Nem érvényes win32 alkalmazásra hivatkozva nem csinál semmit. Szerintem feladom
(#) kuner válasza kuner hozzászólására (») Szept 21, 2024 /
 
Nem fényes a helyzet ...
(#) Ragathol válasza kuner hozzászólására (») Szept 21, 2024 /
 
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.
(#) majkimester válasza kuner hozzászólására (») Szept 22, 2024 /
 
Ha el tudod hozni/juttatni a 15. kerületbe, akkor megcsinálom neked a programozást. Ha érdekel keress magánban.
(#) borsozo hozzászólása Nov 1, 2024 /
 

ATMEGA8 megszakítások assembler programozása

Atmega 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
(#) majkimester válasza borsozo hozzászólására (») 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
(#) borsozo válasza majkimester hozzászólására (») 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...
(#) borsozo válasza borsozo hozzászólására (») Nov 3, 2024 /
 
Ú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?
(#) majkimester válasza borsozo hozzászólására (») Nov 3, 2024 /
 
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
(#) borsozo válasza majkimester hozzászólására (») 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.
(#) vargham válasza borsozo hozzászólására (») Nov 4, 2024 /
 
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
(#) borsozo válasza vargham hozzászólására (») Nov 4, 2024 /
 
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...)
(#) fecus hozzászólása Kedd, 10:49 /
 

Atmel mini 328 standby

Meg 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?
(#) Gafly válasza fecus hozzászólására (») Kedd, 11:03 /
 
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?
(#) majkimester válasza fecus hozzászólására (») Kedd, 11:28 /
 
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.
(#) vargham válasza fecus hozzászólására (») Kedd, 11:35 /
 
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.
(#) pont válasza fecus hozzászólására (») Sze, 9:14 /
 
Ha nem kell neki semmit csinálnia, akkor miért nem lehet teljesen kikapcsolni?
(#) vargham válasza pont hozzászólására (») Sze, 9:30 /
 
Hasznos dolog az altatás. Anélkül tud eseményre felébredni, hogy külön be kellene kapcsolni.
(#) fecus válasza Gafly hozzászólására (») Sze, 9:45 /
 
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.
(#) pont válasza fecus hozzászólására (») Sze, 15:56 /
 
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....
(#) wbt válasza fecus hozzászólására (») Sze, 19:25 /
 
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.
(#) fecus válasza wbt hozzászólására (») 14:47 /
 
wbt: Az mi? A Google csak egy label printert dob ki a keresésre.

pont: A kapualjban lévő tárolóban, fényes nappal mindkét táskát levágták a kolléganő biciklijének csomagtartójáról. Üresen, és semmire sem használható állapotban. Szóval a kutya nem, de az emberek lehetséges.
(#) klausz18 válasza fecus hozzászólására (») 14:49 /
 
Szerintem erre gondolt: TTP223B-TM
Következő: »»   839 / 839
Bejelentkezés

Belépés

Hirdetés
XDT.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