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
VCC és AVCC is kap tápot? Ilyenkor az lehet hogy nem...
A lábakon mértem(2 Vcc, AVcc, és 2+1 Gnd! Kizártam ezzel az esetleges nyák, forrasztási hibát.
Előtte ohm mérőztem is a lábakon. Ilyennel nem futottam még össze. Ha befut, cserélek uP-t ATmega8-ra.
Ha a lábat nem állítod kimenetnek, és csak a 10-100kohmos felhúzó ellenállást kapcsolgatod, akkor kapsz terhelhetetlen kimenő feszültséget.
de ő azt írja, hogy terheletlenül is 2V-ot mér...
Ő csak azt írja: "out esetén csak ~2V szintet ad ki, ami alig terhelhető, mert még tovább csökken ?" - én ebből arra következtetek, hogy van rajta egy LED, vagy valami ohmikus terhelés (=alig terhelés), és ha tovább terheli, tovább csökken.
Köszönöm, de ilyen alapvető hibát nem szeretnék véteni.
A port DDRd- re "inicializáláskor" kiküldöm a 0b11111111-et. (a lefordított asm-ben lefuttatja a függvényt) Ha pl.: portd=0xFF; ~ua. a jelenség és feszültség, üres port, kissé terhelt (~1mA) port lábakon is, szkóppal és multiméterrel mérve.
Segítséget kérek! Attiny25, 32Khz kvarcról jár, 1sec IT-vel tesz bármit is. A progi csak próba. Az IT-t és azt akartam tesztelni, hogy milyen értelmes, megkülönböztethető jeleket tudok adni egy szál leddel.
E helyett 2 napja töprengek, hogy ha elindítom, miért csak a default State+1 állapot működik azaz miért nem lép körbe: 1 és 2 és 3 és 0 és 1 stb. villanás?
Hogy lehet összébb nyomni a sorokat a Kód-ban? Köszi.
Ugyanarról az FTDI hibáról beszélünk. Ötször kell bedugni, hogy egyszer felismerje.
Én pontosan ezért nem rendelek olyan cuccot, amiben FTDI van.
Üdv!
Valaki tudna példakódot adni SPI-s digitális potméter vezérlésére AVR-hez? Konkrétan ezt a potit szeretném használni. Googlizással nem jutok sehova Nem is feltétlen kell példakód, elég lenne az is, hogy bitről-bitre mit és miért küldjek neki SPI-n, ha be akarok állítani egy értéket. Előre is köszönöm!
Hát nekem sajnos nem
Megpróbáltam megérteni és igazából minden egyéb rendben is van, de azt a részt, ahol az SPI-t magyarázzák, nem értem
Sziasztok!
Tudnátok nekem abban segíteni, hogy egy Atmega328 eepromja miért felejti el az elmentett adatokat? Egy óra programja úgy van megírva, hogy minden ciklusban az avr az eepromba elmenti az időt, áramszünet esetén ezt tárolja magában, ha visszatér az áram az eepromból betölti. A program biztos jó, mert másik két avr-nél működik. Egy harmadiknál meg, hogy megjegyzi, hogy nem.
Nekem olyan hibám volt egyszer egy mega8-cal, hogy az egyik ADC-je folyton hülyeségeket mért. Felprogramoztam egy másikat, betettem a helyére és tökéletesen működött, pedig mind két MCU zsír új volt. Szerintem nincs különösebb oka, egyszerűen gyári hibás...
A hozzászólás módosítva: Nov 28, 2015
Egy ciklus mennyi időt takar? Magyarán milyen gyakorisággal történik írás az EEPROM-ba?
Üdv!
Ma elég sok mindent olvastam az I2C-ről, UART-ról és az RS485 buszról és kissé összezavarodtam. Úgy szeretném kihasználni az RS485 által nyújtott távolságot, hogy közben I2C jeleket küldök rajta. Ha fogok egy Max 232 IC-t (például ezt) és az AVR-en lévő I2C busz SDA-ját a max232-n keresztül rátolom egy csavart érpárra, az SCL-jét pedig egy másikra és így építek fel belőle egy rendszert, az működne? Van valami probléma/buktató? A hozzászólás módosítva: Nov 28, 2015
Erre sajnos nem tudok válaszolni. A program 769 sorból áll, 8MHz az órajel.
Milyen távolságról lenne szó? Egy régi berendezésünkben az I2C minden különösebb gond nélkül elment 2-3 méterre, pedig eredetileg nem erre találták ki.
Szerk: A jelek lapos 8 eres vezetéken mentek RJ45-ös csatlakozón. A hozzászólás módosítva: Nov 28, 2015
Ha esetleg az MCP41010 is megfelel, annál egyszerűen két byte-on, először dec17-et (B XX01XX01)kell küldeni a második byte meg a beállítandó érték. Kicsit bonyolultabban: az első byte bináris egyes és kettes helyi értéke adja, láncba kapcsolt potiknál a kijelölést, hogy melyik potinak szól a parancs, ha ez 01 akkor a 0. A 16-os és 32 helyi érték adja a parancsot, 01, hogy beírás következik, a többi helyi értéknek nincs szerepe. Tehát mondjuk a fél állásba hozatal (dec128)az Binárisan10000000,00010001 kell küldeni. Bascomban ez ennyi:
W(1) = 17 W(2) = 128 Spiout W(1) , 2 A hozzászólás módosítva: Nov 28, 2015
Ha minden másodpercben mentesz akkor bukó, mert az EEPROM minden egyes bitje csak 100000 írást bír el hivatalosan. Biztosan lehet több is, aztán lesz pár bithiba, de még megy egy darabig aztán kuka. A többi is így fog járni, hidd el.
Eléggé fura megoldás az időt EEPROM-ban tárolni. zombee leírta a lényeget. Nem lett volna jobb egy RTC használata? Azt éppen ilyenre találták ki.
Én anno az RTC-t magában az AVR-ben oldottam meg, egy akvárium világítás dimmeléséhez és kapcsolásához kellett. A lényeg hogy az AVR érzékelje ha elmegy az áram, és akkor nem hajtja sem a kijelzőt, sem a meghajtókimenetet, csak az óra megy...
Ha van benne RTC, akkor úgy a legésszerűbb.
Egy már kész kapcsolás építettem meg, amihez a program is meg volt írva. Annyira még nem vagyok otthon a program írásban, hogy magam írjam meg.
Mindegy is, akkor ez így ragadt, ez legyen a legnagyobb baj, max. nem jegyzi meg az időt, az óra ettől függetlenül működik.
Valaki tudna nekem válaszolni?
Idézet: „Üdv! Ma elég sok mindent olvastam az I2C-ről, UART-ról és az RS485 buszról és kissé összezavarodtam. Úgy szeretném kihasználni az RS485 által nyújtott távolságot, hogy közben I2C jeleket küldök rajta. Ha fogok egy Max 232 IC-t (például ezt) és az AVR-en lévő I2C busz SDA-ját a max232-n keresztül rátolom egy csavart érpárra, az SCL-jét pedig egy másikra és így építek fel belőle egy rendszert, az működne? Van valami probléma/buktató? ” Kb. 30-50m lenne a vezeték hossza. Előre is köszönöm! A hozzászólás módosítva: Nov 29, 2015
Senki? Valami evidens hülyeséget csináltam?
Első ránézésre: uint8_t State=0x00; a 9. sorban,volatile nélkül.
Szerintem, nincsen ami kihozza a sleepböl a procit!
Atyn25 nél ezek lehetnének:
Vagy ha már indítottál timert? A túlcsordulás megszakítás rutint meg kellene írni! abban ki léphetnél Sleep-böl! A hozzászólás módosítva: Nov 29, 2015
Szerintem is így gondolta,akkor viszont kell a volatile és 35.-39.-ig megy a megszakításba.
|
Bejelentkezés
Hirdetés |