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   513 / 839
(#) TavIR-AVR válasza csabeszq hozzászólására (») Jan 30, 2013 /
 
MAX232 - 25 métert tud...
(#) csabeszq válasza ThompsoN hozzászólására (») Jan 30, 2013 /
 
Én csináltam PWM trafót AVR-rel. Nem nagy kunszt.

Veszel egy ATtiny13-at 300Ft-ért, az egyik lábára ADC-t raksz és egy 5k-s potmétert, a másikra PWM-et (OC0A/OC0B), utána pedig raksz 1k-s ellenállást és BUZ-11-es MOSFET-et.

Ennyi. Nálam még a buz-11 és a 12V közé egy fordított állású védődióda is kellett, mert a modellvasút meglehetősen induktív terhelésnek számít.
(#) sikolymester válasza ThompsoN hozzászólására (») Jan 30, 2013 /
 
Megvalósítható. Nem is fizikáról kell beszélni, hanem programról. Azt megírod vagy basic ben vagy c ben. De mindenképpen képes erre a feladatra.
(#) csabeszq válasza zamatőr hozzászólására (») Jan 30, 2013 /
 
zamatőr, kipróbáltam a biztosíték kapcsolást breadboardon és ahogy sejtettem nem ment.

Teljesen pöccre ki volt hegyezve és ha a 2 tranzisztor, vagy a LED nyitófeszültségnél millivoltos eltérés van, akkor már nem megy.

A következőket csináltam. Amikor zárlat van, akkor a LED világít és vehetjük úgy, hogy 12V-1.7V a feszültség a LED katódján. A T1 tranzisztor emittere és bázisa között -560/1560*1.7V van, azaz 0,61V. Erre a feszültségre alapból a tranzisztornak zárnia kellett volna, de mondjuk 100 tranzisztorból 80 simán kinyit. Éppen ezért az 560 ohmos ellenállást 220 ohmra cseréltem, hogy segítsek a rövidzár tartásánál.

Természetesen ezzel már ment, csak bekapcsolásnál alapból a rendszer rövidzárral indult, mert a feszültség emelkedésénél T2 előbb nyitott, mint T1 tranzisztor.

A visszacsatoló ágban lévő dióda elé bekötöttem egy 4.7V-os Z diódát, hogy 5 V alatt eszébe se jusson bekapcsolni T2-nek. Ezzel már stabilan működött a rendszer.
(#) csabeszq válasza csabeszq hozzászólására (») Jan 30, 2013 /
 
Azért hozzátenném, hogy senkinek eszébe se jusson a piros led helyett mondjuk kéket használni, mert garantáltan nem fog menni a kapcsolás a hatalmas nyitófeszültség miatt.

(#) FMSound válasza TavIR-AVR hozzászólására (») Jan 30, 2013 /
 
Igen kvarc van meg a két kondi... Tudom hogy nem arra kell állítani, véletlenül történt. 4 másik avr-t sikeresen felprogramoztam, ez az után történt.... Kérdésem az volt "kedves" zombee hogy ettől tönkre mehetett-e.... de szokásodhoz híven nem a kérdésre válaszolsz!!
(#) csabeszq válasza csabeszq hozzászólására (») Jan 30, 2013 / 1
 
Újracsináltam a rövidzárvédelmet (csatolva). Ez már kék LED-del is működne, sőt az energia 5%-a nem a bipoláris tranzisztor bázisellenállásain fűtődik el, mivel P csatornás MOSFET-tel kapcsolok.

Kipróbáltam breadboardon, ment is királyul. Azért köszönöm a linket, mert a visszacsatoló rész kialakítása sokat segített.
(#) kiborg válasza FMSound hozzászólására (») Jan 31, 2013 /
 
Nem tisztem védeni senkit, (zombee-nek nincs is rá szüksége), de most nagyon is igaza van. Ha tudnád, hogy mit jelent az adott beállítás, akkor nem kérdeznéd meg, hogy ettől tönkremehet-e egy AVR. (Kb olyan, mintha azt kérdeznéd, hogy egy autó tönkremehet-e attól, hogy beraktad ötödikbe). Ez egy normál üzemmódja.
Ha van rajta kvarc akkor esetleg a kommunikációs frekvencia nem jó.
Egyébként én szinte minden AVR-emet ezen a beállításon használom és gond nélkül mennek.
Üdv Kiborg
(#) ThompsoN válasza sikolymester hozzászólására (») Jan 31, 2013 /
 
csabeszq: köszönöm a tippeket! Bár a potiból szerintem a Te megoldásod fokozatmentes, ami nekem ezúttal nem célszerű.

sikolymester: köszönöm Neked is. Fizikai megvalósítás alatt azt értettem, hogy a program mi alapján döntse el, hogy melyik fokozatot kell kimenetre küldenie. Erre van valami ötleted? Vagy egyszerűen csak a 6 ki és bementi lábból használjak 5-öt az egyes fokozatokhoz, mint bemenet, és a 6.-at kimenetként?
(#) tej válasza ThompsoN hozzászólására (») Jan 31, 2013 /
 
Elég egy AD bemenet is, ha ellenállásosztóval oldod meg.
(#) FMSound válasza kiborg hozzászólására (») Jan 31, 2013 /
 
Szerintem nem kéne védeni zoombit, mivel nem a kérdése válaszol általában...
Viszont a te hasonlatodnál maradva, én úgy gondoltam, hogy pl egy trabantot megkerget az ember végsebességen kb 110km/h, és úgy megy vele tartósabban érheti károsodás....
Az avr-m is érte valami az biztos, device és singulár bytokat nem sikerül kiolvasni belőle, illetve a fuseknél hiányzik egy pipa ( a többi esetben volt)... a spien- mellöl.
Köszi
A hozzászólás módosítva: Jan 31, 2013
(#) csabeszq válasza ThompsoN hozzászólására (») Jan 31, 2013 /
 
ThompsoN: igyekeztem hardver szinten minimálisra egyszerűsíteni a dolgot.

Vásárolhatsz egyébként fokozatkapcsolót is, de akkor ATmega48 a legegyszerűbb választás (550 Ft).

Bővebben: Itt

Van 12 fokozat a kapcsolón, az ATmega48-nak 23 IO portja van, szóval jobb, mint az ATtiny13.

De a fokozatkapcsolót szoftverből is emulálhatod.
A hozzászólás módosítva: Jan 31, 2013
(#) csabeszq válasza FMSound hozzászólására (») Jan 31, 2013 /
 
Minden megtörténhet, de az esetek 99%-ában egy AVR azért válik használhatatlanná, mert a fuse biteket rosszul állítod be.

Minthogy a fuse biteket piszkáltad is mielőtt elszállt, 99.99%, hogy azért nem megy, mert rosszul állítottad őket be.

Ez a videó megadja a választ a kérdésedre:
Bővebben: ATmega8 túlpörgetés 51 MHz-re

Elég nehéz agyonvágni egy AVR-t. Rövidzárral nem is tudod, mert a kimenetek nem fognak 40mA-nél többet leadni. Túlfeszültséggel, negatív feszültséggel sem mindig vághatod agyon, mert pl. ha +30 V-ot kapcsolsz egy lábra, 5kohm-os ellenállással, attól sem megy tönkre.
(#) csj hozzászólása Jan 31, 2013 /
 
Sziasztok
Lehet hogy már volt róla szó, de 500 oldalt nem tudok végigolvasni.. a problémám:
Van egy Conradban vásárolt Franzis-féle pici Attiny13 programozóm. (nekem kellett összeforrasztanom) A számítógépemen nincs soros, párhuzamos port, így Sweex USB-soros átalakítón csatlakozom.
A programozóhoz van egy program, LPMicro. Egy napon az adatátvitelre Oké helyett azt írta ki, hogy Hiba, és azóta mindig így van. banghead:
Utánaolvastam, van aki a forrasztást okolja.
Másik javaslat volt az LPMicroISP használata. Ez "fapados", lassabb, le kell venni a teszt-áramkört, de működik. Utána látom hogy műküdik az áramkör, ha visszakötöm. Csakhogy amikor a "kész" kontrollert önállóan használnám az áramkörrel, akkor teljesen össze-vissza villog.
Egy ötletet olvastam, hogy a PB2-t össze kell kötni a gnd-vel - de programozáskor, vagy használakor?? Egyik sem jött be.
Mi lehet az oka hogy egyszer csak nem működött? Ki tud valamilyen megoldást?
A Canda nem jó ötlet, mert mint írtam, nincs sorosom-párhuzamosom.
Köszönöm előre is
(#) csj válasza csj hozzászólására (») Jan 31, 2013 /
 
ui:
Próbáltam egy olyan számítógéppel is, aminek van soros portja, így nem kellett az USB átalakító. Azon is hibát jelzett az LPMicro.
(#) csabeszq válasza csj hozzászólására (») Jan 31, 2013 /
 
- tudsz esetleg új ATtiny13-at programozni?

Mert ha letiltottad a RESET lábát, átállítottad az órajelét,... (fuse bitek), akkor simán kipusztulhat az egész.

- van az áramkörödnek tápfeszültsége?

(rendszerint nem feladata az AVR programozóknak, hogy az AVR-nek tápfeszültsége legyen. A VCC a programozón input)
(#) ThompsoN válasza csabeszq hozzászólására (») Jan 31, 2013 /
 
Mindenképpen fokozatkapcsolóval szeretném megoldani, de 5-nél több fokozatra nincs szükségem.
A szoftveres emuláció mi alapján dönti le, hogy melyik fokozatot kell használnia?
(#) kiborg válasza FMSound hozzászólására (») Jan 31, 2013 /
 
Szia!
Na most egy trabantot kergetni 110km/h sebességgel nem éppen üzemszerű állapot. Nem arra van kitalálva. Szerintem. Ez kb olyan, mint meghajtani egy 16MHzs AVR-t 20-30MHz-el.
Viszont egy AVR-nél amit be lehet állítani, az arra a célra van kitalálva üzemszerűen,tartósan.
Ajánlom, hogy olvasd át az adatlap Sytem Clock and Clock Options részét és fény derül arra, hogy mit is jelent az a beállítás,amit beállítottál.
(#) csj válasza csabeszq hozzászólására (») Jan 31, 2013 /
 
Nem tudok róla, hogy valahogy letiltottam volna..
Kipróbáltam több ilyen kontrollert is, ugyanaz.
Az LPMicro programmal (már) nem tudok programozni.
A fapados változattal, az LPMicroISP-vel tudok programozni, (ilyenkor a Reset-et GND-vel összekötöm a programírási időre, vagyis a Reset láb nemigen lehet letiltva), de a kész kontroller nem megy önállóan (van áram, villogtatja a ledeket, de nem úgy ahogy kell). Lehet hogy ez az LPMicroISP-vel mindigis így volt, előtte nem használtam, amíg az LPMicro jó volt.
Szeintem mindenütt van tápfeszültség, ha jól értettem a kérdésed.
Igen, órajel probléma lehet, a kontroller túl lassú lett az LPMicro-hoz, de az LPMicroISP elég lassú hozzá...
(#) aticska válasza csj hozzászólására (») Jan 31, 2013 / 1
 
Esetleg a watchdogot nem kapcsoltad be véletlenül?
(#) csabeszq válasza ThompsoN hozzászólására (») Jan 31, 2013 /
 
Arra gondoltam, hogy az ADC bemenete a 0-3FF tartományban van.

Ezt felosztod 6 részre és ez alapján döntesz. Lehetőleg hagyj semleges részeket is.
Az ADC képes arra, hogy elkezdjen 74-75 között iterálni és ha történetesen ott van az általad kiválasztott határ, akkor a kimenet is 20% és 40% között kezd el iterálni.

Szóval:
0-39 első fokozat,
40-59 ha előtte első/második fokozatban voltunk, akkor ott is maradunk, ha máshol, akkor 40-49 első 50-59 második
60-99 második fokozat

Szóval: a 0x3FF skálát hat részre egyenletesen felosztod és kijelölsz semleges területeket. A biztosabb működés végett az ADC-t átlagolhatod is, mondjuk 16 mintavétel átlagát veszed.

A lényeg: a fokozatokat szoftverből csinálod meg. Természetesen egy 6-os fokozatkapcsolóval lehet, hogy egyszerűbb.
(#) ThompsoN válasza csabeszq hozzászólására (») Jan 31, 2013 /
 
Azt hiszem ez egy magamfajta teljesen zöldfülűnek egyszerre túl sok lenne. De köszi a tippet.
Fokozatkapcsolóval hogyan lenne legcélszerűbb megoldani?
(#) csabeszq válasza csj hozzászólására (») Jan 31, 2013 /
 
(#) csabeszq válasza ThompsoN hozzászólására (») Jan 31, 2013 /
 
Van egy 2x6-os fokozatkapcsoló. Az egyik 6-ost bekötöd egy ATmega48 6 lábára.
- az AVR-ben a lábakat inputra állítod
- bekapcsolod a felhúzó ellenállásokat hozzá
- a fokozatkapcsoló másik oldalát meg a földre kötöd.

Attól függően, hogy a hat láb körül melyik alacsony, állítod a PWM kitöltési tényezőjét.
(#) ThompsoN válasza csabeszq hozzászólására (») Jan 31, 2013 /
 
Köszönöm a segítséget! Még annyi kérdésem lenne, hogy ez ATTINY13-al is megoldható? Leírás alapján annak 6 ki/bemeneti lába van, ami nekem pont elég lenne, már ha működne.
(#) csabeszq válasza ThompsoN hozzászólására (») Jan 31, 2013 /
 
És a PWM kimenet? Legalább 7 kellene hozzá, a RESET kikapcsolása meg nem kifejezetten kezdőknek való.

Ha 2 fokozatot összekötsz, úgy oké, de a RESET rész az elég necces. Ha egyszer letiltod, akkor utána már csak HVSP-s programozóval bütykölheted.

Csak akkor tiltsd a RESET-et, ha az 5 fokozatból 4 helyesen megy.
A hozzászólás módosítva: Jan 31, 2013
(#) csj válasza aticska hozzászólására (») Jan 31, 2013 /
 
Data-t programoztam be, azt olvastam ki, szerintem a watchdogot véletlenül sem érintettem.
(#) csj válasza csabeszq hozzászólására (») Jan 31, 2013 /
 
Igen, ez az ami hibát ír ki a betöltéskor
(#) ThompsoN válasza csabeszq hozzászólására (») Jan 31, 2013 /
 
5 fokozat van, és 1 kimenet, tehát csak 6 láb a lényeges. Viszont ha azt mondod, hogy a RESET letiltása kezdőknek nem ajánlott, akkor az ATTINY24 jó lenne? Ennek már 12 lába használható, plusz a két áramellátásért felelős. Azért szeretnék minél kisebbet használni, mert nincs sok helyem. (SMD-t egyelőre hanyagolnám.)
A hozzászólás módosítva: Jan 31, 2013
(#) kiborg válasza ThompsoN hozzászólására (») Jan 31, 2013 /
 
A RESET-et szerintem se tiltsd le, mert utána nem tudod programozni EGYSZERŰ programozóval a chipet. És valljuk be őszintén ritkán van olyan, hogy egy program elsőre azt csinálja, amit a programozó akar.
Kiborg

ui: Tiny24 elég.
A hozzászólás módosítva: Jan 31, 2013
Következő: »»   513 / 839
Bejelentkezés

Belépés

Hirdetés
XDT.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