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
Ott a sorosport.
Azon keresztül felhasználói debugm, illetve működés során az adatokat lökheti kifele. Max a panelről a 9-as lábon kihozod az 5V-t (POE alapján POS (PoweOverSerial) És a soros DSUBházban egy memória+egy AVR És kész a LOGolás... Ill sorosport: bootloadert a chipnek, így a frissítés is könnyen megoldható. nem kell a programozócsatlakozó miatt lebontani az áramkört... Nálam ezek a nyákok már erősen SMDben készülnek... És ha nagyon kell, 2 réteg egymás felett....
Ami azt illeti nálam is szinte minden SMD. Ellenállások, tranyók, 7805 stab. IC, 74595, MAX232, ATMEGA32. És két oldalon mert egyre nem férek el. Bár lehet csak én nem tudok nyákot tervezni.
Ez a bootloader téma viszont érdekel. Eddig csak hallottam róla. Mi ez pontosan? Mennyire körülményes megoldani?
Sziasztok!
Véleményeznétek, hogy most milyen. VCC, Reset, Poti, Opto rész, MAX232 javításokat végeztem. 3db szabad lábam maradt az AVR-n. Viszont talán 2x2cm hely a nyákon.
A bootloader egy olyan kis szoftver, ami a mikrokontroller külön dedikált programmemóriájában helyezkedik el (ún. BootBlock-ban). Gyakorlatilag a program flash memória egy része. A kommunikáció a kontroller perifériáin keresztül valósul meg, így lehet például RS-232, SPI-busz, I2C-busz is a bootloader külvilági kapcsolata. Feladata pedig a programmemória egyéb területén lévő tartalom megváltoztatása a külső tartalomnak megfelelően.
Bootloader Bascomból
Sziasztok!
Most végül is a bemenetekre kell földrehúzó ellenállás ATMEGA32 esetén vagy nem? Mindenhol mást látok, hallok.
Nem tartom tul jo ötletnek az olyan kapcsolást, ahol az aktiv állapotot a magas szint jelenti (mert csak ebben az esetben kell a bementeket alapban a földre huzni).
Ok jogos. Rosszul kérdeztem.
Sok helyen olvastam, hogy jobb ha külső felhúzó ellenállást használok mert pár AVR esetén a belső felhúzó akár 100k is lehet. Most akkor mi az igazság? Kerestem az adatlapon, hogy írja-e, de nem találtam.Bővebben: Link Illetve mi a helyzet egy kapcsoló esetén? Ott az is lehet,hogy L szinten van.
Ez sajnos AVR Studio bug. Ha "csak" figyelmeztetést ad és változtatás nélkül újrafordítod akkor eltűnnek
a figyelmeztetések. De próbáld csak meg, üss a kódba egy szóközt és fordíts, mindjárt előkerül mind a három... Tipp: a figyelmeztetéseket is el kell tüntetni, néhol éppen ez okozhat problémát. Pl. ha a delay.h-t használod és nem állítod be hogy pl. 8 MHz az AVR órajele akkor az 1 MHz-nek veszi(+figyelmeztetést ad) és hibázni fog!
Valahol azt irták, hogy vannak nagyon low power verziok amiket talán A betüvel jeleznek, ahol az ellenállások 100kOhmosak, általában azonban 20kOhmosak.
A te dokumentáciod 287. oldalán a pull up ellenállók értéke min 20, max 50 kOhm. A reset lábon 30 ill 60 kOhm. Ezt aránylag könnyü kimérni. A kapcsolók mindig a L szintet kapcsolják, csak egyes tervezök általam ismeretlen gyogyszer hatására forditják meg öket (Pollin AVR Board), és teszik eléggé alkalmatlanná bármilyen komolyabb feladatra. A kapcsolok amennyiben H szintet kapcsolnak, eléggé kényesek úgy a zavarokra, mint a huzalozásra is.
A kapcsoló témát picit feszegetve:
Van nekep pár jumer és DIP kapcsoló. Ugye az egyik lehetőség a H a másik az L szint. Akkor ami a legvalószínűbb állás az legyen a H az AVR belső ellenállásával felhúzva és, ha L szint kell akkor az meg a juper ill. DIP kapcsolóval mezeien csak földhöz vágom az adott bemenetet?
A jumer, vagy juper talán jumpert jelent.
Igen a kapcsolo aktiv állapotában a bemenetet a földre kapcsolja. Ha nyitva van, akkor vagy a belsö, vagy külsö, vagy ami még biztosabb, mind a kettö a H szintre huzza. Ez elektromos szempontból a legbiztosabb és legjobb megoldás. Pl. ha zajos a környezet a nyitott bementen (H szint) nem zevarhat, hiszen a zaj csak hozzáadodhat a H szinthez. Ha L szinten van a bemenet (kapcsolo be) akkor meg "kemény" föld (test) van a bemeneten, ahol nem jelenhetnek meg a zajok. Idézet: „A jumer, vagy juper talán jumpert jelent.” Na erre is csak én vagyok képes. Egy szó amit egymás után kétszer sem bírok leírni jól. Minden világos, de ahogy írtad, ha biztosra akarok menni akkor tápra húzom a bemenetet ellenállással vagyis alkatrészt nem spóroltam csak "innen oda" kötöttem.
Az sokban attól függ mi a feladat.
Ha érzékeny a dolog, zavaros a környezet, nem számit az extra áramigény, akkor egy külsö 10 kOhm segithet, de vigyázz mert az AVR lábai ki- és bemenetek is lehetnek, és a belsö ellenállások kapcsolhatók, mig a külsök nem, ami egyébb galibát okozhat. Szoval mérlegeld, hogy mi történik, ha lábat külsö ellenállással felhuzod - ott mindig H szint lesz.
Egyébként onnan jött a gondolat, hogy CMOS IC esetén a bemenetet fix logikai szintre kell húzni. Többségében GND mert lebegni nem szeret.
Ezek szerint, ha az AVR adott lábát bemenetként definiálom ott ez nem áll fenn, hogy lebeg.
Lebeghet, mert a belsö ellenállások kapcsolhatók! (Ugy FET aktiválja öket - lásd a dokumentációt).
Vigyázni kell az átmeneti állapotokkal, illetve ha programozható az áramkörben az AVR (SPI stb.)
Köszönöm!
Most már működik a rendszer, a Vcc-t és a GND-t is a programozóból szedem le, majd a programozás után lekötöm a programozó vezetékeket és egy PC tápból üzemel tovább. Már egy ideje dolgozunk a 7-es verzión a fiúkkal az Atmelnél.
Nos így kora reggel tiszába teszem magam Tehát akkor két lehetőségem is van.
Első: Az adott bemeneten inicializálás során belkapcsolom a felhúzó ellenállást. Pl.: PORTA |= _BV(PA0); Majd, ha itt L szintet szeretnék akkor egyszerűen csak a földre kapcsolom a DIP kapcsoló segítségével. Második: Mivel alapból az AVR I/O portjai bemenetek és L szinten vannak (ugye jó tudom?) init. során békénhagyom őket. Viszont ellenállás (pl.10k) segítségével felhúzom őket H szintre. Ez lesz az alapérték. (Persze ekkor szoftveresen nem kapcsolgatom a bemenetet) Majd, ha itt mégis L szint kell akkor a DIP kapcsolóval tisztán főldrehúzom. Ez az egész akkor jó, ha adott bemeneten külső eszközzel akarok közölni valamit az AVR-el és nem a szoftver kezeli. Jó a gondolatmenet? Ha igen akkor a második megoldás szimpatikusabb. 10k mégis csak "szebb" mint 20-50k. Kisebb kód, több hardver, de biztosabb megoldás. Szerintem...
Nem:
Bekapcsoláskor az AVR lábai bemenetek. És potenciálon nincsenek : lebegnek -> zavarérzékenyek. Ha akarod a belső felhúzót bekapcsolod (~100 kohm), és így legalább potenciálon vannak (de zavarérzkeny még). De külső ellenállás javasolt (4k7..10k), ill a GND fele a kapcsoló.
Én is azt írtam, hogy bemenetek az I/O lábak.
Nem értlek: Akkor kapcsoljam be a felhúzó ellenállásokat és még 10k-val is húzzam fel?
Akkor megcsinálhatnátok olyanra hogy egy kis sz*r LED-villogtató 6 sornyi kódjának betöltéséhez/fordításához ne kelljen fél órányi dara meg az összes 3D effekt betöltése+varázslók tömege, és támogassa az ÖSSZES programozót ami képes AVR-el kommunikálni!
Csak akkor kell külső felhúzó ha a hordozó panelt is elhagyja a vezeték amit az AVR-ből kihúzol,
vagy az érzékelőnek nagyobb áram kell, terheli a bemenetet, stb. Én egy "Csapj a falra!" játékot építettem AVR-el(Csodák Plázája vándorkiállítás), azon például nem volt elég a belső felhúzó ellenállás a 3-4 méteres vezetékek miatt. A bemenetek 220 Ohm-os felhúzót kaptak! Ha nem lennének felhúzók, akkor a LED-ek felvillantása elegendő feszültségimpulzust gerjeszt egy-egy gombnyomás érzékeléséhez, ami a játék hibás működéséhez vezet. Nem beszélve a mobilokról!
Itt nem vezetékezek. A panelen van minden a DIP kapcsolók is. Egymástól kb.2cm-re.
De gondolom az semmiképpen sem jó, hogy bekapcsolom a felhúzót és még +egy ellenállás? [off]Érdekes, hogy ilyen "triviális" dologban is mennyire eltérnek a vélemények.
IS-IS! Ha nem sajnálod az ellenállásokat akkor tehetsz oda bátran, de az se baj ha mindkettőt használod!
Mind a kettő ugyanarra húz, mi lehet ebből a probléma? 2cm-en max. egy működő mikrosütő belsejében fog akkora impulzus keletkezni hogy megzavarja, de lehet hogy az AVR előbb ég le. Azaz mindenki jót mond!
Nem térnek el egyáltalán a vélemények, csak ez egy feladat amit NEKED kell megoldani (illetve mindenkinek aki ilyen áramkört tervez).
Minden megoldásnak van pro és kontra érve, amit a másik gyakran nem tud. Itt elviekben elmondtuk, hogy mit és miért kell tenni, anélkül, hogy tudnánk mit is épitesz, mi is a TE feladatod. Ha csak egy pici NYÁKot épitesz egy AVR-rel meg néhány LED-del és kapcsoloval, teljesen felesleges minden extra külsö ellenállás, mert az mind benne van magában a chipben, csak meg kell tanulni használni. Ehhez még el kell fogadni néhány itt is emlitett tervezési alapelvet, pl. hogy a kapcsolok aktiv állása a GND kapcsolása legyen (L) a bementre. Minden más most csak szocséplés.
Oké. Felfogtam és megértettem mindent. Amúgy ott a korábbi HSZ amivel kapcsolatban kérdeztem igaz erre nem hívtam fel a figyelmet.
Bővebben: Link Akkor kipucolom belőle az ellenállásokat és átkötöm úgy, hogy GND-t kapcsoljak.
Sziasztok!
Mit csinálok rosszul, ha AVR Doper-hez ATMEGA328P-t csatlakoztatok és az alábbi hibaüzenetet küldi (tudom, ez azt jelenti, hogy a programozót látja a program, csak a programozandó mikrokontrollert nem). Mi lehet rosszul beállítva, elállítva, ha feltételezzük, hogy hardveresen minden megfelelő. Üdv: E.
Sziasztok!
Régebben foglalkoztam a C-64-en a Basic-el, késöbb a TurboPascal-al. Most kezdek foglalkozni az AVR-el, de a C-ben nem vagyok járatos. Szeretnék egy dallamcsengőt összehozni. Elsőnek a Topi félére gondoltam, ha ez összejönne, akkor úgy szeretném megoldani, hogy egy AVR-ben egy dallam szóljon. Már 2009 óta kértem segítséget többször is, de eddig nem kaptam. Már régóta próbálkozok a Topi féle csengő programozásával, de nem megy. Letölötöttem a firmware.zip-file-t, de hiába próbálom a WinAVR-be berakni a file-ket, mindig hibát ír ki, mindent beállítok úgy ahogy MaSTeRFoXX leírta, és mégsem megy. A Topi leírása itt van:Bővebben: Link A MaSTeRFoXX leírása meg itt található: Bővebben: Link Az lenne a kérdésem, hogy hogyan illesszem be a file-kat, hogy le tudjam forditani HEX-re? Minden segítséget köszönettel veszek!
Szia!
Saját hibáimból tanulva azt mondom, kösd be a 2. GND lábat is a 1. GND mellé és az AREF és AVCC-t pedig kösd Vcc-re. Ezt próbld meg, hátha összejön.
Szia!
Kipróbáltam, de sajnos nem segített...egyéb ötleted nincs? Arra gondolok, hogy valami az AVR stúdióban lehet elállítva, de mi?
Először állítsd be a mikrovezérlőt, utána olvasd ki a signature-t. Ezek után jöhet a többi.
|
Bejelentkezés
Hirdetés |