Keresés: 
 Bejelentkezés
Nick:
 
Jelszó:
 
 
 
   
» Elfelejtettem a jelszavamat :'(
» Regisztráció
 Fórum témák
» Több téma
 Frissek
RSS hírforrások
  Hírek.rss
  Fórum.rss
  2012. Feb, 11. Szo
20:09:46
  Jelenleg 870 fő olvassa az oldalt
Fórum » Pontra menő témák » AVR - Miértek, hogyanok... »
AVR - Miértek, hogyanok...  
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök
Mikroprocesszorok » ATMEL processzorok
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 Méret:     389 / 409     
(#1124070) brugo Válasz • Dec 20, 2011
azokat a tuskeket amit a nyaklapba kell ultetni, hogy csatlakozzon az mkII -hoz hogy hivjak ? hogyan keressem az uzletbe ?

(#1124072) sgt válasza brugo hozzászólására (#1124031) Válasz • Dec 20, 2011
Ha ISP mkII-ről van szó, akkor támogatom meg nem is. Ezzel minden 8 bites AVR-t tudsz programozni, de a hátránya az hogy csak programozni. Kisebb programoknál debuggolás nélkül is lehet ügyködni, de amint csinálsz egy komolyabb dolgot rögtön hiányozni fog. Dragon annyival jobb hogy ott debuggolni is tudsz.

Ha már dragon akkor így érdemes meg venni Bővebben: Link, mert így egy Xmega fejlesztő panelt is kapsz majdhogynem ingyen.

(#1124076) sgt válasza brugo hozzászólására (#1124070) Válasz • Dec 20, 2011
2 soros tüskesor.

(#1124091) brugo válasza sgt hozzászólására (#1124076) Válasz • Dec 20, 2011
igen csak a Dragonrol eleg sok rosszat olvastam ezert is fordultam hozzatok kerdeseimmel

(#1124107) sgt válasza brugo hozzászólására (#1124091) Válasz • Dec 20, 2011
Miket? Régóta tervezem azt amit linkeltem megvenni, csak még nem jutottam el odáig, de ha tényleg komoly bajai vannak akkor nem is fogok .

(#1124122) edison14 Válasz • Dec 20, 2011
Szerintem annak aki esztétikusan írja meg a programot és tudja használni a szimulátort annak nem kell a debug funkció. Persze néha jól jön.

brugo: épp most beszélgetünk egy programozóról melyet én is tervezek megvenni. Ebben a fórumban az utolsó oldalon találod eddigi bejegyzéseinket.

(#1124134) sikolymester válasza brugo hozzászólására (#1124031) Válasz • Dec 20, 2011
Hűha!

Lehet félreértettem és félrebeszéltem!
Én a jtagice mk2-ről beszéltem, amikor mk2-t írtam.

Bocsánat, hogyha félreértést okoztam.

(#1124137) sikolymester válasza edison14 hozzászólására (#1124122) Válasz • Dec 20, 2011
Hehe, hát azért függ attól, hogy milyen nehézségű programot írsz.

Arról nem is beszélve, hogy a szimulátor elég gyatra néha.
Legújabb példa: Atmega48PA-nál az OCR1A -nak hiába adok értéket, a szimulátorban ez nem történik meg. A valóságban természetesen jól működik.

(#1124236) zombee válasza sikolymester hozzászólására (#1124137) Válasz • Dec 20, 2011
Én évek óta programozok AVR-t, és elég cifra dolgokat is művelek. Fejlesztőpaneleket és fényeffekteket
is építgetek, illetve belefogtam egy aszinkron motorral hajtott villanygokart tervezésébe,
természetesen AVR-el oldom meg a főáramkör háromfázisú vezérlését hajtással és visszatöltő fékezéssel.

Nem vagyok valami hűdenagy májer, de eddig egyetlen alkalommal sem volt szükségem sem debuggerre,
sem szimulátorra. Való igaz hogy volt amikor 1-1 apró hiba miatt elakadtam.
De a "hagyományos" módszerekkel is kb. ugyanolyan gyorsan(vagy picivel gyorsabban) sikerült
a hibákat elhárítani, mint egyetemi sorstársaimnak szimulátorral/debuggerrel.

(#1124249) zombee válasza zombee hozzászólására (#1124236) Válasz • Dec 20, 2011
Hozzászólva az előzőhöz egy remek példa - VGA vezérlés tisztán AVR-el!
Na ezt debuggolhatnám pár évig, pedig "csak" 900 sornyi assembler kód az egész...
Na jó ennek is a "Ki mit épített" topikban lenne a helye...
» A fájlok letöltéséhez be kell jelentkezned! «

(#1124302) sgt válasza zombee hozzászólására (#1124236) Válasz • Dec 20, 2011
Pedig nagyon hasznos tud lenni . Jó múltkorában ismerőssel csináltunk egy virtuális digi oszcit melynek programja 4000+ soros (PIC32 C-ben), és bizony nagyon jól jött az online debug. Pl. mikor a uC lábait néztük, hogy van-e jel, akkor csak simán lépkedni kellett és azonnal látszódott, a műszeren, hogy van-e vagy sincs a lábon fesz. Nem kellett külön erre programot írni.

Nem mellesleg AVR-e egyelőre én is szimulátor és debuggolás nélkül írok programokat, de mondjuk nem ekkorákat, mint pl te.

AVR Studio C szimulátora egy bughalmaz, az asm oké, de a C része elképesztő.

(#1124313) sikolymester válasza zombee hozzászólására (#1124236) Válasz • Dec 20, 2011
Le a kalappal akkor.
Én mindenesetre kényelmes maradok, és ahelyett, hogy Soros porton kiküldött infók alapján jöjjek rá, hogy mi történik bizonyos esetekben, inkább belenézek a lelkébe debugerrel.

(#1124571) Gery Válasz • Dec 21, 2011
Sziasztok!

Segítséget szeretnék kérni PID szabályozásban, illetve elég lenne a PI is. Az interneten sok mindent olvastam róla, de mindenhol matematikai levezetéseket találok, és a problémám az, hogy nem tudom leírni programban. Vannak programok amik már működnek, de nagyon kezdetlegesek, és a lengést egyikben se sikerült kiküszöbölnöm. Ezt a pdf-et kaptam hozzá, ami alapján meg kéne tudnom csinálni, de sajnos nem nagyon tudom értelmezni. Tudna ebben segíteni valaki?
Adott egy 32UC3B1256 mikrokontroller. Továbbá egy DC motor amelynek mindig tudom a pontos helyzetét 12biten. Egyik irányba nő a másikba csökken, értelemszerűen. Egy végtelenített potmeter ami 2bites GRAY kódot ad, gyakorlatilag egy körbefordulás alatt 48szor "ad jelet". Továbbá interruptban minden pwm jel lefutásakor mérem a kapocsfeszültséget egy analog érzékelővel. Ez, ha áll a motor ez decimális számként 423-at jelent, az egyik irányban ha felpörög le megy 0-rá a másik irányba pedig fel 846-ra.
Ezek alapján tudtok segíteni hogyan is kéne hozzálátnom a program megírásához?

Üdv.:Gergő
» A fájlok letöltéséhez be kell jelentkezned! «

(#1124758) dB_Thunder válasza Gery hozzászólására (#1124571) Válasz • Dec 21, 2011
A programozás részében nem tudok segíteni, de itt a fórumon a CNC-és topicban foglalkoznak PID szabályzással.
Amit viszont fontosnak tartok, hogy minden PID rendszert az adott "hardwerhez" hozzá kell hangolni, ami nem is egyszerű ! Anélkül nem ér semmit.
Olvastam már öntanuló (hangoló) PID rendszerről, szerintem afelé kellene neked is elindulnod!

Régebben gyűjtöttem a PID rendszerről szóló leírásokat, ha érdekel megosztom veled!

(#1125007) sikolymester válasza Gery hozzászólására (#1124571) Válasz • Dec 21, 2011
PI szabályzást javaslom, mivel a PD-ben, illetve PID-ben a D deriváló tag könnyen destabilizálhatja a rendszert.
A PI szabályzáshoz a következőket kell tudnod:

Milyen paraméterrel szabályzol, milyen paramétert szabályzol, illetve a rendszered milyen gyors.

Nos, tételezzük fel, hogy a DC motor sebességét szabályzod. A bemenő paramétered amit tudsz állítani pedig a feszültség, mégpedig egy PWM jel által. A rendszered gyorsasága a motorod és a forgatott tehetetlenségi nyomatékától függ elsősorban. Fontos, hogy a szabályzás sokkal gyorsabb legyen mint a rendszered, vagyis jelen esetben a motoros felpörgési ideje 0-ról max ford. számra. 2 nagyságrend eltérés biztos hogy kell lennie.

Röviden ennyit kell tenned:
dt időnként mintavételezni a sebességet(ez az ami min 2 nagyságrenddel rövidebb idő mint a motorállandód).
Mivel neked pozicióvisszajelzésed van a motorrol, így értelemszerűen ezt először deriválnod kell (itt máris bejöhet egy jó kis hiba, amivel a deriválás mindig járhat). Az utolsó pár mérésre vonatkozóan tedd ezt meg.

Most már tudod az aktuális sebességet. Mivel neked van egy előírt sebességed, ami eltér az aktuális sebességtől, ezért feszt kell kapcsolnod a motorra. Ekkor szorzod meg az előírt és az aktuális különbségét az erősítéssel (P-vel). Értelemszerűen, ha az erősítés 0, akkor sosem indul el a motor, ha az erősítés túl nagy, akkor elindul a motor mint a mérgezett egér.

Az I része a szabályzónak abból áll, hogy minden dt időben, integrálod, vagyis összegzed a különbségét az előírtnak az aktuálistól. Ezt az összegzett értéket is hozzáadod a P szabályzóval kiszámolt értékhez. EZ kb arra jó, hogyha a P erősítési értéke nagyon kicsi, mondjuk 0, akkor is szép lassan egyre csak összeadod a hibát, és végül eléred az előírt értéket. Az I résznek is van egy erősítési tényezője.

Az egészet pedig a Ziegler-Nichols módszerrel tudod behangolni. Ez amolyan ökölszabály dolog. Ziegler-Nichols

Hadd linkeljek egy képet, ami ezt a konyhanyelv leírásom jól személteti:PID

(#1125023) Axel Válasz • Dec 21, 2011
Sziasztok!

Valaki próbált már AVR-ről adatot küldeni MATLAB környezetbe UART-on keresztül? Egy USB-UART konvertert szeretnék használni mindehhez. Nézegettem neten az Instrument Control Toolbox-ot ami olybá tűnik alkalmas ilyesmire de egy kicsit el vagyok még veszve a leírás részleteiben. Nekem ugyanis semmi másra nincsen szükségem csak arra, hogy 8 bites adatcsomagokat (gyakorlatilag "unsigned char" méretű számokat) küldjek a programnak és azt feldolgozás után grafikusan ábrázoljam.

Köszi szépen!

(#1125047) sikolymester válasza Axel hozzászólására (#1125023) Válasz • Dec 22, 2011
Jobb híján köss össze két PC-t. Aztán hiperterminálban írogass dolgokat matlabnak. Még azt is megteheted, hogy csinálsz szoftveresen 2 RS232-t a PC-n és azokat loopbackkel összekötöd. Van erre valamilyen szoftver.

Ha működik, akkor AVR-rel is fog.

(#1125119) Gery válasza sikolymester hozzászólására (#1125007) Válasz • Dec 22, 2011
Igen, nagyjából értem, hogy ez a lényege, de sajnos még mindig nem áll össze a kép, hogy hogy is kéne erre programot írni. Szóval a sima arányos tényezőt úgy írtam le hogy:

sebesség = konstans*(beállított pozíció érték - aktuális pozíció érték)

Akárhogy is csináltam, mindig az történt, hogy olyan gyorsan forgott a motor, hogy egyből túllendült a 0 értéken ami után 4095 jön és forgott tovább mint az őrült. Ezek után raktam bele mindenféle "if" parancsokat ami valamit javított, de nagyon össze-visszaság lett belőle.

"dt időnként mintavételezni a sebességet"- ez például világos, meg a többi is, de az nem, hogy hogyan is csinálom meg. A Zeigler-Nichols dolgot pedig egyáltalán nem értem .

(#1125184) sikolymester válasza Gery hozzászólására (#1125119) Válasz • Dec 22, 2011
Aham, tehát pozícióra szabályzol. Nos tegyük fel, hogy 360 fok a körbefordulás (értelemszerűen). Te előírsz 350 fokot és éppen 0 fokon van. Természetes, hogy felgyorsul mint az állat, eléri a 350 fokot és úgy elhúz mellette, hogy máris 0 foknál van. Ott aztán megint nagy a hiba és rákapcsol megint kakaót, a nagy hiba miatt.

Egyáltalán mindkét irányba tudod forgatni a motort? Neadj isten fékezni?

Egy P szabályzó önmagában bitang nagy lengéseket okoz, amennyiben nincsen I tag mellette. Amúgy meg vedd le kicsire a "sebesség = konstans*(beállított pozíció érték - aktuális pozíció érték)" -ben a konstanst.

Aggódni nem kell, hogyha a sima P szabályzó nem éri el az előírt értéket, hiszen a nagykönyv is megírta, hogy mindig lesz maradandó hiba.

(#1125218) Ricsi89 Válasz • Dec 22, 2011
Sziasztok!
Kérnék egy kis segítséget. Adott egy kapcsolás, Attiny13-al menne, de valamiért az egyetlen darabom megdöglött, nem látja a programozó. Viszont szükségem lenne az eszközre, amibe a proci menne. Mivel esélytelen a héten újat beszereznem, így át kellene alakítani a programot Attiny24-re, mert az van itthon. A gond csak az, hogy asm-ben van a program. A procit átírtam a kódban, 5 hibát adott, de életemben sosem foglalkoztam asm-el, így nem is nagyon tudom javítani. Ha valaki rá tudna nézni a programra és esetleg nem bonyolult átírni a másik procira az megcsinálná nekem? Itt a link a cucchoz. Bővebben: Link

(#1125232) Ricsi89 válasza Ricsi89 hozzászólására (#1125218) Válasz • Dec 22, 2011
Nos próbálom javítani a hibákat, eddig 5-ből 4 elvileg meg is van. Egyel viszont nem boldogulok.
  1. ldi m_temp,low(RAMEND); Load low byte address of end of RAM into register R16

Nos ebben a sorban van hiba, ami a következő:
Idézet:
„C:\Users\Ricsi\Documents\avr\v-tail\v-tail.asm(176): error: Overlap in .cseg: addr=0xe conflicts with 0xe:0xf”
Erre valakinek valami ötlet?

(#1125239) Axel válasza Gery hozzászólására (#1125119) Válasz • Dec 22, 2011
Hello!

A Ziegler-Nichols módszer egy kísérleti módja a szabályozás behangolásának. Lényege, hogy megkeresed azt az erősítést amelynél a kimeneti jel állandósult lengésbe jön, oszcillál. (Pl. egy motor periodikusan felpörög-lelassul, felpörög-lelassul és így tovább állandó időközönként) Ezt az ismert ún. kritikus körerősítést felhasználod a paraméterek számítására PI szabályozás esetén a következőképpen: P=0.45*kkritikus (ez gyakorlatilag a szabályozó erősítése lesz) illetve Ti=0.85*Tkritikus. Ahol Ti az integráló tag időállandója melyet a lengések periódusidejének ismeretében (Tkritikus) határozol meg. Látható, hogy ehhez már bizony műszeres méréseket is kell végezni. Remélem nagyjából érthető volt a dolog.

(#1125251) luxmanpower Válasz • Dec 22, 2011
Egy gyors kérdésem lenne ahhoz aki használt már TCN75 IC-t. A három címbit közül amit 1-nek szeretnék, azt mindenképpen fel kell húzni magas szintre? Vagyis nincs az IC-n belül felhúzva? Sajna adatlapban erről nem találtam semmit. (Univerzális panelt szeretnék csinálni, ahol utólag ki lehet jelölni az IC címét)

(#1125257) Axel válasza sikolymester hozzászólására (#1125047) Válasz • Dec 22, 2011
Szia!
Köszi a tippet! Találtam egy leírásfélt ehhez. Itt végülis a COM portot kell neki megadni ahogy látom és működik a dolog (elvileg). Még annyi, hogy ha kérhetem tudnál nekem egy kis fejtágítást adni ,hogy ha én összekötöm USB-UART konverterrel a gépemet akkor pontosan milyen szabvány szerint kommunikálok illetve mit is csinál ez az USB UART átalakító? Használtam már AVR-rrel HyperTerminal-ban, működött is de szeretném tudni pontosan mi történt akkor a háttérben. Ha nagyon OFF a téma itt és inkább máshová írod a választ kérlek jelezd majd!

(#1125260) sgt válasza Ricsi89 hozzászólására (#1125232) Válasz • Dec 22, 2011
  1. ldi m_temp, HIGH(RAMEND)
  2. out SPH, m_temp
  3. ldi m_temp, LOW(RAMEND)
  4. out SPL, m_temp


Így próbáld meg. Az a baja hogy az Attiny13-ban kicsit az SRAM így csak simán SP regiszter van. Az Attiny24-ben pedig már elég nagy ahhoz, hogy SPL és egy SPH regiszter kelljen.

(#1125340) sikolymester válasza Axel hozzászólására (#1125257) Válasz • Dec 22, 2011
A háttérben teljesen mindegy mi történik. Végeredményben a windows lát egy com portot, mintha az alaplapon lenne rajta egy pentium2-esen pl.

Összekötöd max232-vel az AVRt és az usb com portot. Aztán küldöd az adatot. Ennyi.
Protokol nincsen, hacsak nem csinálsz te valamit.

(#1125345) Ricsi89 válasza sgt hozzászólására (#1125260) Válasz • Dec 22, 2011
Beleírtam, de nem jó. Ha esetleg megnéznéd a pár hsz-el fentebb linkelt programot, az jó lenne.

(#1125350) Axel válasza sikolymester hozzászólására (#1125340) Válasz • Dec 22, 2011
Azt hittem a max 232 az csak a régi soros porthoz való.
Akkor mi a különbség közte és az FT232 között?

(#1125441) sikolymester válasza Axel hozzászólására (#1125350) Válasz • Dec 22, 2011
Azt hiszem ez már a fórumon kívüli témára vezet. Egy kis google + adatlapolvasással ráadásul gyorsan megtudható.

(#1125665) Axel válasza sikolymester hozzászólására (#1125441) Válasz • Dec 22, 2011
OFF:
Hello!
Olvastam ám adatlapot meg ezt is. A legfelső postból számomra egyértelműen az derül ki, hogy a max 232 önmagában alkalmatlan arra, hogy USB felületen kommunikáljunk a PC és egy UART modul közt. Ez csak az RS232 szabványú jelek szintillesztését végzi úgy, hogy a mikrovezérlő számára az megfeleljen semmi mást. Tehát evvel csak a soros portra csatlakozhatunk. Míg az FT 232 már USB protokoll szerinti kommunikációt tesz lehetővé. Ezért voltam némileg zavarban mikor azt írtad, hogy :"Összekötöd max232-vel az AVRt és az usb com portot." Nem mondom, hogy Te hülyeséget írtál csak számomra nem egyértelmű most a dolog. Ezért kérdeztem.
ON:

Következő     389 / 409     
 HEStore.hu
 Hirdetés
TrainModules.hu