Fórum témák
» Több friss téma |
Idézet: Erdekes, amit mondasz. A Texas adatlap ezt irja: A high quality capacitor should be used to assure that the ESR (Effective Series Resistance) is less than 0.5Ω.„Ez a család tantálhoz lett tervezve és instabil egy minimális ESR nélkül.” En 10µF keramiakkal hasznalom, es teljesen stabilak. Mindig megmerem szkoppal, es soha egy sem gerjedt eddig.
Én is olvastam egyszer egy adatlapon olyat, hogy legyen valamekkora minimális ESR-je a kondinak, amit az alkatrész mellé kell rakni. (Sajnos nem emlékszem minek az adatlapja volt.)
Be fogok rakni azokra a bemenetekre diódákat mindenképp amik nagyobb jelet vagy kívülről jönnek. Ami panelen van poti pl 3db 10k 3.3v ból csinál leosztott feszt annak nem látom értelmét diódázni az proci tövébe úgy is ott van a 100nF kondi a bemeneten ha netán bármi zaj indukálódna a poti és proci közti vezetékben a kondi leszedni.
Holnap majd lövök egy képet a zajról a stabról. Egyébként X7R kondik vannak. 10u/16V
Az adatlapról: A minimum of 10-μF tantalum capacitor is required at the output to improve the transient response and stability. Bővebben: Link
A tantált nem véletlenül írták, hanem mert annak az ESR-je nagyobb mint a kerámiáé. Itt egy doksi a problémákról ha kerámiát használunk olyan LDO-nál, amit nem arra terveztek: Bővebben: Link Valahol máshol pedig olvastam (azt hiszem az is TI volt), hogy csak rakjunk simán sorba vele egy pici ellenállást és máris betoltuk a stabil régióba az egészet (ami logikus is). A hozzászólás módosítva: Márc 7, 2017
Az altalad linkelt adatlap irja is, hogy 0.3 es 22 Ohm kozott kell legyen az ESR. Ami adatlapot en neztem (Texas REG1117), abban annyit irnak osszesen, amennyit bemasoltam. De meg hozzatartozik az elozo postomhoz, hogy en ST LD1117-et hasznalok, es annak az adatlapja mar csak annyit ir: Only a very common 10 μF minimum capacitor is needed for stability. Tantalrol szo sincs, ahogy ESR-rol sem. Szoval a 1117 az egy tág fogalom. Meg a Texas-on belul is.
Nekem LM1117, AMS1117 és APE1117-eseim vannak itthon és mind írja a tantált. Természetesen elképzelhető (sőt szinte biztos), hogy a frissebb fejlesztéseket már felkészítették kerámiára (mondjuk erre figyelmeztethetnének, figyelembe véve a rengeteg tantálos verziót). De maga ez a család (és klónjai) még abban az időben került(ek) forgalomba, amikor ezek a remek olcsó nagy kapacitású kerámiák még nem voltak elérhetőek.
Idézet: Azt erdemes az adott kondi gyartoi adatlapjaban megnezni, hogy ennek a kondinak 3.3V-on mekkora a kapacitasa, mert meglepoen alacsony is tud lenni. De ez elegge gyartofuggo, es a legtobben nem adjak meg. „Egyébként X7R kondik vannak. 10u/16V” Idézet: „Nálam a Kinetis linkekhez letiltja a NOD a hozzáférést.” Az ESET csak azért sipákol, mert a domain név valamikor, valamiért felkerült valahol egy feketelistára. A tartalom statikus weblapokból áll, minimális Javascript kiegészítéssel (szintaxis kiemelés a programlistákban). Ezeket az anyagokat - hogy ne érje szó a ház elejét - felraktam egy másik helyre is. Remélem, így mindenkinek megfelel. Az anyag még hiányos, fejlesztés alatt... 1. A FRDM-KL25Z kártya programozása mbed környzetben + mintaprogramok + előadás vázlatok 2. A FRDM-KL25Z kártya programozása ARM KEIL MDK5 környezetben + mintaprogramok és előadás vázlatok
Szia!
Eszembe nem jutott szóval illetni a ház elejét , csak jeleztem, illetve a NOD. Kinetis Studio-val ismerkedem, ezért voltam rá kíváncsi. Köszönöm!
Hi!
Van valakinek tapasztalata abban, hogy I2C buszon: 1: START. Siker, jön az interrupt. 2: Megy az Slave-Address. 3: Siker, nincs hiba. Betöltöm az Adatot. - Ekkor megint interrupt van. A TxE (Tx Buffer Empty) flag fent van, de nem értem miért vagyok megszakításban amikor csak az Event-, és az Error Interrupt van engedélyezve. A Buffer történések tiltva vannak, azok nem generálhatnának megszakítást. Tehát itt ebben a pillanatban a programban az a gond, hogy TxE ugyan 1 (a Tx Buffer üres), de - és itt a lényeg - nem jön fel a BTF (Byte Transfer Finished). Ekkor küldenék egy STOP jelet a buszon, és végeztünk. Az init kód jónak tűnik, mert ha diret elrontom pl a Slave Address-t rögtön jön az ACK hiba, tehát Slave-em válaszol(gat). Valakinek valami tapasztalat ezen a környéken? Jah: STM32F429Discovery.
Ha I2C_GetLastEvent(xxx)-el lekéred az event típusát, mibe esett bele?
- I2C_EVENT_SLAVE_RECEIVER_ADDRESS_MATCHED - I2C_EVENT_SLAVE_BYTE_RECEIVED - I2C_EVENT_SLAVE_STOP_DETECTED - I2C_EVENT_SLAVE_TRANSMITTER_ADDRESS_MATCHED - I2C_EVENT_SLAVE_BYTE_TRANSMITTED - I2C_EVENT_SLAVE_ACK_FAILURE - Egyéb?
Holnap tudok vele este megint foglalkozni. Akkor leírom pontosan hol van az érdekes rész.
Device Address szépen kimegy (írásnak) aztán amikor küldöm a regiszter címet, azonnal van valami bejövő adatom pedig még nem is csináltam repeated start, Device Address + read -et. Nem ezt használom amiket fentebb írtál. Bare-Metal-al az egyes Status biteket figyelem egy I2C3-EventInterrupt-ban. SR1 = 0x01 Start Detecte SR1 = 0x02 Address sent SR1 = 0x40 RxNE SR1 = 0x80 TxE SR1 = 0x84 TxE + BTF (Byte Transfer Finished) Ezek köré írtam a megszakítás kezelőt. Ahogy az STM32F429 Reference manualjában az I2C résznél van EV5, EV6, EV8, 8.1 stb.
Üdv.
UART menyire tudna jól dolgozni ha sima belső RC oszcillátorról menne az órajel? (STMF0 proci továbbra is)
Minél többet osztasz rajta, annál kevesebb a hiba, arányosan az is kisebb.
Kérdés mire kell, mennyit hibázhatsz. Ha engedélyezed a paritás bitet, már segíthetsz rajta egy csomót. Én azt csinálnám mérésképpen, hogy XTAL-ról hajtanám a procit, az RC oszcillátort meg MCO kimenetről visszavezetném a prociba és a Capture-Compare modullal mérném a különbséget. Természetesen a CCP modult is hozzá osztani az MCO kimenethez.
Ha pár áramkörről van szó (kis mennyiségű gyártás), és főként beltérben használtról (hőstabil környezet), akkor az RC oszcillátort tudod kalibrálni szoftveresen F0-ban is egész finoman.
A hozzászólás módosítva: Márc 15, 2017
Sziasztok,
STM32F103C8T6 problémám lenne, a specifikáció alapján nem derült ki, hogy az ADC referenciát (Vrefint-et) hogyan kell mintavételezni. Először 1.5 ADC ciklusonként mintavételeztem (14 MHz ADC clock frekvencia), komplett hülyeséget számolt. 7.5 ADC ciklusnál már ment, most 239.5 ADC ciklussal mintavételezem. Mi köze a Vrefint-nek a mintavételi frekvenciához? Nem találtam egyértelmű utalást arra, hogy milyen frekvenciával kellene refint-et mintavételezni. A tapasztalat az, hogy az 1.5 ciklus nem megy, a többi hellyel-közzel oké.
Parancsolj...
Mivel másra nem használja ezt a belső referenciát (tudtommal), így valószínűleg elég nagy az impedanciája és nem tölti fel megfelelően a mintavételező kondit 1,5 ciklus alatt. A hozzászólás módosítva: Márc 17, 2017
Sziasztok!
Kicsit belemerültem az időzítők világába egy STM32F103C8 kapcsán. Arra rájöttem, hogy van 4 db időzítőm, TIM1 spéci tudással és TIM2,3,4 általános felhasználású. Mindegyik 16 bites. A blokk diagramból látszódik, hogy a TIM1 az APB2-re van kötve, míg a TIM2,3,4 az APB1-ra van kötve. Az APB2 az 72MHz-en ketyeg, míg az APB1 36Mhz-en. Remélem eddig jól követhető vagyok és nem rontottam el sehol? Lásd Clock tree. Ez is azt mutatja, hogy TIM1 72MHz , TIM2,3,4 36 MHz. Viszont ha nézek egy TIMx characteristics-t, ott egy kalap alá veszi mind a 4-t és max időzítésnek 59,6 sec-t ad meg, ami igaz is 72MHz bemenő esetén, ami TIM1-nek van. De ha jól gondolom, akkor TIM2,3,4 csak 36MHz-n ketyeg, tehát ott 119,2sec a maximális időzíthetőség. Erősítsetek meg vagy magyarázzátok el, hogy miért nincs igazam. (csak azért bukott ez most nálam ki,mert TIM2-t szeretném használni 100us időzítésre és nem mindegy, hogy 72MHz-t vagy 36MHz-t veszem alapórajelnek és sajnos nincs kéznél szkóp, hogy tudjak mérni) A hozzászólás módosítva: Márc 19, 2017
Az elméleti kérdésedre nem tudok fejből választ adni, de a gyakorlati kipróbáláshoz egy multiméter frekvencia mérője és egy kis móricka program választ adhat ami figyeli a lefutások számát és alaposan leosztva kapcsolgat egy I/O portot. Ha még jobban leosztod és egy ledet hajtasz meg, akkor egy stopperrel is ellenőrizheted a sebességet.
Ha megnézed az órajelfát, akkor láthatod, hogy azon a perifériabuszon a timerek felé van egy szorzó, ami kettővel felszorozza az órajelet, ha az APB osztó értéke több, mint egy.
Így aztán minden timer max órajelfrekvenciája ugyanaz.
Lehet, hogy igazad van, de nem látom a szorzót.
Be tudnád karikázni (vagy leírni), hogy hol is van az általam betett órajel fán ez a szorzó? Nekem elég egyértelműnek tűnik, hogy APB1 Prescaler után Max 36Mhz, míg a APB2 Prescaler után Max 72MHz felirat szerepel. ( a mellékleteim a gyári datasheetből származik)
Ott van bekarikázva. Ha látod, ennek a kimenete a timerek felé megy.
A CubeMX-et miért nem használod? Pontosan látsz mindent.
Akkor ugyanannak az analógiájára a TIM1 képes 144MHz-en menni? Mert akkor ott is ott a 2x szorzó ?
(amúgy méricskéltem és tényleg 72MHzen jár a TIM2) A szorzó működése függ az ABP1 előosztó értékétől.(ABP1 bemenő frekije 72MHz) Ha ABP1 előosztó értéke 1, akkor 1x szererezi a frekveniát (nem nyúl hozzá). 72MHzx1x1->72MHz Ha ABP1 előosztó értéke 2,4,8,16, akkor megkétszerezi a frekvenciát, aminek nem látom értelmét,mert ha előosztó értéke 2 és utána meg megkétszerezi, akkor olyan mintha nem csinált volna semmit. 72MHz/2x2 ->72MHz. Úgyhogy csak oda lyukadtam ki, hogy vagy így van, vagy nem értem. (bocs ha értetlen vagyok)
ABP1 max 36Mhz. Első adatlap.Ezért kell újra szorozni a timer fele.
Nem képes 72 MHz felé menni. Ha az osztó több, mint egy, akkor a szorzó sem emeli vissza 72 MHz fölé.
És nem tudom, hogy miért jó a timerek felszorzása, de tegyük föl, hogy ennek van értelme. Az a lényeg, hogy ez csak a timerekre hat, nem a többi perifériára. A többbi perigéria nem a szorzón keresztül kapja az órajelet. Vagyis a timereket visszaszorozza, a többi perifériát nem.
OK, kezdem érteni. Segítségeteket köszönöm.
Sziasztok!
Adott egy portláb (B port 9es), amit bemenetnek szeretnék használni. Így Inicializálom:
Így olvasom ki: user_button_1= GPIO_ReadInputDataBit(butt_port,button_1); Ha jól gondolom, akkor IPD az jelenti, hogy Internal Pull Down, tehát mindenféle bekötés nélkül 0-t kellene hogy visszaadjon az olvasás. Miért nem? Kipróbáltam IPU-val is, ugyanaz a helyzet. Ha lehúzom GND-re a portlábat, akkor 0-t olvasok ki. Mi a hibám?
Az hogy a C portot állítod be:
|
Bejelentkezés
Hirdetés |