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
Szia
Én csinálom az adót is meg a vevőt is. Autó/kapu stb nyitó lenne belőle. AES128 titkosítást szeretnék használni, mivel csak ebben bízok. Ezt (egyenlőre) még senki sem törte fel. Ezért kellene ilyen távirányító. Akkor viszont marad a házi építés.
Sziasztok
debugWire opcióval felszerelt programozó/debbuger csak a gyári Atmel változatokba létezik pl: MK2, ICE stb Nincs valami olcsó kínai programozó ami tudja ezt?
Hogy véded ki a lehallgatást?
A hozzászólás módosítva: Ápr 10, 2016
Ha vmilyen private/public kulcs jellegű megoldást alkalmaz ugrókóddal, akkor nyugodtan lehet hallgatózni, a dekódoláshoz szükséges információ sosem lesz kisugározva.
Pontosan ez a cél. Hiába hallgatod le, az ugrókód miatt sosem lesz kétszer ugyan az az üzenet. A privite key pedig megakadályozza a visszafejthetőséget. Így feltörni kb lehetetlen.
A kódfeltörésen kívül a kód ismételt felhasználása is kritikus, amit a KEELOQ -os rendszer jól megoldott.
Ilyet próbáltál már? Talán egyszerűbb lenne a kapcsolatot azzal bejátszani, aztán kicsit AES-el tuningolni, mint újat kitalálni.
Igen a kettő kombinációja már tuti biztos. De szerintem elég egy fix egyedi azonosító + random számot összerakni egy üzenetben, majd ezt lekódolni. Mivel kétszer sosem lesz ugyan az az üzenet, így a kód ismétléses feltörés nem működik. Visszafejteni nem lehet. A vevő pedig dekódolás után eldobja a random számot, és csak a fix azonosítót nézi.
Sziasztok!
Szeretnék bocsánatot kérni mindenkitől aki próbált segíteni nekem és figyelmen kívül hagytam. USBasp-vel akartam programozni és nem válaszolt a chip. Csak a 10k ellenállás hiányzott, amit mindenki bele akart verni a hülye fejembe. Nos, mivel ráraktam, elméletben működik a dolog, DE... A chipet felismeri a gép viszont nem 328P hanem sima 328, ezért más a chip ,,alírása". Szóval ezt a hibát kapom:
Arduino IDE-al próbálkozom és szeretnék ezen a fordítón is maradni (hacsak nincs egy hasonlóan egyszerű megoldása valakinek, mert nem szeretnék driver problémákba ütközni a Win XP miatt). Mit tudok kezdeni ezzel?
Ezzel az a gond, amit említettem: nincs védve a kód ismételt felhasználása ellen.
Így nem kell kódot fejteni sem. Egyszerűen rögzítem a jelsorozatot, ugyanazt én is elküldöm, kinyitom a garázsodat.
Ha a vevő x ideig nem fogadja el egymás után ugyanazt a kódot, akkor nincs vele gond szerintem.
Nem így kell megoldani.
Az adóban és a vevőben van egy számláló. Amikor az adó küld, elküldi a számláló értékét is (AES titkosítással). Amennyiben a számláló magasabb az előző értéknél, úgy a vevő elfogadja, ha kisebb vagy egyenlő, akkor elutasítja. Az egyesével növelés nem jó, mert az adót lehet, hogy véletlen másik városban nyomod meg, egyik oldalon nő a számláló, a másikon nem. Egyszerű: mindig a magasabb értéket fogadod el. Mi van, ha a feleségednek is kell nyitó kulcs? Két számláló lesz. Az adó elküldi a számlált értéket és azt, hogy a te adód, vagy a feleségedé. A vevő ezalapján növeli a te, vagy a feleséged számlálóját.
Igazad van, kelleni fog egy fix azonosító + egy számláló aminek az értéke mindig +1 nő. Így kétszer nem fogadja el a már "használt" kódot.
Üdv!
Az avrdude.exe-hez tartozó avrdude.conf fileban kell egy új chippet felvenned. Lényegében cnrtl+c/v-zni kell az atmega328p adatait, aztán csak 2 dologot kell módosítani: az "id" és a "signature".
Ennyi. Hogy egyszerűbb legyen mellékeltem is a módosított .conf filet. Elnézést, de tesztelni nem tudom. (nincs sima 328asom)
Használhatónak tűnő KEELOQ kódok vannak C-ben. Abból szerintem többet lehet tanulni, mint a doksikból.
Sziasztok.
AZ lenne a kérdésem, ha benne vagyok épp egy Timer interrupt végrehajtásba és azon belül jönne egy hosszabb delay ami alatt esetegesen újból meghívhatná magát ugyan az a megszakítás akkor mi történik? Mindenképpen elkezdi újból végrehajtani saját magát vagy még megvárja az azon belül levő késleltetés végét? A hozzászólás módosítva: Ápr 12, 2016
Szia!
Egy interrupt kiszolgálása közben automatikusan le vannak tiltva a globális megszakítások, tehát nem fogsz ide-oda ugrálni, egyik megszakításból, a másikba (kivéve, ha ezt külön engedélyezed, amit kerülj szerintem ). Ha a globális megszakítás le van tiltva (mint amikor egy épp kiszolgálsz egyet isrt), attól még a különálló megszakítás flageket állíta a hw. Azaz amint újra engedélyezve lesz (pl. visszatért az isr rutinból), végrehajtja a többi megszakítást szépen sorban. Prioritási sorrend az úgy van, hogy minél alacsonyabb címen helyezkednek el, annál nagyobb előnyt élveznek. Legmagasabb prioritással a reset rendelkezik, utána a INT0 és így tovább... Minden megszakításnak van egy saját flag-je ami jelzi, hogy megszakítás érkezett. Ez azt is jelenti, hogy te egy megszakításon belül, vagy közben egyszerre több megszakítás jön mondjuk az INT0-ból, attól még azt egynek fogja érzékelni a hw, mert csak egy darab bit jelzi, hogy történt interrupt vagy nem. Ez a te esetedben azt jelenti, hogy ha a delay-ed alatt egy vagy több interrupt jön a timered-től, akkor, amint visszatérsz az isr rutinból, és nincs magasabb prioritással rendelkező interrupt, akkor újra visszaugrasz kiszolgálni a megszakítást (ha van magasabb prioritású akkor meg sorba megy). Amúgy ha szabad megkérdezni, mire kell a delay? Megszakításon belül nem az igazi (meg amúgy is, általában könnyen kiváltható), sőt isr-be illik minél rövidebb kódot írni.
Köszi értem.
1602 kijelző karaktereinek van beállítva egy timer 100us-onként és amikor elér a 16. karakterhez vagy visszatérne a nullára mielőtt még írná a karaktert csinálok egy sorváltást csak nincs kedvem rá külön függvényt íri hanem elé raktam a karakter kiírásnak és azt végrehajtja majd vár mondjuk 1ms-t és kezdi végre a karakter kiírását. De mivel időközben lejárna a 100us a megszakítás újból kezdené a következő karakter kiírását ugyan ebben a függvényben. De az is lehet kihagyom a delayt és beteszek valami return parancsot ami kihagyná arra a körre a karakter kiírást és akkor meg is lenne a sorváltásnak a 100us várakozási idő.
Errol beszelsz:
Szia
Igen lehet mindegyiknek egy számlálója. Hisz eleve minden kulcsnak saját ID-je lesz, ami alapján lehet azonosítani. Egy Strukturán belül 1-1 tömb (ID és számláló) esetén szinte korlátlan (porcitól függően több száz) mennyiségű ID/számlálót/ adót fel lehet venni.
Bemásoltam, de ezt kapom:
Nálam az Arduino IDE mappája D:\Program Files\Arduino\hardware\tools\avr\etc Vannak fórumok ahol a dokumentumok mappát mondját, ott is van egy Arduino mappa, de az nem configot, csak libeket tartalmaz. Lehetséges hogy rossz elérési úttal próbálkozom?
Elnézést, én hibáztam több esetben is.
Amit én mellékeltem az azért nem megy, mert az avrdude 5.1-hez való config file. Az arduino 1.6.8-ban (most töltöttem le) abban 6.0.1-es avrdude van. (tippem szerint a tiédben is) Ebben már benne volt eredetileg mindkét chip. Szóval jó volt az eredeti config file. Ha véletlenül kitörölted volna, mellékelem az eredetit, amit az arduino mappából másoltam. Így visszajutunk az eredeti problémára:
Erre nem találtam meg a megoldást. Nem tudom, hogy lehet simán az ICt hozzárendelni. Bocsi.
Csak az ár miatt használnám illetve nem találtam még értelmes wifi modult amivel könnyen meg lehetne csinálni a kapcsolatot.
Sokkal egyszerűbb kezelni a BT modult és szerintem stabilabb is, mint az ESP8266. Tehát hajrá!
És ha csak kapna egy -F paramétert? Elméletben a 2 chip ugyanaz bitek és útvonalak terén, csak a P-s verzió energiatakarékosabb, a jobb gyártástechnológia miatt.
Üdv. Nem igazán AVR kérdés de nem tudom máshol feltenni.
Szeretnék összehozni labortáp célokra egy nagyon precíz DAC áramkört lehetőleg nagyon olcsón. Minimum 16 bites kellene de ahogy nézem eléggé drágák és mivel 2 csatorna kellene az nem lenne olcsó cél IC-vel. Arra gondoltam beszerzek egy Bővebben: Link Tudom ez 12 bites, de arra gondoltam , hogy precíz műveleti erősítővel 2db 12 bites jelet összeadnám 1/ 0.01 arányban. Nem baj ha a belső referencia vagy a műveletik esetleg az összeadás pontatlan mert kinéztem egy további 22 bites ADC-t ami szintén alig 7-800ft. Az monitorozná az előállított feszt és visszacsatolva a processzorba az esetleges hibát korrigálná. Elképzelésem szerint így egy nagyon pontos DAC-om lenne a pontossága pedig a mérő ADC referencia pontosságán múlna amit egy nagy pontosságú feszmérővel elég jól be lehet kalibrálni. Mi a véleményetek a dologról?
Milyen pontos labortápot akarsz? 40V-ig a 0.01V-os felbontás nem elég? Vagy kalibrátort gyártasz? Az összeadás elméletileg működik, gyakorlatilag a drift elviheti, ami alapban még talán nem is gond, csak akkor van meglepődés, amikor növekvő DAC értékre csökkenő kimenő feszt kapsz, erre meg a zárt hurkú szabályozás megőrül. Vagy zero-drift erősítőket használsz vagy vegyél inkább igazi 16bites DAC-ot, árban ugyan ott leszel. Ha jól rémlik, a MicroChip-nél van 13-14bites SPI DAC is...igaz, azok asszem nem szorzó típusúak, ami ilyen felhasználásnál előny lenne.
Én PIC-ben levő két DA-t (8 és 5 bites) kötöttem így egy összeadó erősítővel, működött. A pontosság engem sem izgatott, mert a visszamért jelet figyeltem. Régebben játszottam egy 24 bites AD-vel NAU7802), de nem volt sikerélményem . Mindenképp egy ilyen pontosságú referencia megépítése is komoly kihívás, nem tudom labortáphoz kell-e ilyen pontosság egyáltalán.
Azért 8/5 bitet analóg módon összeadni szerintem kicsit más mint 2x12 bitet. Ugyebár a másodlagos 12-bites DAC 1 lépcsőjére jutna 12 bit. Szerintem kezelhetetlen. Főleg szabályozási körben. Kisebb felbontásokban én csináltam PWM szorzót is, de 8+10 bitnél is már SW trükközés kellett. Mondjuk arra is kíváncsi leszek majd, hogy mivel lesz bemérve a cucc, mert 24-bites jeleket méricskélni nem konyhaasztal sarkán elvagyunk feladat. (főleg, ha az ADC nem tartalmaz szűrőt) Az meg külön érdekes feladat, ha már tápegységről van szó, amikor 0-2A-el megrántja a terhelés a tápot mondjuk 20kHz-el...
|
Bejelentkezés
Hirdetés |