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
Rosszul tudod. Az usb-soros konverter (kabel es nem IC) RS-232 szabvanynak megfelelo jelet ad ki, ami azt jelenti, hogy a magas szint -3V es -15V kozott, az alacsony szint +3 es +15V kozott van. Tehat kell a max232.
Erdekes, azt a kodot az adatlap alapjan irtam es a nalam levo kijelzovel mukodik Lehet hogy az idozitesseknel van a problema. De mar latom, hogy sikerult egy libbel megoldanod.
Azert visszsakerem a masik kijelzomet es kiprobalom megint
AVR-be még nem vagyok otthon most kezdem.
Ha cserélsz Kvarcot akkor is ugyanaz jön át, vagyis stabil a rezgő? Esetleg néztél a neten olyat amit már teszteltek? Amúgy AVR nek küldhetnél valamit ha egyezik a betű akkor villan egy led. ->A gombon van késleltetés? Biztos hogy nincs megszakítás ami bezavar küldésnél? A bittek (darab, paritás, invertálás stb) protokollja rendben?
Sziasztok,
Van egy ATMEGA32 meg egy RS372A típusú RTC-m. a probléma az I2C. Csináltam egy egyszerű write ciklust, de sehogy sem akar működni. Nézegettem netes kódokat, de nem látok benne hibát. Az alábbi kódban csak a legfontosabbakat hagytam. Van egy LCD is még, amire kiírok dolgokat. A probléma: A startbit rendben elmegy az address-t is elküldöm, azonban utána egy TW_MT_NACK (0x20)-t kapok, azaz nem kapok acknowladge-t az adatküldésre. Úgy emlékszem hiba esetén nem kell stopbitet küldeni. Így mindenesetre érdekes, hogy az SCL és SDA vezetékek is 0-ban maradnak ezután végig,úgy hogy még startbitet sem tudok később küldeni. Ráadásul úgy vettem ki hogy a uC húzza földre le. Mégis kéne stopbit? kipróbáltam úgy is, de úgy sem ment. Mindig NACK-t kapok mindig. Próbálkoztam READ ciklus írásával is, de az sem ment. Változtattam az SCL frekvenciáját is, szinte már minden tartományban. Lehet hogy HW-rel van a baj? Maga az IC lábai ott és úgy vannak becsatlakozva, ahogy kell. Azonban lehet hogy a forrasztás során annyit szórakoztam az SSOP tokkal, hogy tönkrement az RTC-m?
Sziasztok!
Tudtok olyan programról, ami az AVR C-t befordítja AVR assemblyre?
Lehet, hogy csak én rontotam el valamit,de nem volt türelmem megkereseni a hibát. Ezzel a libbel elégedett vagyok, ám sokat segítettél te is, mert a te példádon keresztül értettem meg az egészet, így köszönöm szépen a segítséget!
Engem az zavar, hogy nem megy amit irtam es nem merek arra megeskudni, hogy nem az en hibambol. De majd ellenorzom.
Pedig hagytam neked 40 percet, hogy megvalaszold
Üdv!
Szeretnék egy kis segítséget kérni, ha lehetséges. Találtam egy kapcsolást, miszerint 2 BC547, és 5 darab 10kOhm ellenállás segítségével ISO9141-2 szabványú OBD-II diagnosztikát lehet ATmega8-hoz (12MHz kavccal) illeszteni soros kommunikáció segítségével C nyelven. Források: OBD illesztő ISO9141-2 protokol (#2. hsz). Ha jól veszem ki, akkor elősször létesíteni kell a kapcsolatot az OBD-vel: 0x33-at küldeni start bittel, stop bittel 5 baudon. Váltani 10400 baudra, majd várni a válaszra (55 08 08). Ezután küldeni 0xF7-et, melyre érkezik egy 0xCC válasz. Ezután már lehet küldeni a PID-eket (a lekérdezni szánt adatokat), és várni a válaszokat. Nos tehát ahogy én elgondoltam. A fennt megjelölt illesztőt csatlakoztatom az m8 2-3-8 lábaihoz. Ezután a dokumentációban található USART mintaprogramot átírom 8N1-re. Először az USART_init()-et meghívom 5 bauddal, elküldöm a 0x33-at, majd USART_init() 10400 bauddal, és várom a választ. Ha jön 55 08 08, akkor küldöm a 0xF7-et, ha nem újrapróbálom. Ha 0xCC-t kapok, akkor küldöm a PID-et, amire kapom az értékeket. Vagy a másik verzió, amin törtem a fejem, hogy az inicializáláshoz felhasználok egy másik portot (pl.: PD2/pin4, amit párhuzamosan kötök a TXD lábbal (nem tudom, kell így 1-1 dióda a PD1 és PD2 lábakhoz, vagy csak úgy simán összeköthetem?) és azzal megvalósítom a 0x33 elküldését start-stop bittel együtt (0 11001100 1, 200ms delay-ekkel), és utána USART_init(), várok, stb. A következő dolog, ami még nem tiszta, hogy ugyebár az adatlapban lévő mintaprogramot át kell írnom, hogy a megfelelő módon fogadja az adatokat (az adatlapban unsigned char-ral tér vissza, de ugyebár nekem majd hexadecimális tömb kell). Azt szeretném még megkérdezni, hogy mi a hexadecimális változó neve C-ben (mint pl.: az előjeles egésznek int). Üdvözlettel: BazsiBácsi
Felesleges parhuzamosan kotnod ket portot, hiszen a port inicializalas nehany utasitassal megvan azaz nehanyszor 50ns. Addig tuti nem kapsz valaszt.
Olyan hogy hexadecimalis valtozo(mint ahogy binaris/decimalis/oktalist/stb), nincsen mivel az csak egy szamabrazolasi mod. Csak siman csinalj egy tombot unsigned char-bol es abba dobald be az erkezo adatokat es kesz, majd a tomb tartalmanak elemzesere kell csinalnod egy kodot.
Sziasztok! Újból felmerült egy probléma! Van két változóm, amik közül most a teszt kedvéért az egyik (xx) állandóan 0 értéket vesz fel, a másik (yy) pedig -1 -től 1-ig 0.1-enként vesz fel értékeket és van egy if feltétel, mely szerint, ha yy < 0 ... inkább itt a kódrészlet:
viszont azimuth nem 90 és 270 értékeket kap, hanem 7,856 és 24,464 értéket. Nem értem miért... Légyszi segítsetek! Előre is köszi!
Kitalaljam? az yy==0 eset valahogy kifelejtodott es akkor az azimuth nem kap erteket, hanem bennemarad vmi szemet?
Köszönöm szépen, nagyjából kezd összeállni bennem a kép.
A következő dolog, amin most még töprengek, és keresek utána a neten: Az ISO9141-2 a szabvány szerint 12 byte-on kommunikál. Kérelemnél: 68 6A F1 (MODE) (PID) (CS) Válasz: 48 6B 13 (MODE) (PID) (K1)...(Kn) (CS) ugye ezek közül egyik sincs meg 12 byte. a végén van a checksum byte, azt majd valahogy számoltatni kell. A maradékot töltsem ki 00-kal? Gondolom küldeni úgy kéne, hogy eltárolom ezt egy 12 elemű tömbben, for ciklussal kipörgetem, és minden iterációban egy USART_Transmit(); függvénnyel küldöm, fogadásnál meg egy tömtöt töltök fel, ugyanígy for ciklusban, és addig töltögetem, míg meg nem jön a 12 elem? Soha nem programoztam még soros kommunikációt (pláne nem AVR-en), szal bevallom lövésem sincs, hogy hogy működne ez. Üdv: BazsiBácsi
Sajnos sehogy se sikerült mert fájlcsatolásnál nem lehet BMP-t beilleszteni, ha pedig csak simán beillesztem a szövegtérbe akkor egyszerűen nem képes beilleszteni.
Talaltam neked egy jo leirast a kommunikaciorol: Bővebben: Link
Itt van wikipedias leiras is, ill itt talalsz tovabbi linket a kulonbozo PID-ekrol stb: Bővebben: Link A vetelnel a keretszerkezetet kell detektalnod. FIX, hogy milyen karakterrel kezdodhet, illetve hogy mivel vegzodhet. A csomag hossza 12 byte-ban van korlatozva, de ennel rovidebb lehet.
Köszi! A hiba megoldódott! A kódot sikeresen lefordította.Kiderült,hogy programhoz tartozó fájlokban is ki kellet javítani a hibát.
Neeem Reggie! A kiirtásnál szoroztam az értéket ezerrel, hogy látszódjon a tized, század, ezred és emiatt túlcsordult. a ~ -32ezertől +32ezerig tartó signed int-be nem fért bele a 90 000 és a 270 000
Sziasztok szeretnék egy kis segítséget kérni:
Van itt a HE oldalon egy villogó Bővebben: Link nos sikerült végre lefordítanom ATMega32u2 –re a C kódot, 16Mhz-re kérdéseim: ha jól sejtem a hexa file nem tartalmaz semmilyen Fuse bit beállítást? A make-el meglehet adni az STK500 programozót, az akkor állítja hozzá a Fuse biteket automatikusan(ezt még nem próbáltam meg hogy mi is a menete?). Sajnos csak PIC-be vagyok otthon és az AVR-en nem akar villogni a PORTD-n. 5V-ot kap érdekes a HWBE láb ad kifele 5V-ot. Kell itt inicializálni hogy ki a kimenet és bemenet? Nem emlékszem de azt hiszem így van a fuse bealítva Bővebben: Link Low: 5E High: D9 Extend: talán F6 majd este megnézem csak nyugtalanít. Még egy kérdés menyire érzékeny az AVR ha pl HWBE-et a GND-vel rövidre zárom met a PIC sok mindent kibírt nálam.
Sziasztok ! Szeretnék segítséget kérni :
ATMEGA8 áramkörrel szeretnék megépíteni egy áramkört, de nem tudom mivel lehetne felprogramozni. A HEX állomány meg lenne, de mivel imátkozzam bele a dobozba ? Eddig amit találtam, az minden az LPT portot használta, a gépemen meg sajnos nincs. Bővítőkártyát sem tudtam szerezni az üzletben, szerintük az már elevult sz... . PIC et minden gond nélkül programozom PICKIT 2 vel, de az AVR talány . Előre is köszönöm ! :puszis: István
Hello.
Atmega16 SMD-t használok az lenne a kérdésem hogy, az összes vcc-t és gnd-t be kell e kötni? Vagy elég csak egyet használni? Egy vcc-láb el birja a terhelest vagy nem ? kösz. Üdv zacc.
Tiltsad le a JTAG-et (JTAGEN), valoszinuleg azert nem villog, mert nincs letiltva es ekkor ez az alternativ funkcio el folyamatosan.
Amugy a HEX fajlok nem tartalmaznak fuse biteket, a coff vagy elf allomanyok tartalmazhatnak.
Mintha valahol lett volna róla szó, hogy lehet Pk2-vel is avr-t programozni valamilyen módon. Keresgélj, mert tuti volt róla szó valamelyik témában.
hát a Webes fuse állítón nem látok JTAGEN -t otthon megnézem mit olvas / ajánl az AVRStudio.
|
Bejelentkezés
Hirdetés |