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
Így hirtelen arra tudok gondolni, hogy a használt pinek nincsenek kimenetre konfigurálva, ezért csak kis áramot tudna leadni, ami nem hajtja ki a ULN2803A lábait rendesen.
De második olvasásra látom, hogy más hibák is vannak, illetve lehet, hogy félre is értettem. Szóval így nehéz mit mondani. Egy kapcsolási rajz, ami alapján a nyák készítve lett, illetve a forráskód segítene tisztán látni.
Ha be van konfigolva minden, akkor elindítod a konverziót, miszerint az adcstart bitet egyre írod (adatlapban ott van, hogy mi a pontos neve). Miután kész az adc művelet (ezt onnan látod, hogy 1re állít egy flaget, amivel jelzi hogy kész), akkor az ADCH és ADCL regiszterekben ott van az érték amit az ADC -re hivatkozva kiolvas neked 16 biten.
Röviden ennyi. Túrd át az adatlap ADC részét, illetve keress ADC AVR tutorialokat, hogyha semmi nem megy.
Sziasztok.
Sikerült kiviteleznem az ADC-t, már csak annyi kérdésem lenne, hogy ezt hogyan tudnám lerövidíteni, mert 10K méretű lett a hex fájl:
A program lényege, hogy ha a PORTA|=0x80, akkor a PORTB-re ezt a számot irja ki, ha a PORTA|=0x40, akkor A PORTB-n az I2 szám jelenik meg.
Szervusz!
Muszáj neked lebegőpontos számokkal dolgozni, mikor 16 bites értékeit vannak?
Nem nem, sikerült kijavítanom.
Üdv, yoman
Kösz!
Közben már rájöttem, valoban a DDR parancsok voltak rosszak. Már minden megy.
Rájöttem a hibára. Nem a Linker-hez adtam hozzá!
Elnézést! Nagyon dolgozom ezen a matek részen. Sikolymester köszi a választ! Átírom csak írásra, ha már csak írni szeretnék. Legyen precíz.
Sziasztok
Kérdésem a következő lenne. Macintosh-ra fel lehet telepíteni a avr studiot és a Topi féle programozót? Valakinek ebben esetleg van tapasztalata?
En VirtualBox-ra felinstallaltam Windows-t es minden onnan megy. Elmeletileg Mono kornyezettel lehetne .NET programokat futtatni, de ugy meg nem probaltam.
Ha az AVR SPI-jén van valami, és programozni kéne az AVR-t, akkor hogy lehet megoldani, hogy a rajta lévő eszköz ne kavarjon be programozásnál? Esetleg egy felhúzóellenállás az eszköz CS lábára, működne? (Így reményeim szerint nem lenne gond ha az AVR GND-t kapcsol rá, csak akkor elég nagy ellenállás kéne(100k jó lenne?).)
Szintillesztés nélküli SPI kapcsolatról nem tudok nyilatkozni, mert olyannal nem volt még dolgom. De AVR- microSD kártya páros, vagy SPI felületű LCD esetén semmi gond nem volt, ami az AVR felprogramozását jelenti...
Köszönöm, hát én egyenlőre csak az SPI-s cikkben lévő 74HC595-öt fogom használni, és azért kérdezem, mert nem biztos hogy jó lenne ha programozás közben összevissza kapcsolgatná a kimeneteit. Mondjuk nem tudom, hogy ez bekövetkezhet-e, még nincs tapasztalatom SPI-vel, csak készülök, mert nemsokára használni fogom.
Értelek most már... Én úgy értettem, hogy az SPI buszra csatlakoztatott eszköz bekavar-e a programozásban.
Amennyiben fontos, hogy az SPI eszköz ne rakoncátlankodjon, amíg felprogramozod az AVR-t, akkor ahogyan Te is mondtad, az eszköz /CS lábát egy ellenálláson keresztül tápra kötöd. Pl 10k, nem kellenek 100k nagyságrendű ellenállások. Továbbá egy másik észrevétel, de nem tudom 100%-ra garantálni, hogy ez okozza, mérni nem mértem. Az SD kártya az AVR /SS lábán volt, míg az LCD /CS lába egy másik pinen. Az SD kártya rendszeresen megkukult programozás alatt, az LCD nem. Szóval előfordulhat, hogy az /SS láb alacsonyra vált programozáskor, de ezt nem tudom biztosra mondani.
Értem, és köszönöm a választ, akkor ellenállással csinálom. Köszönöm szépen!
Az is egy megoldas lehet ha a Slave SPI eszkoz CS labat nem az AVR SS pin-jere kotod, hanem egy masik pinre, amit nem zavar a programozas, es azt huzod fel tapra.
De programozás alatt az AVR lábai nem GND-n vannak? Mert akkor mindegy hova kötöm, mert be fog kapcsolódni, nem? Vagy ez így nem jó?
Az régen rossz lenne, ha GND-re kerülnének a lábak programozáskor. Ha egy bemenetet letesz GND-re, amin éppen 5V van, akkor ott lesz egy szép rövidzár. Ha pedig így lenne, akkor nem valósulhatna meg az áramkörben való programozás lehetősége. Így nagy eséllyel mondható, hogy programozáskor a lábak nagyimpedanciás állapotba kerülnek. De ez biztosan az adatlapban is benne van valahol...
szerk.: Vagy bemenetnek konfigurálódnak...
Eszerint ezt rosszul gondoltam, köszönöm a helyesbítést. Akkor azt hiszem, hogy majd ha meglesz minden a kipróbáláshoz, akkor majd kiderítem, hogy mikor mi van programozáskor.
Sziasztok!
Még 1 hónapja volt, hogy valamiért egyszercsak bemondta az unalmast a programozóm (amit programmers notepad alatt használtam) kaptam egy olyan tippet, hogy rakjam fel az avr studio-t és állítsam át, a programozás frekvenciáját. Most volt is rá időm, így leszedtem (avr studio 5) de jött az újabb akadály, rámegyek a programozásra, de nem látja a programozómat. Mi lehet a baj? vagy mit csinálok rosszul? Ha esetleg valaki tudja a választ és ír is, annak előre is köszönöm.
Feljátszottad a megfelelö USB meghajtokat? (szintén benne van a csomagban vagy fennt a honlapon).
Sziasztok
Meg tudnátok mondani, hogy ez a sor pontosan mit jelent? (ADMUX & 0b11110000)
Ennek a kódnak elvileg azt kéne tennie, hogy nyomógomb lenyomása esetén kikapcsoljon/felvillanjon a LED. De pl most az egyik led ki-be kapcsolgat...azért tettem be a delay-t, mert csak így működik. Így ha lenyomom tényleg kikapcsol. Ha a delay nincs benne, akkor csak a LED elhalványul, de nem kapcsolódik ki. Miért? olyan mintha megbolondulna, mert ha felengedem a gombot teljesen random ki-be kapcsolódnak, míg az egyik led kikapcsol, a másik nem...Nem mértem a lábon 0,35V-nál többet sose.
Már meg van, nem lehet cmos lábat a levegőbe hagyni Vagyis van testre legyen húzva, vagy tápra, és akkor úgy kell beállítani a kapcsolót.
Szerintem 1x pereg a kapcsolód, másszor pedig az if előtt bekapcsolod majd rögtön kikapcsolod.
Azaz hihetetlen gyorsan ki-bekapcsolod. A mikrovezérlő gyorsabb, mint ahogyan azt a led követni tudná, ezért látod halványabban. Nincs ideje bekapcsolni, mert már kapcsolja is ki a vezérlő
Rendben van, de tényleg az volt a hiba, mint amit fenntebb írtam: ha nem kötöm alapértelmezetten egy fix pontra a lábat, akkor összevissza ugrál, ki-be kapcsol. Most egy 680 ohmossal a földre húztam, így faszán működik
Olvastam h kandós vagy, készülök már előre Prog2-re Nehogy valkait kikapjam osztán világvége lesz
Egyébként meg érdemes bekapcsolni a felhúzó ellenállást és akkor lóghat a levegőben a láb. Ekkor testre kapcsolás lesz a gombnyomás.
Egyébként én sem értem miért jó az, hogy a while-on belül előbb bekapcsolod, majd ki is kapcsolod a ledet, hiszem utána egy szempillantás alatt vissza is kapcsolódik. Szemléletesebb lenne, ha a program elején bekapcsolnád, majd a while-ban kikapcsolnád. Esetleg gombnyomásra vissza is tudnád kapcsolni.
belső felhúzó ellenállást hogy lehet bekapcsolni?
Például ugy, hogy kiküldes a bemeneti portra egy magas szintet:
sbi PORTB,PB4 ; ez a B port 4. bitjére kapcsolja a pull-up ellenállást
Vezérlő adatlap, portok résznél ott van leírva.
|
Bejelentkezés
Hirdetés |