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
Az a baj, hogy nem várja meg a programod, míg STABILAN marad az adatport a kijelzéshez.
Ehhez az kell(ene), hogy a kijelzés előtt egy x ideig(10-50ms) vársz és közben figyeled a gombokat. Ha csak egy pillanatra is átvált a gomb, akkor újrakezded a számlálást. De mivel ember van a nyomógomb másik oldalán, csak hardveres megoldás segít végérvényesen: Az évek óta bevált tesztpanelemen LED-eket hajtok meg közös adatvonalon a kijelzővel, probléma nélkül. Bár a LED-ek nem zavarják a kijelzőt, a LED-ek villódzása engem igen. Ezt úgy védem ki, hogy a LED-ek közös katódját nem közvetlenül a földre kötöm, hanem egy NPN tranzisztor beiktatásával. Az LCD-s adatátvitel idejére ezt kikapcsolom, eltárolom a korábbi állapotot, majd az adat átvitele után visszaállítok mindent. Világító LED-ek és egy kis programozási ügyesség mellett észre sem venni az adatátvitelt! Ami neked BIZTOSAN segít: a nyomógombokkal sorba 1-1 dióda(pl. 1N4148), és a közösítésnél egy darab NPN kapcsolótranzisztoron keresztül megy a földre. Tudom hogy a tranzisztor vezérlése az +1 port, de - kijelzőmódtól függően - lesz 5 vagy 9 portod a nyomógombokra. Igen, az RS is...
Végy egy PONTOSAN ugyanilyen minert, másold le róla a kódot és töltsd rá a halottra.
Ez biztosan kevesebb mint 2-szeres befektetés(mert ugye a Dragon sincs ingyen), de a haszon pont 2-szeres lesz...
Sajnos nem megy!Ezekben be van építve egy biztonsági bit,amit ha bekapcsolnak, akkor nem lehet lemásolni a tartalmat!Természetesen a gyártó készséggel alkalmazza ezt a megoldást!
Van egy másik is, és nem lehet róla leszedni a firmwaret pont ezért sajna! De azért köszi.
Az LCD vezérlésem 8 bites és kétirányu, azaz olvasom a ready flaget, és csak ez engedi tovább a programot, ( de még teszek oda mindjárt egy kis delayt). A kod ugy van irva, hogy elöször elvégzem a gombok által igényelt funkciot, annak az eredményét elmentem a RAM-ba. Ezzel megvan az uj értéke az adott változonak és ezután kapcsolom az LCDUPG flagot, ami kiirja a változo uj értékét. Ezután aktiválodik ujra az alapprogram és várja a köv. gombnyomást.
A nyomogombok már most is diodán keresztül kapcsolodnak a adatsinhez és az EN adja a "földet", azaz vagy az LCD vagy a gombok müködnetnek a kettö egyszerre elvben kizárt. Portom elvben van elég, csak sajnos SMD a NyÁk igy bonyolult beleturkálni.
Hát ez így nem túl jó(EN==föld a nyomógomboknak), vannak ám tranziensek is...
Márpedig sok profi szerkezeten is igy van ( onnan vettem az ötletet, nekik ráadásul 8 gombjuk van nekem meg csak 6).
Az EN természetesen egy port, és az EN=1 az LCD-t kezeli, ami egy külön rutin és utánna visszamegy 0-ra. Ilyenkor kikapcsolom az LCD-t, az adatsint bemenetre állitom, bekapcsolom a pull-up ellenállásokat, majd pedig az irq indul és várja a nyomogombot. Azaz ilyenkor az EN már régen 0-án van és port bemenetek is 1-n vannak. A multkor már irtam egy programot is, ami egyenként "nyomkodta" a gombokat az napokig hibátlanul ment. Most még azon gondolkozom, hogy irok egy másik teszt programot is, ami a gombok szimulálja ( ez multkor hiányzott). Abban van a tranziensek szürése is.
Hát ismerek pár "profit" aki nem végzett profi munkát. Egyértelműen ez a megoldás sem az.
Bár nagyon kicsi a valószínűsége hogy az utolsó ellenőrzés és az EN 1-esbe állítása között nyomja meg valaki a gombot, mégis megtörténhet és ez baj. A szinkron digitális vonalak pedig igényelnek egy "előkészítési időt", tehát az EN 1-esbe állítása előtt(és után) az adatvonalaknak egy adott ideig stabilnak kell lenniük különben nem fog rendesen működni és ettől független hogy 6 vagy 9 gombot használsz... Ha a hardveren nem tudsz változtatni akkor csak a programon tudsz. Számolni kell a nyomógombok pergésével, ezért nem a gomb felengedése utáni legelső pillanatban indítod az adatátvitelt hanem késleltetve és közben azért figyelgetni kell a portot is... A hozzászólás módosítva: Ápr 5, 2014
Kösz, ama profi berendezés itt van az asztalon és hibátlanul megy. Söt sikerült felvennem s fejlesztöjével a kapcsolatot, és elkérte tölem a kodot megnézni, hogy mi lehet a hiba ( még nem jött válasz).
A pergésre külön rutinom van ( egy korábbi szerkezetben hibátlan megy, igy valoszinü itt sem azzal lesz a baj, könnyen kezelhetö). Mint már irtam a nyomogombok által változtatott értékeket elöbb fel dolgozom ( matematikai operációk) majd elmentem a RAM-ba, csak ezután kerülhet kiirásra. A RAM-ba elmentett értékek rendben vannak, azaz a nyomogomb nem pereg és akkor még az adatsin is rendben van. Ekkor történhet valami, ami összezavarhatja a displayt. Most jutott még valami az eszembe, (itt elvileg kiiktathatnám a nyomogombokat teljesen). Na megyek megnézem. Szereztem egy 8 csatornás logikai analizátort, remélem a héten megjön, akkor talán majd kiderül mi a baja.
Ha 12V-ot kapcsolok a resetre törlődnek a biztosíték bitek Atmega8-nál?
Mert sikerült kizárnom magam A hozzászólás módosítva: Ápr 6, 2014
nem.
lsd: fuse bit doctor.
Egy ehhez hasonló nixie órának a programja, csak annyi vele a probléma, hogy csak dcf szinkronnal megy, nyomógombokkal nem beállítható.
Üdv
Egy kis segitség kellene. Van egy óra projekt,aminek a programjában kellene módosítani, ebben kellene a segítség. A link: link A linken ez a progi: " Bombowy-zegar-program.zip (kopia)" Azt kellene módosítani hogy a kijelzésben a másodperc visszafelé léptessen, vagyis 60 ról visszafelé. Úgy mint ezen a videón: video Előre is köszi A hozzászólás módosítva: Ápr 7, 2014
Köszönöm a gyors választ
És a mega8 tól menő SV1 csatlakozó kimenetein keresztül ?Szerintem azok a kimenetek vannak beállítva hozzá.
Sziasztok! Segítségeteket szeretném kérni, én már lassan beleőrülök de nincs meg a hiba.
Összedobtam próbapanelon egy Atmega644-es kapcsolást. Semmi extra csupán kvarc, táp meg egy 75176 van rajta. SPI kivezetve programozónak és ennyi. A probléma a következő: a programozóval nem sikerül csatlakoznom rá ha benne van a kvarc. "Entering programing mode..FAILED!" hibaüzenetet dob. Ha kiveszem a kvarcot rátölti a programot, sőt ha átrakom egy kész panelra, amin ugyan csak 4MHz-es kvarc van ott is gond nélkül csatlakozik rá. Van valami ötletetek mi kavarhat be neki ennyire a kvarccal? Én erre a dugdosós próbapanelra kezdek gyanakodni, hogy nem érintkezne rendesen a kvarccal. De oda is forrasztottam rá már vastagabb lábakat biztos ami biztos és így sincs semmi eredménye
Sziasztok, egy Ds18B20 és egy Hd44780-as LCD. Kiír 3 hőmérsékletet, az aktuálisat, a minimumot és a maximumot egymás alá 3 sorba. Néha viszont, kb 5 naponta egyszer, a harmadik hőmérsékleti értéket 2x írja le közvetlenül egymás után és ott is marad ugyebár. Ezt miért csinálja vajon?
Szia!
Mekkora kondi van a kvarcra téve ? A fuse bitek melyik, milyen órajelre, kvarc frekvenciára vannak beállítva ? Az ATmega, ha jól emlékszem, alapból belső órára van beállítva.
Szia! Időközben megoldódott a probléma, tényleg valami érintkezési hiba volt csak. Bár hogy pontosan mi, azt meg nem mondom. Kicsit rátenyereltem és utána már működött.
Sziasztok!
Egy Atmega 2560 as mikrovezérlőt szerednék programozni IAR Embedded Workbench fejlesztőkörnyezet segítségével. A chip egy Arduino boardon helyezkedik el, és USB-vel csatlakozik a PC-hez. Kezdésnek csak egy üres programot szerettem volna feltölteni; a probléma itt kezdődik, ugyanis az IAR nem ismeri fel az eszközt (targetnak be van állítva az atmega 2560), és a debugger is hibát jelez. Igazából nem tudom, hogy melyik debuggert kéne kiválasztani és hogyan kellene beállítani. Ebben szeretnék segítséget kérni.
STK5600v2 a feltöltő. De használj külsőt (Arduinoból a parancssor kipuskázható).
Sziasztok!
Van egy atmega48V-m. Külső kvarc (4Mhz, 22pF kondikkal) Belőttem a PC5-re ezt:
Ha jól számolok akkor ez 50kHz. Szkóppal méricskéltem picit, kíváncsi voltam... ~48kHz jön kifelé a PC5-ös lábon. Most lehet, hogy hülye kérdés, de felteszem. A hiányzó "idő", az a CPU és a belső perifériák közötti kommunikáció, illetve a CPU döntéshozatali ideje?
Számoljunk:
Esetleg: _delay_us(9); NOP 1 órajel annyi nop amit megkíván A hozzászólás módosítva: Ápr 8, 2014
Várjunk egy picit.
Ennyire még nem vagyok benne a CPU működésében. Valaki elmagyarázza nekem? Köszi
Akkor talán olvas:
Bővebben: CPU Működése
de amúgy ic nélkül nem lehet megcsinálni?
Köszönöm a választ! Ezen a téren nem vagyok túl jó, ki tudnád kicsit bővebben fejteni a dolgot?
Na tegnap éjszaka kiderült sok minden. Kaptam a gyártol pofára 2 ugyanolyan displayt, meg megjött az analizátor is. (Amugy filléres, de remek kis szerkezet). Az én két displayem hülyült, bedugva ugyanoda a másik displayt az ugy ment, mint a svájci ora. Az az LCD ha az EN=0 meg sem mukkant, az enyém meg ugráltatta a DATA lábakat össze vissza. ( aminek persze semmi befolyása nincs magára az LCD-re, de nekem összezavarták a gombok kodjait. )
Ez okozta a zöldséget a kiiron. Mind a kettö ugyanarra prokollra esködött, igy nem sikerült kideriteni ama baj okát. Miután nem akartam magam a profi készülékben felhasznált displayekre kötni ( öszintén szolva nem is igen tudnám beszerezni, miután nincs semmi különös a leirásban, legfeljebb a gyártot tudnám beirni) nem maradt más hátra, mint megosztani a két EN parancsot, az egyik az LCD-t kezeli a másik meg a nyomogombokat. Igy most már megy az én LCD-m is meg a profi szerkezetben használt is.. Azaz univerzális lett a kodom. A cég is megköszönte ezt az informáciot, állitolag náluk még ilyesmi nem fordult elö. Kösz neked is, mert valoban korábban is feloszthattam volna az EN jeleket, csak a keményfejüségem tartott vissza, ha nekik megy, akkor az enyémnek is mennie kell Az analizátor azt is megmutatta, hogy nem a tranziesekkel van a baj, hanem azzal, hogy ugy látszik egyes LCD-k a fene tudja mit csinálnak az adatlábakkal, ha azok passziv állapotban vannak ( azaz sem nem irom, sem nem olvasom öket.). Ez uj számomra.
Sziasztok!
SIM900 felélesztésén dolgozok, egyenlőre USB-RS232-vel szeretném. Magában az RS232-USB kütyü működik (bha a tx-rxet összezárom visszaküldi amit elküldök). A modul nem kapcsol be ha rádugom az usb-s rs232 átalakítóra. A kapcsolása és a panel biztosan jó, többször átnéztem. Van ötletetek? A SIM900 rendelkezik autobaud-al, az addig oké, de paritásbitet használ? Stop bitből hányat?
SMD avr ket(atmega8) hogy szoktatok programozni?
Mindig terveztek a nyákba programozó csatlakoztathatóságot, vagy van erre valami jobb eszköz? |
Bejelentkezés
Hirdetés |