Fórum témák
» Több friss téma |
Ez nem indok, amikor az ebay-en 2000 ft egy jelanalizátor.
A szükséges eszközöket be kell szerezni. Napjaim mentek el nekem is 10 perc alatt megoldható feladatokkal. Az idő is pénz, nem is kevés.
Szia!
Körbenéztem én is és már ha minden igaz úton is van A legkisebbet vettem, 24MHz/8 csatorna. Bízom benne, hogy elég lesz.
Ezek az olcsó kis cuccok neked működnek az új PC-s programmal? Mert nekem nem ismeri fel. Most az 1.2.14-et használom a pici 8-ashoz.
Sziasztok!
Új nyűggel jelentkezem. Valószínűleg kis hibám van, de nem találom, hogy mi: A nyomógomb egyik fele +3,3V-on, másik fele a B port 12-es lábán. A portot bemenetnek állítom, bekapcsolva a lehúzó ellenállás.Felfutó élre szeretném, ha történne megszakítás.
A jelenlegi IRQ2 rutin: (van egy breakpoint, hogy lássam, ha megnyomva van a gomb)
Remélem ránézésre kiszúrjátok a hibát. A hozzászólás módosítva: Okt 6, 2017
Ha a 12-es lábat használod, akkor miért a 2-es lábra való EXTI_Line-t, illetve megszakítást használod? Ezeknek mind egyezniük kell, nem választhatod meg önkényesen.
Itt az EXTI_Line12, EXTI15_10_IRQn és EXTI15_10_IRQHandler kell.
Akkor elméletileg így jónak kellene lennie ? Viszont nem működik. A Megszakítást jelző bitet nekem kell törölnöm vagy automatikusan törlődik? A Handler-be belerakjam: EXTI_ClearFlag(EXTI_Line12); ? Mert ha belerakom,akkor sem jó. A program elindulásakor a breakpoint utáni első sorra ugrik(mindegy is, hogy mi az a sor). Viszont valami történik,mert ha megnyomom a gombot, akkor olyan mintha fagyna a program, semmi nem történik,minden megáll. Ha megállítom a programot, akkor mindig a
EXTI_ClearITPendingBit(EXTI_Line12); <- ezt bele kell raknod a megszakításodba. Ha nem rakod, újra és újra meghívódik a megszakítás.
Ez érvényes a többi fajta megszakításra is.
Kipróbáltam:
De sajnos ugyanaz a helyzet. Mintha nem törlődne a megszakítást jelző bit. A változatosság kedvéért, ha manuálisan törlöm a Pending Regisztert, akkor is végre akarja hajtani a megszakítást. A hozzászólás módosítva: Okt 6, 2017
EXTI15_10_IRQHandler nem pedig EXTI15_10IRQHandler !!!
Jogos. Működik. Nagyon köszönöm a segítséget.
Ha 13-as és 14-es lábra is rakok egy-egy gombot. Bemenet konfigurálás után, ha valamelyiken megszakítás fog történni, akkor a EXTI15-10_IRQHandler fog meghívódni és utána kell eldöntenem a Pending bit segítségével, hogy a 3 közül melyik történt meg?Jól gondolom? A hozzászólás módosítva: Okt 6, 2017
Ilyen elgépelésre nem dob a fordító hibát? Ezt megjegyezni, hogy hol van alsó vonal, elég nehéz.
A hozzászólás módosítva: Okt 7, 2017
Miért dobna? Az összes megszakítás létezik alapból a vektor táblában csak épp nem mutatnak sehová (ezért akadt ki a porgramja a "def_irq_handler EXTI15_10_IRQHandler" soron). Te pedig elnevezheted bárhogyan a saját függvényeidet (a C szabályai szerint persze), onnantól kezdve, hogy nem egyezik meg valamelyik megszakítás nevével, egy hagyományos függvényé válik, amit a fordító majd kioptimalizál, hisz nem használod sehol sem.
Ami a rendes nevének a megjegyzést illeti, ha én teszteltem volna a kódot, azonnal feltűnt volna, hogy az a fent említett soron áll meg a program, amiből következik, hogy valamiért a megszakítás nem fordult be a helyére. Innen már nem nehéz eljutni oda, hogy elírtam a nevét. Tegnap már fáradt voltam, ezért tartott még egy komment váltásig, míg feltűnt a hiba.
Sziasztok!
Újabb probléma. Használom az RTC-t, 1 mp-nként megszakítás van, ezzel nincs is gond, a VFD kijelzőnek 1mp-nként küldöm az új kiírni valót, semmi gond. A probléma akkor kezdődik, ha kihúzom az USB-ből a programozót. Ekkor megáll a számolás. Hogy egy klasszikust idézzek: De miért ??? Újraindítás után(teljes tápelvétel és visszadugás) nem is ír ki semmit. Ha visszadugom az USB-be, minden helyreáll és megy tovább. Ha kiveszem az RTC inicializáló részt, akkor minden frankó, csak éppen akkor nincs 1mp-ként megszakítás. Ezt mi okozhatja? Két panelnél is ugyanaz a jelenség van. Minden pont forrasztott, kontakthiba kizárva. A hozzászólás módosítva: Okt 9, 2017
Véletlenül az RTC felhúzóellenállásai nem az USB tápra vannak kötve? (már ha I2C-s a cucc). Nézd meg szkóppal az adatvonalaid. Különben az átlagos RTC-t nem kell többször inicializálni. Szokott még (főleg I2C esetén) olyan gond lenni, hogy pont kommunikációban megy el a táp vagy reset jön és a uC elölről akarja kezdeni, de az RTC meg tartja az előző állapotsorát. Milyen RTC?
Szia!
STM32F103C8-ban levő belső RTC-ről van szó. Egy SPI-s VFD van rákötve. A PC-hez elég csatlakoztatni a GND VAGY a VCC szálat, ha bármelyik a kettő közül csatlakoztatva van, akkor megy az RTC és a program, ha nem,akkor megáll. Néha-néha kegyesen lép egyet, de az 1mp helyett, 5-10 mp-ént. Én valami beállításra vagy programra gondolok, mert hardveres változás nincs.
Nem értem.
sysTick-el hozok létre 1mp-s késleltetést,RTC-t nem is használom. És ha leválasztom a PC-től,akkor megáll az egész.Ha visszadugom az USB-t,megy tovább,mintha mi se történt volna. Mi a franc lehet ez?
Berakom a kódot is, hátha valaki talál benne valamit:
Ez meg az RTC init:
A hozzászólás módosítva: Okt 9, 2017
Teljes clock konfigod hogy néz ki? Az USB rész az a proci USB-je, vagy illesztő? Órajelet mértél a külső kristályodon? Nem lehet hogy a külső oszcillátorod nem is megy igazából, csak automatikusan átáll belső oszcillátorra az órajel generátor rész.
Aha.... A konfig hogy néz ki? Amikor kihúzod az USB-t akkor teljesen magában áll a paneled vagy valami feltöltő/debuger stb. rá van még dugva? Kapcsolóüzemű tápról megy? Ha mondjuk szkóppal összetesteled, akkor helyrejön?
@ Topi és @ wbt:
Teljes konfigot csak délután tudok feltenni. Az USB rész az illesztő USB-je (STLink V2), de a tápot már saját LDO-val állítom elő a 12V-ból. Délután rámérek majd az órajelekre. Amikor teljesen magában áll a panel,akkor nincs semmi rádugva és áll a program/RTC, ha a debugger GND pinjét csatlakoztatom,akkor megy tovább, de csak akkor ha a debugger is be van dugva az USB-be, ha nincs,akkor hiába dugom össze a GND-t. De ahhoz hogy menjen, elég csak az USB külső GND-jét hozzáérinteni a panel GND pontjához. A rendszer egy kis 12V-os kapcs.üzemű tápról megy, többről is próbáltam, de ugyanez a szituáció. Szkópos testeléses próba délután.
Akkor resetkor rossz vagy a clock, vagy a program counter / vektortábla rossz helyre mutat (linkelési hiba). A programozó állítja és kényszeríti, hogy hogyan induljon (és honnan), de ha nem programozóról indítod, akkor flash kezdő címről indul, és akkor például ezek szerint ott nincs kód.
A hozzászólás módosítva: Okt 10, 2017
Ha már fut a program, megy a kijelzés, számolja az időt,stb.. és ekkor húzom le a programozót, akkor is megáll.
Sziasztok!
Itt a teljes forrás, ez dolgoztatja a procimat.
Meg jut eszembe: ha CSAK a GND vezeték van csatlakoztatva(SWDIO és SWDCLK nincs) és akkor kapcsolom ki és be, akkor tökéletesen fut a program, tehát a programozó nem szólhat bele, nem kényszeríti semmire. Ezért zárnám ki a vektortábla/program counter hibát.
Valami clock hiba még lehet. Szkópot majd most nézek.
Kicsúsztam a szerkesztési időből
Na kicsit körbenéztem oszcilloszkóppal is. Ha a szkóp GND-jét csatlakoztattam a panel GND-jére, ment minden, ahogy elő van írva, ha levettem,akkor megállt minden. Ha olyankor csináltam tápelvételt, nem indult el, de ha a szkóp kábele rajta volt, akkor elindult. Sőt elég volt egy nem bekapcsolt műhely PC USB kábelének a GND pontját hozzáérinteni a panel GND-jéhez és minden rendben van. Lövésem sincs, hogy mi lehet a háttérben. A 32,xxxkHzes kvarc úgy néz ki, hogy rezeg,mert jelet tudtam mérni rajta. A hozzászólás módosítva: Okt 10, 2017
Akkor nem csak én jártam így (nekem zajos volt a cucc, de amint rátettem a szkópot, azonnal megszűnt a zaj így nem tudtam megmérni, honnan jön); én mindenképp az órajel vagy a kosz felé nézelődnék (rajtamaradt, tok alá bekúszott folyasztószerrel jártunk hasonlóan), már ha a tápfesz stabil, nem gerjed. Ez valami nagyon UFO dolog lesz.
|
Bejelentkezés
Hirdetés |