Fórum témák
» Több friss téma |
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
É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.
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.
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.
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.
![]()
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!!
Ú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.
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
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?
Elég egy AD bemenet is, ha ellenállásosztóval oldod meg.
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
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
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.
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
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.
- 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)
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?
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.
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á...
Esetleg a watchdogot nem kapcsoltad be véletlenül?
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.
Azt hiszem ez egy magamfajta teljesen zöldfülűnek egyszerre túl sok lenne.
![]() Fokozatkapcsolóval hogyan lenne legcélszerűbb megoldani?
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.
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.
É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
Data-t programoztam be, azt olvastam ki, szerintem a watchdogot véletlenül sem érintettem.
Igen, ez az ami hibát ír ki a betöltéskor
![]()
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
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
|
Bejelentkezés
Hirdetés |