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
Nem szoftverhibáról beszélünk, az IC el sem indul. Lehet, hogy ez lesz a szerencséd az AREF-es félrekötéssel kapcsolatban.
Vagy táp, vagy kvarc, vagy RESET, vagy az SPI vonalak félre vannak kötve. Ha van egy gyári 28-as lábkiosztású IC-d, ahol a fuse bitek még nincsenek külső 16MHz-s órajelre átállítva, akkor azzal ki lehetne próbálni. Ha azt látja, akkor kvarc hiba.
Beletettem egy szűz bootloader nélküli IC -t azzal se villan be a 13 kimeneten lévő LED. Akkor most kicserélem a kvarcot. A kvarcnak mindegy, hogy milyen írányba teszem be?
A hozzászólás módosítva: Jan 13, 2014
Kvarc kicserélve egy új 16MHz re, és semmi. Reset bomb nem zárlatos nyít zár ellenőriztem.
A hozzászólás módosítva: Jan 13, 2014
Egy ilyen IC-nek mennie kell.
Breadboardba már beraktam vagy 100 ilyet, a két GND-t összekötni, VCC-AVCC tápfeszre, RESET + MISO + MOSI + SCK a programozóra. Ha nincs 16MHz-s kristály a fuse bitek között definiálva, akkor kizárólag vezeték kötögetéssel tudod programozni ellenállás/kapacitás nélkül is. Semmi nem kell hozzá és programozhatod. Fogd meg a multimétert és mérjél. Sokat szívtam már a látszólag jó forrasztásokkal. Ránézel, szép és tiszta, de amikor ellenőrzöd, hogy érintkezik-e, akkor természetesen nem. Máig nem tudom, hogy hogyan lehet, hogy van rajta egy nagy bumszli ón, de mégsem érintkezik. Lehet vele szívni napokat.
Végigmértem keresztül kasul, nincs rajta hideg forrasz sehol. kivettem a 2N5551 tranyót is , a felette lévő diódát is , még mindíg semmi. Új a kvarc. Tegnap valaki ajánlotta, hogy a GND és a A0 kimenetre is tegyek egy 100nF kondit, az még ott van.
Arduinóban feltöltöttem a blinket a 13 kimeneten villognia kéne. Áttettem és így se semmi.
Ha kiveszed az IC-t és 5V-ot raksz az IC 13-as LED lábára akkor világít?
Ez azért érdekes, mert az IC uA-t eszik, nem kell neki semmi. De ha a LED-et bekapcsolod és a tápfesz ramaty, akkor mindenestül összeomolhat. Meg azért is érdekes, hogy nem kötötted-e fordítva a LED-et. A hozzászólás módosítva: Jan 13, 2014
IC ki, az 5v a 13 kimenet összekötve, a LED világít. Meg amikor a ICSP csatin keresztül programot akartam feltölteni amire úgye hibát ír akkor is gyengébben de sűrün villog mint az arduinoban a az RX , TX
Ezt a szívást, nem hiszem el. 12V os aksiról kötöttem be , hogy ne legyen benne semmi zavar. Most meg már teli dobáljuk szerencsét lent 100nF hidegítéssel. A hozzászólás módosítva: Jan 13, 2014
Multkor én is összefutottam egy marék Mega644-el, ami breadboardon csak akkor indult el, ha az szkoppal megérintettem az egyik lábat (igaz, hogy az én most JTAG-t használtam).
Ugyanaz az IC egy profi fejlesztö boardon minden szo nélkül elindult, a célra maratott nyákon meg sehogyan. Szenvedtem vele vagy 5 napot, de nem sikerült kideriteni miért nem ismeri fel az AVR Studio. Igy nem maradt más hátra mint a fejlesztöboardon felprogramozni majd bedugni a végleges NYÀKba. A NYÀKon levö JTAG portban nem ismeri fel a Dragon az IC-t.
De itt fel van programozva és még sem csinál semmit. A Nyákon lévő 100nF kondit azt átjavitottam a 47µF mellett, az csak a rajzon van elrontva.
A hozzászólás módosítva: Jan 13, 2014
Ennek az IC nek még hiányzik valami, de nem tudom, hogy mi.
![]()
A kvarc kapacitásainak 22pF-nek kell lenniük. Mindkettőnek. A specifikáció elég szűk intervallumot határoz erre meg. Magyarul ha 100pF-et beraksz, az már nem jó (piko).
A hozzászólás módosítva: Jan 13, 2014
Ennél többet nem tehetek, szerintem ez 22pF os. Amit Robi mondott az AREF bekapcsolásáról, azt nem kéne megcsinálni?
A hozzászólás módosítva: Jan 13, 2014
a 220 az 22pF-et jelent.
Hát, kifulladtam, nincs több javaslatom. ![]()
A google képekhez is beírtam, hogy 22pF és voltolyan ahol 220 aláhúzva de ott volt.
Csabesz köszönöm a kitartásod, betettem 2 db 47pF és láss csodát működik.
![]() ![]()
A segédprogramokhoz beírtam, hogy 220 és kidobta, hogy 22pF. Ez megtévesztett. Persze az aláhúzott vonal, lehet hogy jelentett még valamit. A relé is szépen behúz. Köszi mégegyszer.
A hozzászólás módosítva: Jan 13, 2014
Üdv!
Az AVR ADC-jéről szeretném megkérdezni, hogy hogyan is számolja ki az ADC Result Registers (ADCL, ADCH)-be kapott értéket? Pontosabban ismerem a képletet: ADC = Vin*1024/Vref (10bit esetében), de konkrétan arra vagyok kíváncsi, hogy a tizedesekkel mit csinál? Matematikailag kerekíti, azaz 0,5-enként vagy másképpen? pl.: Vref 5V, 10bit (1024) Vin1 = 3,02 ADC = 618,496 kerekítve: 618 Vin2 = 3,025 ADC = 619,52 kerekítve: 620 SB
Nem számolja, nem kerekít.
Itt egy jó kis videó a működéséről: Bővebben: Link
Üdv!
Köszönöm a választ. Akkor az ADCben található áramkörnek van egy threshold feszültsége, amit a Vref és a felbontás ad meg valahogy így: Vref/felbontás -> 5/1024 = 0,00488V ~5mV Tehát ha 5mV-ot emelkedik, vagy csökken a Vin, akkor +/-1-el változik az ADC regiszter értéke, stimmt? SB
A kvarchoz tetted őket? Elég furcsán hangzik, de ha megy ne bolygasd.
Végülis jól jártál, mert az AREF +5V-on bajt is okozhatott volna.
Egy gyors kérdés. Az, hogy a 16MHz kvarc mőgé 2 db 22pF helyett 47pF került ez miben fog jelentkezni. Esetleg nem pontosan mér? Köszi.
10 bites, a maradék zaj.
Néhány ráérő pákás azzal szórakozik, hogy túlmintavételezi, és 10.000 minta esetén már 1-2 bittel többet is elérhetsz, mint 10. Szerintem 10 bit pontosságig eljutni is művészet. Eléggé meg kell szűrni a tápot hozzá, hogy a jelet mérd, ne a zajt. A hozzászólás módosítva: Jan 13, 2014
Üdv mindenkinek!
Egy kis segítségre szorulnék. Gondom támadt a AVR Studio 4-el. Újra kellett telepítenem a gépemet. Minden látszólag jól működik, a programozót is látja a program, de a fordításnál hibaüzenetet dob olyan programokra, amit eddig hiba nélkül fordított. Nagy nehezen rájöttem, hogy az include-k nem kerülnek be az External dependencies könyvtárba. Ezeket hiányolja fordító. A Win AVR fent van. Milyen beállítást hiányolhat még? Segítsetek! Miso
Talán avrstudio 4.19?!
Ott minden egyes projektnél be kell állítani a toolchain-t winavr-re. Ha ez a helyzet, javaslom a 4.18-as verziót SP3-al.
Igen 220 felíratos 2 db kondit a kvarc és a GNd között 47pF cseréltem, mert nem találtam mást. Mindegyik nagyobb lett volna.
Sziasztok!
Hát most engem meg lehet kövezni a kérdésemért. Igazából csak alkalmazom néha az AVR-eket, programokat nem írok (azt hiszem, már sose fogom megtanulni ezek írását). Veszek kész programot (netről általában), és beégetem, az adott AVR-be, STK-500-zal. Amit kérdezni szeretnék: hogyan lehet behívni WinAVR-be (AVRStudio-ról már nem is beszélek!) (megnyitni vele) egy kész, de nem nem vele írt .HEX kiterjesztésű programot? Sehogy se tudok rájönni, így azokat a kapcsolásokat, amelyekhez csak a kész HEX file-t adták meg, a forráskódot pedig nem, nem tudom használni. Ha nem túl lealacsonyító a kérdés, segítene valaki? Azt már végképp nem merem kérni, hogy ne akadémikusi szinten kapjak választ, hanem csak úgy, egy egyszerű földi halandó köznyelvén, szakzsargontól nem túlságosan fulladozó módon? Előre is nagy köszönet annak, aki lealacsonyodik válaszával a szintemre.
Szia! Lehet, hogy egy Hex editorral. Nem tudom, csak egy ötlet. Mint ha itt sem lennék. Ez jutott hírtelen eszembe.
Sziasztok!
A szituáció a következő: két Atmega 8 as között létesítettem SPI kapcsolatot. A slave szerepe 18db szervó vezérlése a master kérésére. A masternek először elkell küldenie a szervó számát (0-17 ig) utánna azt, hogy hány fokot forduljon. A két információt a slave úgy külömbözteti meg,hogy ha a master a szervó számát küldi (ami 0-17 tehát 5 biten elfér) akkor a master előbb "vagy"-olja 11100000-el. Az azt jelenti ,hogy mindenképp nagyobb lesz 223-nál? Ha viszont a fokot küldi akkor nem lesz nagyobb 180 nál. A slave ez alapján dönti el,hogy melyik szervót ,hogy mozgassa.A tömbbe írás csak akkor történik meg ha mindkét információ rendelkezésünkre áll.Ehez egy readyFlag-ot vezettem be aminek 3 nak kell lennie. Az SPI kapcsolat és a szervó vezérlés külön külön tökéletes ,de egybe sehogy nemakar összejönni. A master egyetlen lényeges része a küldés,ami tesztelve volt és teljesen jó,itt csak a küldött adat a lényeg (elsőnek 1 es szervó(000000001 || 11100000 = 225),90fok utánna 1es szervó 180 fok) SPI2(225); _delay_ms(10); SPI2(90); _delay_ms(500); SPI2(225); _delay_ms(10); SPI2(180); _delay_ms(500); ezt küldi a master. Ha sikerül kijavítani a hibát akkor hasznos lehet másoknak is ![]() Eddig csak proteusba próbáltam,nemvolt jó meg aztis írta ,hogy az első 2 spi byte ot eldobja lehet ,hogy banánhéjon csúszok el,ezért csatolom az összes lényeges filet. Aki szán rá időt belenézni annak előre is nagyon köszönöm ![]()
Üdv!
Még SPI Slave-el nem foglalkoztam, de nem lehet, hogy az a gond, hogy amint belép a program a ISR (SPI_STC_vect) interruptba, egyből kiolvasod az SPI adatregisztert? szerintem ez hiányzik az elejéről:
Eddig nálad:
Módosítva:
Mellékeltem a módosított maint is. A hozzászólás módosítva: Jan 14, 2014
|
Bejelentkezés
Hirdetés |