Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
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
Lapozás: OK   781 / 837
(#) Ivan93 válasza mcz76 hozzászólására (») Szept 20, 2017 /
 
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.
(#) Kovidivi válasza Topi hozzászólására (») Szept 20, 2017 /
 
Idézet:
„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.”
- 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?
(#) Kovidivi hozzászólása Szept 21, 2017 /
 
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.
(#) vargham válasza Kovidivi hozzászólására (») Szept 21, 2017 /
 
Miért nem próbálod ki?

Egyébként a válasz nem, nincs az argumentumoknak default értéke.
  1. too few arguments to function 'void startFastWrite(const void*, uint8_t, char, char)'

De ha így deklarálod, akkor lesz:
  1. startFastWrite( const void* buf, uint8_t len, const char multicast, char startTx = 0)


Itt van részletesen is.
(#) Massawa válasza cimopata hozzászólására (») Szept 21, 2017 /
 
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.
(#) Topi válasza Massawa hozzászólására (») Szept 21, 2017 /
 
Ne már Massawa, ne háborúzz.
(#) Massawa válasza Topi hozzászólására (») Szept 21, 2017 /
 
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
(#) Kovidivi válasza vargham hozzászólására (») Szept 21, 2017 /
 
Köszi a választ! Hibát keresek, így legalább ezt ki tudom zárni.
(#) Topi válasza Massawa hozzászólására (») Szept 21, 2017 /
 
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.
(#) Kovidivi válasza Kovidivi hozzászólására (») Szept 21, 2017 /
 
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.
(#) cimopata válasza Kovidivi hozzászólására (») Szept 21, 2017 /
 
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.
(#) Kovidivi válasza cimopata hozzászólására (») Szept 22, 2017 /
 
Válaszolok az RC-modell elektronika témába, mert itt off.
(#) csabeszq hozzászólása Szept 23, 2017 /
 
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
(#) csabeszq válasza csabeszq hozzászólására (») 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.
(#) csabeszq válasza csabeszq hozzászólására (») Szept 27, 2017 /
 
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.
(#) Kovidivi válasza csabeszq hozzászólására (») Szept 27, 2017 /
 
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
(#) csabeszq válasza Kovidivi hozzászólására (») 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
(#) morgo hozzászólása Okt 4, 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?
(#) Zsolt2 válasza morgo hozzászólására (») Okt 4, 2017 /
 
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.
(#) morgo válasza Zsolt2 hozzászólására (») Okt 4, 2017 /
 
Bocs, elírtam. 27,28 az RXD1 és a TXD1. Az Arduino pinekkel kevertem... Az adatlapot meg előkotrom.
(#) enree hozzászólása Okt 5, 2017 /
 
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?
(#) Sick-Bastard válasza enree hozzászólására (») Okt 6, 2017 / 2
 
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.”
(#) enree válasza Sick-Bastard hozzászólására (») Okt 7, 2017 /
 
Köszönöm, tökéletes lett!
(#) RoliNyh hozzászólása Okt 15, 2017 / 1
 
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
(#) RoliNyh válasza RoliNyh hozzászólására (») 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
(#) pont válasza RoliNyh hozzászólására (») Okt 15, 2017 /
 
Az a "Development board" ha nem ad órajelet akkor persze, hogy nem. Kell egy akármilyen kvarc vagy órajelforrás.
(#) RoliNyh válasza pont hozzászólására (») Okt 15, 2017 /
 
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
(#) Hp41C válasza RoliNyh hozzászólására (») 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
(#) pont válasza RoliNyh hozzászólására (») 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
(#) rolandgw válasza RoliNyh hozzászólására (») 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.
Következő: »»   781 / 837
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem