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   774 / 837
(#) viper3D hozzászólása Máj 17, 2017 /
 
Sziasztok!

Egy kis segítséget, illetve magyarázatot szeretnék kérni tőletek.
ATmega328P segítségével vezérelnék szervo motort. A mikrokontroller számára az 5V feszültséget L7805 táp IC segítségével állítom elő (az IC lábain 0,1µF és 0,33µF kondik, ahogy az adatlap is írja).

A probléma a következő: Amikor rákötöm a szervot is erre a "stabilizált" 5V-ra és ráadom a PWM jelet, a motor teljesen megbolondul, vagy ugrál, vagy pedig nem csinál semmit, a tápellátást jelző LED-ek pedig villognak, mintha "elszívná a motor az energiát".
Ha például egy LM2596S-PSUM Step-down tápegység modult használok az áramkör táplálására, akkor a motor működik.

Erre tudnátok nekem magyarázatot adni? - esetleg nem elég stabil a rendszer, más kondenzátorok kellenek, stb...
Köszönöm!
(#) zolee1209 válasza viper3D hozzászólására (») Máj 17, 2017 /
 
Szia!

Bár nem írtad, milyen szervót kötöttél rá, én RC szervót tippelek.
A 78L05 100mA terhelhetőségű, aligha bírja a motort. Egyébként sem szerencsés a mikrovezérlő tápjára közvetlenül induktív terhelést kötni.

Szerk.:
Elnéztem a típust, bocsi. Lehet, az analóg szabályzó nem képes rendesen működni az adott kiépítésben.
Esetleg AVR BOR-ja bekapcsolva, vagy egyébként is, a táp megzuhanása miatt resetelhet például.
A hozzászólás módosítva: Máj 17, 2017
(#) viper3D válasza zolee1209 hozzászólására (») Máj 17, 2017 /
 
Szia!

Köszönöm a választ, igen, RC.

Az L7805 IC 1,5A terhelhetőségű.
(#) Massawa válasza viper3D hozzászólására (») Máj 17, 2017 /
 
Az sem lesz biztosan elég - a szervok kemény akkura lettek tervezve s nem soros stabilizátorra.
(#) viper3D hozzászólása Máj 18, 2017 /
 
Rendben, köszönöm a válaszokat!
(#) rolee900 válasza Sick-Bastard hozzászólására (») Máj 20, 2017 /
 
Köszönöm a választ.
Valóban célszerűbb lenne a char típust használnom, csak furcsamód amikor arra írtam át, ugyan ez a kiíratás függvény nem működött. Persze valószínűleg csak elírtam valamit, megfogadom ezt a tanácsot.
A kijelző mérete 20x18-as, nem RGBs, tudom, furcsa felbontás, de ennyi fért bele egy ferreros dobozba, eredetileg az lett volna a burkolata
Az SPI lábai pedig sajnos másra vannak felhasználva.
(#) rolee900 válasza Ivan93 hozzászólására (») Máj 20, 2017 /
 
Köszönöm a választ.
Elméletileg bírnia kéne, mert assembly-ben sem használok közötte késleltetést, de ötletnek nem rossz, hátha okoz valami változást. Ki tudja, miért "hisztizik" a kontroller.
(#) toma3757 hozzászólása Máj 21, 2017 /
 
Sziasztok!

RGB vezérlőt szeretnék készíteni, atmega48pa ic-t használok és olyan problémába ütköztem hogy a 0-ás és a 2es pwm csatorna különbözően működik ugyan azokkal a beállításokkal.
Nem használok külső osztcillátort, nem módosítottam fusebiteket, szóval ha minden igaz ~1mhz az órajele az icnek, 1024es osztót használva 262ms pediódus időt kapok, ami nekem nagyjából megfelelő, (az egyik funkció a villogás).
A 0-ás csatorna tökéletesen működik, de a kettesnél mintha sokkal nagyobb lenne a frekvencia (szemmel még látható hogy nem egyenletesen világít).

Szóval az lenne a kérdésem, hogy ez miből adódhat?
Kódom:
  1. DDRD = 0xFF;
  2.          PORTD = 0x00;
  3.          DDRB = 0xFF;
  4.          PORTB = 0x00;
  5.          
  6.          TCCR0A = (1<<COM0A1) |(1<<COM0A0)| (1<<COM0B1) |(0<<COM0B0) |(1<<WGM01) |(1<<WGM00);
  7.          TCCR0B = (1<<CS02)|(0<<CS01)|(1<<CS00);
  8.          OCR0A = 128;
  9.          OCR0B = 128;
  10.          
  11.          TCCR2A = (1<<COM2A1) |(1<<COM2A0) |(1<<WGM21) |(1<<WGM20);
  12.          TCCR2B = (1<<CS22)|(0<<CS21)|(1<<CS20);
  13.          OCR2A = 128;


Köszönöm!
(#) Ivan93 válasza toma3757 hozzászólására (») Máj 21, 2017 / 1
 
Szia! Timer2-nél az CSx=101 az 128-as osztás, CSx=111 lesz az 1024-es osztás. Nem egyforma a két timer regiszter-kiosztása, adatlapon nézd meg.
(#) pajti2 hozzászólása Máj 21, 2017 /
 
Sziasztok!

A pk2avrisp-t használja valaki mostanában?
(#) akosnagy hozzászólása Máj 22, 2017 /
 
Sziasztok!
Van egy ismeretlen paraméterű 10 csatornás PWM jelet adó eszközöm. Ha PNP MOSFET-et kötök rá (pl.: 2N3904) Gate-re rákötöm a PWM jelet, Drain-re 5V-ot, Source-t pedig rá küldöm egy ATMEGA328P analóg inputjára, akkor fogom tudni kezelni a bemenetet vagy szétcsapom valamelyik alkatrészt?
(#) csatti2 válasza akosnagy hozzászólására (») Máj 22, 2017 /
 
Ennek fuss neki még egyszer. Nincs olyan, hogy PNP MOSFET (p-csatornás van, röviden pMOS). Az általad megadott alkatrész egy NPN bipoláris tranzisztor (nincs gate, source és drain se).
Próbáld meg optocsatolóval illeszteni. Akkor legfeljebb az optocsatoló szál el ha hülyeséget csinálsz.
A hozzászólás módosítva: Máj 22, 2017
(#) akosnagy válasza csatti2 hozzászólására (») Máj 22, 2017 /
 
Csak megtanulom lassan a dolgokat
Olyan MOSFET-re gondolok ami a meghajtott/szabályzott áramkör előtt van. P-channel-ként találtam neten. Remélem így már érthető mit akarok.
Mellékeltem egy képet, csak az elv miatt. Nálam a bemenő fesz 5V a mikrokontroller miatt.
A hozzászólás módosítva: Máj 22, 2017

pBU4D.png
    
(#) csatti2 válasza akosnagy hozzászólására (») Máj 22, 2017 /
 
Sejtem mire gondolsz, de a bekötésed nem működne (már csak azért sem, mert figyelmen kívül hagytad a belső diódát [body diode, intrinsic diode]).
Most nézem a linkelt képet, na ez kinyírná az ATMEGA-t biztosan.
Ami jobb választás, az egy NPN tranzisztor vagy egy N-MOSFET.
A hozzászólás módosítva: Máj 22, 2017
(#) csatti2 válasza akosnagy hozzászólására (») Máj 22, 2017 /
 
Lehetséges bekötések.
(#) akosnagy válasza csatti2 hozzászólására (») Máj 22, 2017 /
 
Nagyon köszönöm!
(#) akosnagy hozzászólása Máj 25, 2017 /
 
Sziasztok!
Újabb fal. USB portot szeretnék tenni RX/TX lábakra. A kérdés, ha csak felkötöm és semmilyen programot nem töltök fel, a windows akkor is érzékeli az új hardware-t? Ha nem mi az a minimális program ami kell? Illetve az USB-n D+ D- lábak vannak. Melyik megy az RX-re, melyik a TX-re?
(#) RoliNyh válasza akosnagy hozzászólására (») Máj 25, 2017 /
 
USB -t direktben nem lehet összekötni Rx/Tx lábakkal, mivel más szabvány. Kell közé egy konverter IC...
(#) akosnagy válasza RoliNyh hozzászólására (») Máj 25, 2017 /
 
Akkor ezért nem működik. Köszönöm!
(#) pajti2 válasza akosnagy hozzászólására (») Máj 25, 2017 /
 
Kell neked egy USB RS232 kábel, és annak a saját drivere.
(#) kapu48 válasza akosnagy hozzászólására (») Máj 25, 2017 /
 
Inkább ezt szoktuk használni:
USB-Soros illesztő (3V3/5V) [CH340G chipset]
Bővebben: Link

Olcsóbb is!
A hozzászólás módosítva: Máj 25, 2017
(#) akosnagy hozzászólása Máj 26, 2017 /
 
Köszönöm
(#) Kari55 hozzászólása Máj 26, 2017 /
 
Sziasztok!

Már jó ideje szenvedek egy USBasp programozóval. Egy nyomvadt kis Attiny 45/25 avr-t szeretnék beprogramozni, de sehogy sem sikerül, mert mindig ezt az eredményt kapom
" C:\winavr-20100110\bin> avrdude -c usbasp -p t25 -U flash:w:"c:\debug\ledek.hex":i

avrdude.exe: error: program enable: target doesn't answer. 1
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check."

Pedig minden jól van összekötve, már a sokadik csatlakozást csinálom.
Kérlek SEGÍTSETEK!
Köszönöm előre is.
(#) Sick-Bastard válasza Kari55 hozzászólására (») Máj 28, 2017 /
 
Lehetőségek:

- Mégsincs jól összekötve. Ellenőrizd megint.
USBASP - attiny45
SCK -> SCK
MISO(SDI) <- MISO(SDO)
MOSI(SDO) -> MOSI(SDI)
CS -> RST
GND - GND

- Nem gyári beállítású a chip. Fuse bitek át vannak állítva.
RST, SPI ki van kapcsolva vagy/és debugWire be van kapcsolva.
Itt még a High Voltage Serial Programming segíthet rajtad.

Az avrdude-ban használd a -v (verbosity) parancsot. Segíthet a hibakeresésben.
"C:\winavr-20100110\bin> avrdude -c usbasp -p t25 -v -v -v"
(#) akosnagy válasza kapu48 hozzászólására (») Máj 28, 2017 /
 
Na csak a nehezebb megoldást választottam Vettem egy CH340G chipet és összeraktam én a cuccot. Naná, hogy vannak vele gondok
Időnként elég nehezen csatlakozik fel a gépre. Többször ki-be kell huzogatni, hogy felismerje a rendszer. Drivert természetesen feltettem hozzá.
A másik gondom, hogy ATMEGA328-cal nem tudtam kommunikációra bírni. Vagy a programmal van gond vagy valamit rosszul kötöttem be. Próbáltam egy ledet tenni RX/TX lábakra, hogy legalább valami villódzás utaljon rá, hogy beszélgetni akarnak, de igazából semmi. Folyamatosan világít, nem maxon, de világít és ennyi.
Itt a kapcsolás ami alapján csináltam.

Ennyi infóból valakinek ötlet?

ch340g.png
    
(#) Kari55 válasza Sick-Bastard hozzászólására (») Máj 28, 2017 /
 
Így vannak a kivezetések az usbasp csatlakozón, és így van bekötve az IC-hez
egyik oldal:
USBasp Attiny25
MOSI pin 5
NC
RST pin 1
SCK pin 7
MISO pin 6

Másik oldal:
VCC pin 8
GND pin 4
GND
GND
GND

Akkor miért nem jó a kapcsolat?
Idézet:
„Fuse bitek át vannak állítva.
RST, SPI ki van kapcsolva vagy/és debugWire be van kapcsolva.
Itt még a High Voltage Serial Programming segíthet rajtad.”

Ezeket hol állítsam?
A hozzászólás módosítva: Máj 28, 2017
(#) rolandgw válasza Kari55 hozzászólására (») Máj 28, 2017 /
 
Már rákérdeztek: új a Tiny, vagy volt már programozva?
(#) Kari55 válasza rolandgw hozzászólására (») Máj 28, 2017 /
 
Attiny25 és 45 plusz egy atmega8-16PU új, még nem voltak programozva
(#) rolandgw válasza Kari55 hozzászólására (») Máj 28, 2017 /
 
Ezek szerint a programozóról kap tápot, nézted műszerrel a tiny-n? 4-8 pin.
(#) Kari55 válasza rolandgw hozzászólására (») Máj 28, 2017 /
 
Igen ott az 5V DC
Következő: »»   774 / 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