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
Sziasztok! A szétfeszítő ellenállás mi fán terem? Most hallottam ezt a kifejezést először.
Szerintem az ebben a kapcsolásban található 620 Ohm-os R3-R5 fel-/lehúzó ellenállások (talán R4 is) együtt képezik a szétfeszítő ellenállást.
Igen, de ezt széthúzónak szokás nevezni, nem szétfeszítőnek.
Köszi a válaszokat! Valójában egyik változatot sem hallottam még, felhúzó és lehúzó ellenállásokkal volt eddig csak dolgom, így együtt nem tudtam, hogy külön nevük van. Visszanézve már látom, hogy TavIR-AVR már megírta, hogy mire is valók, csak elsiklottam felette.
Sziasztok!
A problémát még nem sikerült detektálnom. A max-os modulokat lecseréltem, sn75176-ra. 120ohm lezárás, 720 ohm fel és lehúzó, 3 eszköz a buszon. Megpróbálom a szoftveres részét kizárni. Viszont egy kérdés. Watchdog és/vagy BODEN segíthet? Köszi, Dani.
Üdvözlet!
Keresek AVR program megírására gyors, megbízható embert! Nem ingyen meló! Köszönet!
Valaki találkozott olyan esettel, amikor a i2c slave üzemmódban "eltünt" a TW_ST_SLA_ACK, rögtön TW_ST_DATA_ACK-val indul a kommnikáció?
Illetve mi lehet a 0xe0 státusz jelentése?
Sziasztok!
4mhz járatott avr-nek mennyi ideig tart végig menni egy if then cikluson ami kb 60 számot tartalmaz? Hogyan tudok ennek utána járni, estleg kiszámolni? Üdv!
Egy körülbelüli számolás, ha egy if, egy órajelig tart (ami valószínű, ahogy utána olvastam), plusz utána is van egy utasítás, ami csinál valamit, ezt is 1-nek veszem:
1 órajel tart: 1/4 000 000sec=0.25us, 60 db if, plusz az utána levő utasítás 120 órajelet igényel, vagyis 120x0.25us=30us. Javítsatok ki, ha valami hibás. De tudsz szimulátorban debuggolni, és ott pontosan látszani fog, hány órajelet igényel a programod.
Köszi!
Szerintem nagyon le egyszerűsítetted az if-then műveletet.
Vegyük példának: if(A==B){nem tudtuk meg, hogy itt mi van!} 1. betöltjük ’A’-t valamelyik regiszterbe 2. betöltjük ’B’-t … 3. összehasonlítjuk A==B? {} 4. És a 60 számot szintén be kel tölteni a memóriából regiszterbe, hogy tudjunk velük valamilyen műveleteket végezni … Az sem megy 1 órajel alatt, főleg ha a számunk pl, int? Az már 2 Byte. A hozzászólás módosítva: Okt 18, 2018
Egy nagyon egyszerű esetet számoltam. A szimulátor fogja pontosan megadni, hány órajelig tart ez a programrész.
Tanultunk pipeline-ról, egyszerre megy a memória olvasás és a feldolgozál, de nem vagyok ebben a témakörben szakértő. "Since AVR is a RISC architecture, most instructions only take a single cycle to execute. " A hozzászólás módosítva: Okt 18, 2018
Bocsi hogy mellékletként rakom fel a kérdésem, de valamiért nem jelenik meg....
Nem tudom, mire gondolsz?
Ha rámutatnál melyik asm feltételes ugrás utasítás vizsgál meg 2 ram címen levő változó egyezőségét? Bővebben: Link
Írtam, hogy nem vagyok profi a témában, assemblyben nem tudok programozni. Ha érdekel a téma olvass utána, tőlem ennyit tudtál tanulni csak, az irányt ismerem, ha nekem kelleni fog további infó, el tudok indulni.
Vagy ha tudod a megoldást, írd meg a kérdezőnek. Gondolkodok, de nem tudok többet hozzárakni. A hozzászólás módosítva: Okt 18, 2018
Nem tudom, hogy ez a szövegszerkesztő tréfája e?
Elnézést, próbáltam egyszerűsíteni a kódot, de ezek szerint félreérthető voltam.
A tömb^0 csak példa, úgy értettem, hogy tömb0, tömb1, ... stb. tömb2 = text, ami a probléma részét képzi.
A pointerek kezelésében én is mindig bizonytalan vagyok.
De talán ez a könyv segít neked is: Bővebben: Link 5.3. Mutatók és tömbök
Van egy változóm 0 és 59 közötti értékkel. Ez random változik de mindig pozitív egész szám. Nekem attól függően mennyi ez az érték kell fel le mozgatnom 5 lábat az avren. Az érték elég gyorsan változik 300msec( most pontosabbat nem tudok mondani).
Select case gyorsabb lenne?
Én valamilyen tömbös megoldást javasolok, ahol a 0-59 érték a mutató és a tömbből kivett érték kerül a portokra. Ennek az az előnye, hogy bármelyik érték esetén ugyan akkora lesz a választás futásideje és gyorsabb is lesz mint az if, vagy a case. Ha összetettebb dolgot kell csinálni, akkor mutatókat rakhatsz a tömbbe, amikkel ha kell mind a 60 esetre egyedileg megírt programrészletre ugorhatsz.
300ms nem tragikus. Amit számoltam, ott ns-ot írtam, 1ms ezredrésze. Nem elég ekkora sebesség? A pointeres tippek nagyon jó ötletek! Viszont komolyabb programozói tudást igényel.
Ezen elmélkednem kell.
Jónak tűnik. Kérdéses azonban az agyi kapacitásom, mármint ami a programozói tudást jelenti. De tetszik, nem mellesleg biztosan tanulnék belőle ezt azt! Üdv!
Egy kis segítség az elmélkedéshez: Kimazsoláztam egy régebben írt programomból, hogy én hogyan csináltam hasonló dolgot. (Az egészet nem adhatom közre.) Kicsit kommenteltem is. Nem teljes, nem is AVR-hez készült, ezért a típus és változó deklarációk nem vehetők át egy az egyben. Több mint egy éve nem programoztam és a C egyébként sem a szívem csücske, ezért sokkal többet nem nagyon tudok hozzátenni.
Köszi!
A c nekem teljesen kínai. Bascom-ot használok. Nekem ez csak hobby. neten utána olvasok majd.
Lookup tábla megoldja neked a dolgot, egy olvasás, egy írás a portra.
Köszönöm a linket. Ám esetemben a "#define" használatában lesz a probléma, tippem szerint.
Mivel a globális változóimat egy mátrix tömbbe rendeztem, ezért a változóim neve meglehetősen hosszú lett. Ezt azzal orvosoltam, hogy #define-al rövidítettem azokat:
Ami hibát még elkövethettem, az az volt, hogy funkciókba argumentumként is ilyen nevet adtam meg:
Miért is úgy fogalmaztam, hogy "elkövethettem"? Mivel eddig ez nem okozott gondot! A fordítót nem zavarta, a megírt program azt tette (teszi otthon most is), amit akartam. Mi változott? Ez egy új dolog az avr-gcc 8.2-ben? Közben valahogy sikerült a WinAVR-t is összekuszálnom...
Szia,
Az ID gombra mit olvas be IDnek? Sokszor a nyákra ráforrasztva szoktam írni vele az IC-ket, most jelenleg egy PIC18F4250-el játszom ezt. Régen ugyanezt csináltam Atmega328-al, csak arra könnyü volt soros-port bootloader-t tenni, ezért nem volt szükség a MiniPro-ra többet egy ideig. |
Bejelentkezés
Hirdetés |