Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
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
Lapozás: OK   598 / 839
(#) zombee válasza Massawa hozzászólására (») Ápr 5, 2014 /
 
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...
(#) zombee válasza sanya11 hozzászólására (») Ápr 5, 2014 /
 
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...
(#) sanya11 válasza zombee hozzászólására (») Ápr 5, 2014 /
 
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.
(#) Massawa válasza zombee hozzászólására (») Ápr 5, 2014 /
 
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.
(#) zombee válasza Massawa hozzászólására (») Ápr 5, 2014 /
 
Hát ez így nem túl jó(EN==föld a nyomógomboknak), vannak ám tranziensek is...
(#) Massawa válasza zombee hozzászólására (») Ápr 5, 2014 /
 
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.
(#) zombee válasza Massawa hozzászólására (») Ápr 5, 2014 /
 
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
(#) Massawa válasza zombee hozzászólására (») Ápr 6, 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.
(#) laci200270 hozzászólása Ápr 6, 2014 /
 
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
(#) TavIR-AVR válasza laci200270 hozzászólására (») Ápr 6, 2014 /
 
nem.

lsd: fuse bit doctor.
(#) bbazs válasza eyess hozzászólására (») Ápr 7, 2014 /
 
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ó.
(#) H2opok hozzászólása Ápr 7, 2014 /
 
Ü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
(#) laci200270 válasza TavIR-AVR hozzászólására (») Ápr 7, 2014 /
 
Köszönöm a gyors választ
(#) eyess válasza bbazs hozzászólására (») Ápr 7, 2014 /
 
És a mega8 tól menő SV1 csatlakozó kimenetein keresztül ?Szerintem azok a kimenetek vannak beállítva hozzá.
(#) 06smici hozzászólása Ápr 7, 2014 /
 
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
(#) holex hozzászólása Ápr 7, 2014 /
 
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?
(#) tursaba válasza 06smici hozzászólására (») Ápr 8, 2014 /
 
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.
(#) 06smici válasza tursaba hozzászólására (») Ápr 8, 2014 /
 
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.
(#) steelgoofy hozzászólása Ápr 8, 2014 /
 
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.
(#) TavIR-AVR válasza steelgoofy hozzászólására (») Ápr 8, 2014 / 1
 
STK5600v2 a feltöltő. De használj külsőt (Arduinoból a parancssor kipuskázható).
(#) fifadani hozzászólása Ápr 8, 2014 /
 
Sziasztok!
Van egy atmega48V-m. Külső kvarc (4Mhz, 22pF kondikkal)
Belőttem a PC5-re ezt:
  1. PORTC ^= (1<<PC5);
  2. _delay_us(10);


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?
(#) kapu48 válasza fifadani hozzászólására (») Ápr 8, 2014 /
 
Számoljunk:

  1. Kezd:
  2.   PORTC ^= (1<<PC5);         4 órajel  kb.
  3.   RCALL _delay_us               3 órajel
  4.   _delay_us(10);                  ?     Ezt szimulátorban meg kellene nézni!
  5.   RET                               4
  6. RJMP     kezd                   2


Esetleg:
_delay_us(9);
NOP 1 órajel annyi nop amit megkíván
A hozzászólás módosítva: Ápr 8, 2014
(#) fifadani hozzászólása Ápr 9, 2014 /
 
Várjunk egy picit.
Ennyire még nem vagyok benne a CPU működésében.
Valaki elmagyarázza nekem?

Köszi
(#) kapu48 válasza fifadani hozzászólására (») Ápr 9, 2014 /
 
Akkor talán olvas:
Bővebben: CPU Működése
(#) laci200270 válasza laci200270 hozzászólására (») Ápr 9, 2014 /
 
de amúgy ic nélkül nem lehet megcsinálni?
(#) steelgoofy válasza TavIR-AVR hozzászólására (») Ápr 9, 2014 /
 
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?
(#) Massawa válasza Massawa hozzászólására (») Ápr 11, 2014 /
 
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.
(#) Droot hozzászólása Ápr 11, 2014 /
 
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?
(#) TavIR-AVR válasza Droot hozzászólására (») Ápr 11, 2014 /
 
SIM900 adatlapja mit mond?
(#) mzozo95 hozzászólása Ápr 12, 2014 /
 
SMD avr ket(atmega8) hogy szoktatok programozni?
Mindig terveztek a nyákba programozó csatlakoztathatóságot, vagy van erre valami jobb eszköz?
Következő: »»   598 / 839
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem