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
Ezekbol hianyzik kb. minden. Szintillesztes, kondicionalas, stb...
Ám lehet, cserébe nekem remekül működik. Jól jött már néhányszor, ezért az árért amúgy sem várok csodákat.
Természetesen ha rám szakadna a bank, akkor az eredeti 16 csatornásat venném meg.
Köszönöm a gyors választ!
Az SD kártya egyik lába sincs 5V-on, tehát ez nem okozhatja. Ezzel a hibaüzenettel "Card Initialization failed.." fagy ki, ami a mellékletben található. Mellékeltem a kódrészletet, hátha így jobban átlátjátok a hiba forrását és tudtok segíteni. Ha nem jutok dülőre, tényleg tüneti kezelést kell alkalmaznom és jön a Watchdog Timer. Előre is köszi!
És ha megpróbálkoznál magának az SD-kártyának az újraindításával? Tápfesz elvétel/visszaadás?
Vagy ezt a műveletsort többször is elvégezni? Biztosan valami azzal oldódik meg hogy az AVR elengedi a portlábakat. Ahol épp RESET-elnél, tegyél egy DDRx,PORTx=0-t, majd várj egy másodpercet és kezdd újra!
Köszönöm zombee!
Kivettem a végtelen ciklust a hibajelzőből és többször inicializálom a kártyát egymás után, így már tökéletesen megy tápfesz ráadáskor is, nem csak RESET után!!! Köszi mégegyszer mindenkinek, aki segített!
Ez tényleg hasznos lehet.
Az egész olcsó ezen az oldalon 41$-t jelent (1 db esetén). Ez tényleg az olcsócska kategória?
Igen. Bar parhuzamos portra olcsobban csinalsz, de rosszabb is lesz. De te is ossze tudod rakni magadnak, csak vedd meg az az EZ USB-s mikrokontrollert es kb keszen is van.
Sziasztok!
Atmega48A t próbáltam programozni AVRISP mkII-vel, a fordító(avr studio 4) kiírta, hogy felprogramozás sikeres volt, ám semmi sem történik igazából... A program szerint az avr-nek fel kellene kapcsolnia két ledet(csak tesztelném, hogy működik e), de nem csinál semmit, ez a programom:
Valaki tudna segíteni a uC életre keltésében? Előre is köszönet! Zoltán
Szia! Nem megsérteni szeretnélek, nem tudom milyen szinten vagy! A LEDek polaritására figyeltél?
Ajánlom figyelmedbe a következő cikket:Link Ha így sem megy, segítünk! Üdv.
Megnéztem, de nem nagyon van hozzá működő firmware.
Még gondolkozom. Esetleg ha valakinek kell, több ilyen logic analyzer olcsóbb, dobjon egy üzenetet. Bár nem értem, az ebay-en miért nem kínálnak ilyet.
Hát, tekintve, hogy a kütyü 15 USD, csak a szállítás kerül sokba, így úgy gondolom, hogy igen ez egy olcsó dolog. Megjegyzem, hogy az eredeti 145EUR szállítással együtt (130 a kütyü, 15 a szállítás).
Amennyiben pedig többed magaddal rendeled a klónt, akkor kijön aprópénzből egy darab. Mindazonáltal az egészet magad is klónozhatod különösebb felhajtás nélkül. Elég egyet visszafejteni, mivel semmilyen védelem nincsen benne gyakorlatilag. Ha majd egyszer nagyon ráérek talán reverse engineerelem. Ja és amúgy azt hiszem, hogy Európa más részeire az aliexpress olcsóbban szállít. Ha van ismerősöd ausztriában, rendeld oda, ő továbbpostázza neked és voilá. Ez az infó amúgy megerősítésre szorul, megnézni nem árthat.
Egy elég egyszerű dolgot szeretnék, neten nem találtam érthető leírást, gombnyomásra szeretnék vezérelni, mondjuk egy led-et de nem tudom hogyan lehet egy láb állapotát beolvasni c nyelven. Tud valaki segíteni?
Sziasztok
AVR-el hogyan szokták megoldani pl az 50Mhz-ig a freki mérőt? Van egy gondolatmenetem de nem biztos hogy jó: -az egyik timer számlálójának léptetése a külső lábon (T0) -eközben pl 0.25 másodpercenként megszakítás, számláló leolvasás,kiírás és nullázás. Így megoldható?
Őőő, lehet, hogy én nem vagyok elég pró, de egy max 20MHz-en ketyegő 8 bites AVR-rel mégis hogyan gondolod, hogy mérsz bármit is, ami 50 MHz?
Már ilyen jó kis Shannon törvényeket nem is említve.
Az AVR portjai memóriacímzéssel érhetők el. A portok 8 bitenként vannak felosztva, lévén egy 8 bites AVR 8 bites ugye.
Nos, szal fogod a címét, ami megfelelő header beillesztése után általában ilyesmi pl. : PORTA Nos a PORTA 8 bites, tehát AVR zsargonban egy uint8_t típus. Megcsinálod a megfelelő bitenkénti műveletet ezzel a PORTA változóval, ami valahol egy memóriacímbe mutat. És az AVR fizikai lábai tükrözni fogják ezt az állapotot. Nem kell aggódni, a PORTA nem egy mutató, tehát úgy kezeld, mintha csak egy változó lenne. Előtte persze ne feledd el konfigolni a lábakat, hogy kimenet, vagy bemenet legyen. Jelen esetben ezt a DDRDA változóval teheted meg. Vedd elő az adatlapot, hogy a DDRDA-t miként kell beállítani kimenetre.
A timer léptetésével. A timert külső órajel forrásról nagyobb frekvenciákkal lehet léptetni a számlálót.
Itt egy példa PIC-el: 50Mhz freq counter és ez pedig csak 4Mhz-en megy
Itt van még 1: Bővebben: Link
Ez is csak 4Mhz-en megy, de itt a 2 db kaszkádosított 74hc590 bináris számláló osztja az órajelet.
Ejjha, nem rossz elv.
Megnéztem nagy hirtelenséggel az Atmega16-ot. Nos abban sajnos nincsen aszinkron külső órajel mintavételezés (lád a csatolt képet). De úgy gondolom, hogyha találsz olyan típust, amiben van ilyen, akkor az elv amit írtál működőképes lehet. Persze más tészta, hogyha te is külső számlálóval csökkented az órajelet.
AVR-nél a portok bemenetei az órajellel vannak szinkronizálva, azaz a legnagyobb mérhető freki
az AVR órajelének fele, ahogy Shannon is megmondta a maga idejében... A nagyobb frekiknél osztót szokás használni. Az interruptolás nem praktikus, helyette valamelyik timer bemenetére(T0, T1, T2) kell kötni és azt beállítani úgy hogy a Tn bemenetről menjen. Interruptot a számláló túlcsordulására(OVFn) kell írni, mert ha le is osztod, az még túlcsordulhat! Ezzel párhuzamosan egy másik timert is beállítasz valami fix frekire, én 320ms-ot tartom praktikusnak mivel a legtöbb ember a sűrűbb váltogatást(pl. 250ms) már nem képes valós időben értelmezni, ennél ritkább(pl. 500ms) mérésidő pedig türelmetlenné teheti. Én pedig a harmadik timert is munkára fognám, mert kis frekiknél bizony pontatlan lehet ha leosztod! Illetve az ICP1-re is rákötném mert nagyon kis frekiknél már impulzusidőt kell mérni, nem impulzusszámot!
Idézet: „Megnéztem nagy hirtelenséggel (...) abban sajnos nincsen aszinkron külső órajel” Hát ez valóban nagy hirtelenséggel lehetett ha nem jutottál el idáig: 8-bit Timer/Counter2 with PWM and Asynchronous Operation Ez nem tudom hogy mit jelent, azt olvasom hogy 32kHz-es kristályra találták ki de lehet hogy egy ilyen kéne?
Azért alaposan néztem meg, nem kell aggódni.
Az rendben van, hogy aszinkron működik, de csak kvarcról. Legalábbis az adatlap erősen javasolja. Külső órajel mérése ezzel kizárva. Ráadásul, hogyha 32kHz-re van optimalizálva, akkor azt hiszem nem lehetne pontos működést feltételezni egy 50MHz-es jelről, már ha egyáltalán menne.
Itt van egy firmware, neked csak az FPGA-t kell kihagyni.
Attol fugg milyen pontosan szeretnel merni:
- leosztod a bemeno jel frekvenciajat - raksz melle egy CPLD-t - kulso szamlaloval kiegeszited
Azt az aszinkron bemenetet 32768hz-es kavicsnak találták ki. Osztva pontosan 1hz lehet kapni, amiből van egy órád.
Arra gondoltam akkor hogy 74ac161-el építek egy számlálót és ez elvileg adatlap szerint 125Mhz-ig képes számolni. Az már több is a kelleténél.
Most már csak annyi van hátra, hogy úgy kitalálni az egészet hogy egy meg8-as lábszáma elég legyen. Időalapnak használok megszakítást, ez majd letiltja a számlálókat hogy ne számoljon tovább és 1 porton multiplexelve olvasom le a számlálók értékeit.
De ha már külső órajelosztót használsz, akkor tekints rá az Input Capture Unit-ra. Pont arra találták ki, amit te akarsz csinálni.
Az interruptjából szépen etetsz egy ringbuffert, azt meg feldolgozod, ahogyan csak akarod.
Ezt az input capture unitot kifejtenéd bővebben? Még sosem használtam.
Tényleg
Valahogy meg kell pedig oldani a 9 digitet.
Ha nagyon érdekel, van két 8 számjegyes gyári frekiméröm. Mind a kettö megy akkurol. Az egyik 40MHz-ig a másik 100-ig. Egy ilyennel korábban célba érsz. Az egyiktöl meg tudok szabadulni....
|
Bejelentkezés
Hirdetés |