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!
Mit értesz azon, hogy nem tudod működésre bírni? A driver csak ahhoz kell, hogy a PC tudja kezelni a soros-usb konvertert (MCP2200). Ahhoz, hogy programot tudj feltölteni kell valamilyen szoftver is. Az ATmega162-re csak feltölteni szeretnél egy meglévő kódot, vagy a programot is Te írnád meg? Utóbbihoz az AVR Studio4-et (esetleg Atmel Studio7) ajánlom. Csak feltöltéshez léteznek egyszerűbb programok is, pl.: AvrDude. Idézet: - ellenáramú gerjesztés, tehát a H-hidat ellentétes polaritással kapcsolom be, az alsó FET-tel pedig meg tudom határozni a kitöltési tényezővel a fékerőt? Eddig úgy gondoltam, hogy ebben az esetben dupla akkora áram folyna, mint ha csak simán a két alsó FET-et kapcsolom be, az egyiket pedig PWM-mel hajtom, fékerő korlátozás miatt. Rosszul gondolom? „De fontos, hogy ezt semmiképp se így valósítsa meg, ugyanis fékezni is gerjesztéssel kell. Akár ellenáramú gerjesztéssel, de semmiképp sem rövidrezárással. Nem blokkolni, és impulzusáramokkal szétverni a FET-et a cél, hanem megállni, fékezni ahogy a neve is mutatja.”
Olyan kérdésem lenne még, hogy C++-ban, ha van egy függvény deklarációm, ami így néz ki:
startFastWrite( const void* buf, uint8_t len, const char multicast, char startTx) akkor meghívhatom-e úgy, hogy az utolsó paramétert elhagyom? Ilyenkor 0-nak vesszük? Köszönöm.
Miért nem próbálod ki?
Egyébként a válasz nem, nincs az argumentumoknak default értéke.
De ha így deklarálod, akkor lesz:
Itt van részletesen is.
Nem tudom ezt miért nekem irogatod, nem én vagyok a delikvens aki a marhaságokat irja meg olyan rajzot és elvet berak, ami köszönö viszonyban sincs a feladattal. (A helyes FET-es rajzot én raktam be, a téma nyitoja erre ugy látszik nem volt képes).
Szoval légy szives azzal foglalkozz, aki a zagyvaságot irogatja és esetleg azt hülyézd le, s ne azt aki esetleg megprobál neki segiteni.
Nem tudom miért kell eltürnöm, hogy nyilvánosan lehülyézzen valaki - ö ezt kétszer is elkövette.
Nem is fogok már itt egy szot sem szolni. (És ezt türitek pl. "Akármelyik témában olvasok mind összehordasz egy rakás baromságot") A hozzászólás módosítva: Szept 21, 2017
Köszi a választ! Hibát keresek, így legalább ezt ki tudom zárni.
Nem kell eltűrni sehol semmit, de nem kell nyújtani mint a rétestésztát sem az OFF-ot, mert zavar mindenkit. Szájkaratéztatok egyet ide - egyet oda, aztán a többit max. privátban, ha úgy forr a vágy a vitára.
Szia. Utána olvastam a fékexésnek, de csak olyan cikkeket találtam, ahol az alsó FET-eket bekapcsolva "gyenge" fékezés jön létre, vagy ha a h-hidat ellentétesen kapcsolom, "erős" fékezést kapunk. Találtam még megoldást arra, hogyan lehet visszatölteni kicsit az akksiba, ez is egyfajta fékezés, de szerintem a legkíméletesebb. Nem tudom mire gondolsz azzal, hogy fékezni semmiféleképpen csak rövidrezárással kell. Kifejted, ha lesz időd? Köszönöm.
A visszafékezéshez tanulmányozd a boost konverter működését aminél a táp a motor belső feszültsége a kimenet pedig az akkumlátor.
Fékezéshez attól függ mekkora motorról van szó és mekkora hajtott tömeg kinetikus energiája jó ha van motor áram mérés és az alapján PWM el szabályozod a fékezőnyomatékot (áramot) Továbbá nem árt mérni a tápfeszt is akkor már mert ha a táp nem bírja elnyelni a töltőáramot pl nem akkumlátor hanem egy hálózati táp akkor ott lesz füst bőven féküzemnél. Az a lágy fékezés is rövidrezárással teljes sebességgel akár a névleges áram 10-20x os is lehet fordított polaritással akár 30-40x. Szóval áramkorlát nélkül én nagyobb motorokat nem nagyon zárogatnék rövidre.
Válaszolok az RC-modell elektronika témába, mert itt off.
Az Attiny84 differenciális módról lenne kérdésem.
Az áramkörről röviden: Wifiről kapcsolható elektronikát csinálok, ami áramváltó segítségével méri az eszköz fogyasztását is (1:2000). A rendszer 3.3V-ról megy, szintillesztés nincs. Munka pont: PA3, ellenállásosztó 4.6k-val, 100 nF a föld felé a munkaponton (ez 1.6V-ra állítja a munkapontot) A munkapontra 470 ohm-mal csatlakozik az áramváltó két vége [PA3+PA2]. Amikor áram megy az áramváltótekercsen át, PA3-hoz képest ellöki a PA2-t. Az egész lényege az, hogy ADC-vel mérem a különbséget PA2-PA3 között differenciális módban. Itt létezik egy gain20x-is, amivel erősíteni lehetne, nincs bekapcsolva. Probléma (nincs áram a tekercsen): Külön-külön mérve ADC-vel PA2-t és PA3-t, szépen beáll középre, az ADC 0x0201-en. Minden szép és jó. Átkapcsolom az ADC-t differenciális módba. Azt gondolom, hogy ha PA2 és PA3 egyformát mér, akkor 0-0-t kellene adnia differenciálisan. Ezzel szemben: 29, -4, -6, -6, -8, -8, -7, -7 értékeket produkál, ami igencsak messze van a várt 0-hoz képest. Gondoltam, valamit félrekötöttem, rákapcsoltam a PA3-at a PA3-ra (kalibrálás). 30, -6, -6, -6, -8, -7, -6, -6 Látható, hogy differenciális módban az első mérést durván eltolja, utána meg offset-et produkál. Emellett még látható zaj is épül a rendszerre. Lehet használni a differenciális módot, vagy semmi értelme, mert külön mérve pontosabb? A hozzászólás módosítva: Szept 23, 2017
Úgy látom a speckó 10 lsb-t ír pontosságra diff módban.
Ha egyszer egyiket máskor másikat mérem pontosabb.
Néhány szó az AVR-es differenciális ADC-ről:
- csatornaváltás után az első mintát elronthatja (speckó szerint is) - a mintavételezés hosszabb, 25 ciklust igényel - a differenciális erősítőnek offset-je van, amit kezelni kell, ez max 10 körüli érték, kalibrálható - valamekkora kisebb zaj is járul a rendszerhez, 10 bitről, ne álmodjunk - amennyiben bipolárisan használjuk (mindkét irányba eltérhet), egy bitet elvesztünk, de a zaj ennél nagyobb Én 50 Hz-es jelet mintavételeztem, a sebesség nem releváns, ezért ha egyikből a másikat kivonom, akkor pontosabb mérést kapok, kisebb zajjal, offset nélkül. A differenciális ADC-ről 1X-es erősítés mellett (gain), csak gyorsan változó jelek esetén lehet értelme beszélni. A 20X-os erősítés viszont meglepően stabilan ment. Első minta rossz, van zaj, de nem nagyobb, mint 1X erősítés esetén, 8 bitet simán hoz. Nagy előny, hogy külső erősítő nélkül tudja mindezt. A megoldás nálam az lett, hogy ha gyenge a jel, akkor 20X differenciális ADC-t használok, egyébként meg mindkét csatornát mintavételezem felváltva.
Köszi, hogy megosztottad a tapasztalataidat.
Én ezt a 20x-os erősített differenciális mérést árammérésnél használnám, sok esetben bőven elegendő a 8bit felbontás is, Attiny85 (azt hiszem) adatlapját nézegettem, nekem tetszett. Minimális alkatrész szükséglet, minimális méret, nagy tudás. A hozzászólás módosítva: Szept 27, 2017
Nálam az attiny85 kevés lábával probléma volt. A lényeg, hogy az attiny differenciálisan mintavétez, amit az esp8266 felé küld, ami feldolgozza és kipakolja javascript-tel a böngészőben.
A probléma természetesen a kommunikáció. Hogyan kerül át az adat gyorsan az Attiny-ből az Esp8266-ra. I2C - az USI alatt rémborzalom, ha az ESP elkezdi darálni a kéréseket reménytelen UART - full duplex átvitel USI-val reménytelen SPI - nagyon gyors, húz mint atom, viszont 3 vezetéket elvisz, ami attiny alatt sok. Előnye, hogy ha egy RESET-et is bekötök, akkor programozni is tudom a chip-et ISP-vel. Attiny85 alatt éppenhogy megy a dolog: 2 láb differenciális ADC, 3 láb SPI, de akkor mást nem csinálsz vele. Jelenleg Attiny84-et használok, ami méretben csak kicsivel nagyobb, viszont 6-tal több lába van. A hozzászólás módosítva: Szept 27, 2017
Sziasztok! Atmega128A fusebitekről lenne kérdésem.
Ha kikapcsolom a JTAG opciót, akkor lehet a "rendes" MISO/MOSI (10,11) kivezetéseken programozni? Mit takar az "Atmega103 Compatibility Mode"? Ha bootloadert töltök fel, utána a 2,3 soros csapokon tudom elérni, vagy a 20,21-en?
A JTAG opcio nem befojasolja az SPI programozast, azt az SPIEN-el lehet csak letiltani. Az Atmega103 compatibility mode le van irva az adatlapba, hogy mik a kulombsegek (5.oldal). A lenyege az, hogy ha ez a bit aktiv, akkor a 103-as megat 1:1-be ki lehet cserelni mega128-al.
Az utolso kerdest nem ertem; a 20-21-es laba Reset illetve VCC, ennek semmi koze a bootloaderhez. Ha azt akartad kerdezni, hogy a ket soros port kozul melyiket hasznalja, azt a bootloader program hatarozza meg.
Bocs, elírtam. 27,28 az RXD1 és a TXD1. Az Arduino pinekkel kevertem... Az adatlapot meg előkotrom.
Sziasztok!
Mega2560-ba szeretnék kész hexet feltölteni úgy, hogy védve legyen kiolvasás ellen. Jelenleg a lockbit 0xFF, mire kell átírnom, hogy védve legyen? Újra is kell programoznom, vagy elég ha csak ezt átállítom és készen van?
Ilyet még nem csináltam, de az adatlap szerint (így értem):
Lock bit 0xFF helyett neked 0xFC kell. Ezzel Lock Bit Protection Mode 3-ba kerül az AVR. Programozási sorrend(1 parancsban): 1. hex beégetése a Flash-be ill az EEPROM-ba 2. Fuse és Boot Bitek configurálása 3. Lock bitek módositása PL.: avrdude -c "az adott programozód" -p m2560 -U flash:w:flash.hex -U eeprom:w:rom.hex -U lfuse:w:0x42 -U hfuse:w:0x99 -U efuse:w:0xFF -U lock:w:0xFC A Fuse biteket a Default értéken hagytam!!! Igényed szerint módosítsd! A sorrend fontos mert: Idézet: „Notes: 1. Program the Fuse bits and Boot Lock bits before programming the LB1 and LB2.” Idézet: „Further programming and verification of the Flash and EEPROM is disabled in Parallel and Serial Programming mode. The Boot Lock bits and Fuse bits are locked in both Serial and Parallel Programming mode.” Tehát írni(programming) és olvasni(verification) sem lehet sem a Flasht, sem az EEPROM-ot. Amiben nem vagyok biztos, hogy ha: A 2. lépésben kikapcsolod a Fuse bitben az SPIEN-t, akkor még képes leszel e ISP-n a 3. lépést végrehajtani, vagy akkor már egy Párhozamos programozó fog e kelleni... Tipp: Nem kell az SPIEN-t módosítani, mivel a módosított Lock bittel úgy sem lehet kiolvasni az AVRt. És ha mégis újra kéne írni az AVRt, akkor egy Chip Erase paranccsal ismét írható lesz. Idézet: „The Lock bits can only be erased to “1” with the Chip Erase command.”
Köszönöm, tökéletes lett!
Helló!
Az létezik, hogy egy külső órajelre állított Attiny85 -öt utána nem lehet USBASP -vel programozni? Adott egy USBASP (1kép), és egy úgynevezett "Development board" (2kép). A programozás ezeken keresztül történik/történne. Az alapbeállítású Attiny85 olvasása (3kép), a külső órajelre állított Attiny85 olvasása (4kép). Egyébként a külső órajelre beállított proci a tesztáramkörben (5kép) működik. Hogy lehet "Power on failed" hibaüzenet mikor csak a két procit cserélem ki? A hozzászólás módosítva: Okt 15, 2017
Még annyit hozzá, hogy a prociban semmilyen bootloader nincs, csak a nyers DIP8 tokos Attiny85 vannak.
A hozzászólás módosítva: Okt 15, 2017
Az a "Development board" ha nem ad órajelet akkor persze, hogy nem. Kell egy akármilyen kvarc vagy órajelforrás.
Akkor az SCL vezeték az mire való?
Mert ugyebár USBASP -n be van kötve a MISO, MOSI, RESET, SCL, +5V és GND... Ha este hazaérek, akkor megpróbálom rákötni az áramkörben az USBASP vezetékeit... A hozzászólás módosítva: Okt 15, 2017
Létezik.
Idézet az AtTiny85 adatlapjából: Idézet: „Depending on CKSEL Fuses, a valid clock must be present. The minimum low and high periods for the serial clock (SCK) input are defined as follows: Low: > 2 CPU clock cycles for fck < 12 MHz, 3 CPU clock cycles for fck >= 12 MHz High: > 2 CPU clock cycles for fck < 12 MHz, 3 CPU clock cycles for fck >= 12 MHz” Egy segéd órajel generátor segíthet. A hozzászólás módosítva: Okt 15, 2017
Inkább nézz utána , de az SCL csak a programozáskori órajel, az adatfolyamhoz. Hogy mást ne mondjak az SCL az ugye a 7. láb, az órajel láb meg a 2.-3. XTAL1.-XTAL2. Az áramkörben is próbálhatod, de ha egy kvarc lábait rákötöd simán a 2-3 lábra, programozáshoz az is megteszi.
A hozzászólás módosítva: Okt 15, 2017
Idézet: „a prociban semmilyen bootloader nincs” Tudom, hogy nem erre gondoltál, de az ISP az. Ezért kell a system clock. |
Bejelentkezés
Hirdetés |