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   640 / 837
(#) Droot válasza Droot hozzászólására (») Jan 19, 2015 /
 
Erre a régi témámra van valakinek ötlete?
Azóta sem sikerült működésre bírnom.
(#) 06smici hozzászólása Jan 20, 2015 /
 
Sziasztok! Egy ksi megerősítést szeretnék kérni ADC-vel kapcsolatban. Bújom az avr adatlapját, de az angol tudásom kicsit kevés már ide. Azt jól vettem ki belőle, hogy ha diff üzemmódba kívánom használni, akkor a 10 bites felbontás lecsökken 8bitesre? Ráadásul az is előjeles lesz.

De ha egyszer 8 bites, akkor ez az 512 hogy jön ide? ADC=(VPOS – VNEG)*GAIN*512/VREF The result is presented in two’s complement form, from 0x200 (-512d) through 0x1FF (+511d).
Így ez az eredményt továbbra is 10 biten adja vissza
(#) holex válasza 06smici hozzászólására (») Jan 20, 2015 /
 
Szia. Nem csökken, marad 10 bites.
(#) 06smici válasza holex hozzászólására (») Jan 20, 2015 /
 
Ez biztos, mert ADC elején meg ezt írja az adatlap:
Idézet:
„Two differential analog input channels share a common negative terminal (ADC0/ADC1),
while any other ADC input can be selected as the positive input terminal. If 1x, 10x or 40x gain is
used, 8-bit resolution can be expected. If 200x gain is used, 7-bit resolution can be expected.”

Sajnos most nincs kéznél avr, úgyhogy nem tudom kipróbálni.
(#) csabeszq válasza 06smici hozzászólására (») Jan 20, 2015 /
 
Megnéztem az Attiny 85 adatlapját.

2 féle mód van: unipolar és bipolar.

Amikor unipolarban vagy, akkor továbbra is 10 biten ADC-zel, de eleve feltételezed, hogy egyik jel nagyobb, mint a másik.
Amikor bipolarban vagy, az eredmény nem férne 10 biten, ezért 9 bit ADC lesz, a legfelső bit meg az előjel kettes komplemens tárolásban.

A 10 bit az 0-1023, a 9 bit az 0-511.

Nem olvastam olyat, hogy lecsökkenne a felbontás és nem is tapasztaltam, de próbáld ki.
(#) 06smici válasza csabeszq hozzászólására (») Jan 20, 2015 /
 
Nekem ATmega32U4-hez kellene. Én is csak az ADC fejezet elején láttam a 8bitet, ahol összefoglalja hogy mit is tud. Azért is furcsálom, mert utána sehol nincs róla szó.

Remélem marad itt is a 10bites felbontás, akkor nem kéne külső erősítőt használni.
Köszönöm a segítséget.
(#) Droot hozzászólása Jan 21, 2015 /
 
Sziasztok!

Használt már valaki ed16112 encodert?
ATmega8-al kezelem, a linken jelölt signal B-t az INT0-ra kötöttem, az A-t a PB6-ra, mindkét portona felhúzóellenállást bekapcsoltam. Az encoder középsőlába a testen van, a test és az A illetve a test és a B között egy-egy 100nF-oskondi van.
A program így néz ki:
  1. ISR(INT0_vect)
  2. {
  3.     if( PINB & (1<<PB6) )
  4.         {
  5.                 ertek--;
  6.     }else
  7.         {
  8.                 ertek++;
  9.     }
  10. }
  11. konfig:
  12.         MCUCR |= (1<<ISC01); //leeső él okoz megszakítást
  13.         GICR |= (1<<INT0); //INT0 engedélyezés


Akár melyik irányba tekerem, nem érzékeli megfelelően hogy melyik irányba tekerem és ha pl jobbra tekerem akkor hol növel hol csökkent.

Mi lehet a gond? Esetleg az encoderrel van probléma?
A hozzászólás módosítva: Jan 21, 2015
(#) gabi20 válasza Droot hozzászólására (») Jan 21, 2015 /
 
Szia nem tudom hogy van definiálva az ertek változó, de mindenképp legyen volatile.
(#) Droot válasza gabi20 hozzászólására (») Jan 21, 2015 /
 
Volatile, valami az encoderrel lehet, ez ed16111o, korábban a program ec12e07-el tökéletesen működött.
A hozzászólás módosítva: Jan 21, 2015
(#) csabeszq válasza 06smici hozzászólására (») Jan 21, 2015 /
 
Idézet:
„Sajnos most nincs kéznél avr, úgyhogy nem tudom kipróbálni.”

AVR nélkül nehéz lesz AVR-t programozni.

A viccet félretéve más járható út nem nagyon van, mint kipróbálni. AVR alatt a papíron programozásnak semmi értelme, mert még a legegyszerűbb dolgoknál is problémába ütközhetsz.

Én például rászoktam, hogy a B port hetedik bitjét
  1. PINB = _BV(7);
-tel forgatom meg. Meglehetősen sok AVR alatt működik is, csak épp azon nem ment, amit éppen használtam.

Az Atmel képes átvariálni IC-ről IC-re a dolgokat és hiába tudod, hogy egyik IC-n így megy az ADC, amikor lehet, hogy a másikon meg egy picit másképpen. Csak nagyon kicsit változtatnak (ADFR, ADATE és társai), de az elég, hogy 3-4 napot elszórakozz vele.
A hozzászólás módosítva: Jan 21, 2015
(#) 06smici válasza csabeszq hozzászólására (») Jan 21, 2015 /
 
Az a baj, hogy most tervezem a nyákot hozzá. A programozás része majd csak azután jön ha megvan a hardware.

Egyébként valakinek van rossz tapasztalata ezzel a diff üzemmódos gainnel? Nekem eléggé tetszik, pláne ha megmarad a 10bites felbontás. Külső erősítőt használva ellenállások tűrése mmiatt nem lenne garantálható a fix 10szeres erősítés. 1%os tűrés melett is akár 4-5 LSB-nyi hibát okozhat.
(#) Jaedong válasza 06smici hozzászólására (») Jan 21, 2015 /
 
Szia!
Az, hogy hány biten adja vissza az értéket, és, hogy abból hány bittel érdemes foglalkozni, az más kérdés . Sajnos ez a 8(vagy 7) bites felbontás szoftveres kalibráció nélkül teljesen valós. Itt 364-365. oldalon található az adatlapban, az adc karakterisztika (lsb accuracy, és még egy két dolog).

+ Itt egy kis segítség az ATMEL-től, elég nagyvonalú, de elindulni el lehet rajta. (Más kérdés, hogy megéri-e neked foglalkozni vele.)
(#) 06smici válasza Jaedong hozzászólására (») Jan 21, 2015 /
 
Köszönöm, átnézem ezeket is. Egyelőre még szenzor sincs meg mit mérni kéne. Csak ismerkedek a lehetőségekkel és próbálom megtalálni a legoptimálisabbat. Valószínüleg nem is lesz szükség az 1-2 lsb-s pontosságra, mivel a szenzor sem fogja tudni azt.
(#) benjami válasza Droot hozzászólására (») Jan 21, 2015 /
 
Még sosem jutott eszembe, hogy ezeket a kis poti helyettesítő mechanikus enkódereket INT bemenettel használjak. Egy 20 osztásos enkóder ugye 80 jelváltozást produkál egy fordulat alatt. Ha 1msec sűrűségű időzítő megszakításból lekezelem (alig pár utasítás ha csak a számláló léptetéséig megy megszakításból), akkor a másodpercenkénti 10 fordulatot még éppen le tudja kezelni (azt gondolom ez már bőven elegendő). Mivel minden programomban szoktam használni egyébként is msec felbontású időzítéseket, még csak nem is kell külön időzítő hozzá, hanem csak beszúrom ahhoz. Így nem kell foglalkozni külön pergésmentesítéssel, meg ugye nem vagyok az INT lábhoz kötve sem.
(#) lanszelot666 hozzászólása Jan 21, 2015 /
 
Sziasztok!
Több helyen próbálkoztam már segítséget kérni, eddig mind hiába, illetve egyik témában se találtam hasonló dolgot azért nyitottam ezt az új topic-ot ide.
Nemrégiben kaptam egy AVR32 EVK1100 fejlesztő board-ot egy barátomtól, viszont nem tudom beüzemelni.
Adatlap: Bővebben: Link
Amiket kipróbáltam de sikertelenek voltak:
Bővebben: Link
Bővebben: Link
Mivel régi a board ezért youtube-on sem találtam hozzá tutorialt, ez az utolsó reményem hogy hátha akad itt valaki aki ezzel vagy valami nagyon hasonlóval eddig foglalkozott Jó lenne beüzemelnem hogy ne vesszen kárba, mert nagyon szép kis darab
Valószínűleg nem hardware hibás, mert resetelés utána az LCD működik és kiírja pl az időt meg dátumot meg ilyesmit csak programot nem tudok rátölteni. (lehet hogy a bootloadere rossz, nem tudom...)

Link javítva.
Használd a link gombot!
-moderátor-
A hozzászólás módosítva: Jan 21, 2015
(#) csabeszq válasza 06smici hozzászólására (») Jan 22, 2015 /
 
Tudod ilyenkor szoktam mosolyogni.

Az Atmel nem azért rakott 10 bites ADC-t a mikrovezérlőbe, hogy limitálja a felhasználókat, amikor 100 biteset is rakhatott volna. A 10 bites ADC azt jelenti, hogy az IC-vel addig tudsz elmenni, fölötte zaj lesz. A 10 bites ADC-hez biztosított külön AVCC vonalat, sőt az IC-t le is kapcsolhatod a mintavételezés alatt, hogy az a 10 bit tényleg pontos legyen és a digitális zaj ne zavarja.

Az Atmega644 doksiját olvasva differenciális módban 1x, 20x és 200x-es erősítést (gain) beállíthatsz. A 200x-nél elfogott a nevetés, mert 24uV jutna minden egyes kvantumra. Nem vagyok azon a szinten, hogy képes legyek olyan stabil tápfeszt csinálni, ami ilyen alacsony zajjal megy.

Hidd el, a 9 bit sem rossz, pláne ha a VCC-t összekötötted az AVCC-vel szűrés nélkül.
(#) kapu48 válasza lanszelot666 hozzászólására (») Jan 22, 2015 / 1
 
Ígéretes Board-nak tűnik!

A barátod nem tud segíteni?
JTAG-od van hozzá?
Átnézted ezt a doksit?:
Bővebben: USB Bootloader

Ez is sokat segít!
AVR32 EVK1100 Getting Started Guide

Pontosan hogyan akartál programozni? Hól akadtál el?
A hozzászólás módosítva: Jan 22, 2015
(#) kapu48 válasza lanszelot666 hozzászólására (») Jan 22, 2015 / 1
 
És ezen a Forumon próbálkoztál?
How to program EVK1100 with bootloadre
(#) lanszelot666 hozzászólása Jan 23, 2015 /
 
Köszi a tippeket Ezeket még nem néztem!
A napokban utána nézek a forumon meg átfutom azt a leírást is amit linkeltél aztán majd írok mire jutottam, remélem menni fog tényleg szép board
(#) Gj hozzászólása Jan 23, 2015 /
 
Üdv kedves fórumtársak!
PWM vezérléshez keresem a megfelelő AVR-t, amivel 8-9, esetleg még több csatornán tudok különböző kitöltési tényezőjű PWM-jelet előállítani. Ennek a mikrovezérlőnek 9 csatornát írnak az adatlapján, de a specifikációban a szabályozásra csak két regisztert tüntetnek fel a "Register summary" részben (OCR1A és OCR1B (igazából 4, mert van alacsony és magas bájt is mindegyikhez)). A kérdésem, hogy akkor mit jelent az a 9 PWM csatorna az adatlapon?
(#) attti hozzászólása Jan 23, 2015 /
 
Sziasztok!
Ma jött meg az új Atmega1280-am, de ugyanúgy ehhez se tudok ISP programozómmal hozzáférni, az AVR előre felforrasztva jött, tehát nem én rontottam el a cinezést. Adatlap szerint kötöttem be, semmi melegedés se semmi, de az AVR Studio 6-ban nem tudok komunikálni vele...
(#) csabeszq válasza kendre256 hozzászólására (») Jan 24, 2015 /
 
Kipróbáltam a tirisztoros túlfeszültségvédelmet (crowbar), lenne kérdésem.

A kapcsolás itt látható. A teszt terhelés 2k volt, a step down pedig LM2575.

A kapacitást lehagytam, mert mikrovezérlőt hajtunk, túlfeszültségnél védekezni kell, nem kapacitást töltögetni.

Az első túlfesz azonnal kinyírta a zener diódát (5.1V-osból - ami 4.4V-on nyit - lett 2.7V-os). A kapcsolásban nincs ellenállás a tirisztor gate-je és a zener között, tehát elindult az áram rendesen.

Második próbálkozásra a zener elé betettem 100 ohm-ot, az megvédte a zener-t, de bekapcsolásnál azonnal rövidzárat okozott.

A harmadik próba véletlenül működött: a tirisztor gate-jét 500 ohm-mal a földre kötöttem. Ez annyit tesz, hogy sorba lett kötve 500 ohm, - 5.1V (4.4V) zener - 100 ohm. Ez adott némi terhelést, az ellenállásosztó kicsit növelte a toleranciát túlfeszültségre, így 5.4V körül kapcsolt be.

Szerintetek a harmadik megoldás életképes, vagy inkább másképp kellene?
A hozzászólás módosítva: Jan 24, 2015
(#) kapu48 válasza Gj hozzászólására (») Jan 24, 2015 / 1
 
Szerintem van a Tmer0 1 csatorna, kimenet PA2 OC0A
Timer1 OC1A/B 2 csatorna, Elvileg választható kimenetek a PB0-7
De a PB4-5 lenne a külső kristály csatlakozás!
Bővebben Adatlap 120.oldal
Ez össz. 3 független PWM csatorna.
(#) csabeszq válasza (Felhasználó 15355) hozzászólására (») Jan 24, 2015 /
 
Lehet, hogy mindkettő lesz. Ez egy step down áramkör, ami ha meghülyül, nyomja a 17V-ot 80W-on, amit a transil nem képes megfogni. Ha valami megpattan, első menetben a transilt nyírja ki, utána az összes többi áramkört egyszerre. A crowbar ezt visszatartja.

Ami viszont a transil előnye, az az induktív rúgások szűrése (az is van, hogy ne unatkozzak).
(#) kendre256 válasza csabeszq hozzászólására (») Jan 24, 2015 /
 
Én ezt a kapcsolást gondoltam. Az ellenállást úgy kell megválasztani, hogy a legnagyobb feszültség esetén se menjen tönkre a zener és tirisztor. A zener értékét próbálgatni kell, mert a soros ellenállás, a zener feszültsége, a tirisztor gyújtófeszültsége, gate árama együttesen határozzák meg a begyújtást.
A próbálgatás idejére a biztosíték helyére valami kis értékű, nagy teljesítményű ellenállást kell tenni. A tirisztor begyújtáskor rövidre zárja a kimenetet, az ellenállásnak ezt addig bírnia kell, amíg meg nem szünteted a betáplálást (mert csak akkor kapcsol ki a tirisztor).

tulfesz.jpg
    
(#) Gj válasza kapu48 hozzászólására (») Jan 24, 2015 /
 
És létezik hasonló árkategóriás AVR 8-9 független PWM csatornával?
Vagy van más megoldás 8-9 független PWM-jel előállítására?
(#) csabeszq válasza Gj hozzászólására (») Jan 24, 2015 /
 
A kérdés az, hogy mire akarod használni. Én mezei Atmega16A-n nyomatok 16 vonalon szoftveres PWM-et.

Minthogy DC motort vezérlek 50Hz-en, így nem kell hardveres PWM hozzá. A DC motort nem különösebben érdekli, hogy most mennyi az az annyi, 54%, vagy netántán 56%.
A hozzászólás módosítva: Jan 24, 2015
(#) kapu48 válasza Gj hozzászólására (») Jan 24, 2015 / 1
 
Kérdés mi a feladat?

Megoldható e 3 HW PWM + 6 Softveres PWM-el vegyesen?

Ha szükséges a gyors reakció idő csak az ATmega1281-ban van 6 timer, 9 HW PWM.
(#) rasty hozzászólása Jan 24, 2015 /
 
Sziasztok.
Megépítettem ezt az avr isp programozót és az a kérdésem, hogy mindenképpen kell a 2 kondi meg a kvarc az "avr socket"-be.
Attiny esetében is így működik?
(#) zombee válasza rasty hozzászólására (») Jan 24, 2015 / 1
 
Nem kell, a legtöbb AVR gyárilag belső RC oszcillátorról megy, többnyire 1MHz-en, néhány ATTiny 1.2MHz-en.
A hozzászólás módosítva: Jan 24, 2015
Következő: »»   640 / 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