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
Sziasztok! Attiny 2313 és pc vel akarok kommunikálni UART-on 2400bps-el, kötelező hozzá külső kvarc? Találtam bontásból egy 4.500T80 jelölésű kvarcot az 4,5 Mhz lenne és az jó hozzá?
Másik kérdés, ha kell állítani a fuse biteket akkor megfelel az egyszerű LPT programozóm, STK200 másolatnak van beállítva mindig égetéskor, és úgy működik!?
Még annyi lenne a kérdésem, hogy van egy programom(usbtiny) amit a 2313-ba szeretnék égetni.
A gondom, hogy hex file amit a WinAVR generál az 2056 byte méretű vagy 8 byteal több, mint a maximum 2kbyte, ami az AVRen elférne. Ezt gondolom nem lehet ráégetni. A zip fileban, viszont van egy kész hex file, csak annak nem tudom a méretét. Mivel erre az AVRre van írva, így az a kész hex file jónak kell hogy legyen? Kezdő kérdésként megfogalmazva: Milyen gond adódhat belőle ha az AVR memóriájánál nagyobb filet másolunk be? SB Idézet: „A "tetszőleges USB-s mikrokontroller" nekem azt jelenti hogy az USB rész hardveresen benne van az uC-ben.” Igen, így értettem. Idézet: „Az "USB CDC bármely kontrollerre létezik" - ezt úgy hívják hogy szoftveres USB emuláció.” Nem erre gondoltam. Inkább arra utaltam, hogy az USB nélküli, de uarttal rendelkező kontroller USB -re konvertálása nem csak FTDI illesztőkkel történhet. Egy AtMega8 uart segítségével kommunikál az illesztővel (az FTDI -vel is) és az az illesztő kommunikál az USB csatornán az USB host -tal (PC). Erre a helyre betehető más kontrollert is (ARV, PIC, EzUSB, Cypress.. bármi, amire az USB CDC meg van írva). Ez lehet softveres emuláció is, de inkább a beépített hardware illesztőst ajánlanám. Idézet: „A hardveres USB-vel rendelkező mikrokontrollereknél(pl. AT90USB162, ATMega8U2) az USB-vel foglalkozó programrész viszonylag nagy(3-4kB), és a programozásnál figyelni kell arra is hogy az USB-t kezelő taszk bizonyos gyakorisággal meg legyen hívva(lásd: LUFA projekt).” Mivel ekkor két kontroller lenne a projectben, az USB kezelés nem terhelné a fő kontrollert. Inkább azt szerettem volna kidomborítani, hogy az FTDI és annak ilyen-olyan klónjai esetén a drivert és az USB-uart illesztőt külön megvesszük (esetleg zsákbamacskaként problémás példányt kapunk), míg az olcsóbbikkal árversenyben levő megoldást kaphatunk más megvalósítással. Az FTDI és Profilic konverter helyettesíthető egy hardware illesztőt tartalmazó, olcsó kontrollerrel és egy programmmal, aminak a forrása a kezünkben van. Erre adtam példát a 16F1455 -tel. A rá írt USB CDC -t nem nevezném szoftware -s emulációnak.
Találtam 4 Mhz es oszcillátort, amit az adatlapban is megad a táblázatnél példaként, így 0,2%os a hibaszázalék.
Elmondaná valaki hogyan lehet a fuse biteket állítani? Bővebben: Link Feltöltöttem egy képet a kiválasztott beállításokról. Valami olyasmit ír, hogy az AVRDUDE-ba kell ezt beírni jelen esetben:
Ha jól értelmezem alapértelmezettként a WinAVR a hex felírásakor meghívja az AVRDUDE parancssori programot, és akkor most jelen esetben miután elkészítettem a hex file-t külön el kell índítsam a paraméterekkel az AVRDUDE-ot?
Szerintem még NE használj kvarcot, ráér még az. Ha nem tudod milyen kristály kell(ene),
akkor hagyd a csudába, nélküle is működni fog! A kristály csak azért ajánlott, mert egy megfelelő frekvencia használatával az AVR órajelének egész törtje lehet a kiválasztott BAUD frekvencia. DE: az UART kommunikáció megenged némi eltérést(bitszámtól függően kb. 2-3%) az adó és a vevő BAUD sebessége között. Most számolunk. A CPU frekije 1MHz, és 2400bps-t akarsz. UBRR = kerekítés(1000000/16/2400)-1 = 25; Eltérés: 1-(UBRR+1)/(1000000/16/2400) = 0.0015999 Ez utóbbi azt jelenti hogy ha az AVR pontosan 1MHz-en jár akkor a kerekítésből származó BAUD eltérés kb. 1.6 ezrelék. Az AVR-ek kalibrált belső oszcillátora ennél jóval nagyobbat téved, a gyakorlatban 1% vagy kisebb. Ennyit elvisel az UART. 4.5MHz-es kristállyal: UBRR = kerekítés(4500000/16/2400)-1 = 116; Eltérés: 1-(UBRR+1)/(4500000/16/2400) = 0.0016 Azaz csak azért lesz jobb a BAUD órajel pontossága, mert a kristály frekije kisebb mértékben tér el a névlegestől, mint az AVR beépített RC oszcillátora. Egy megfelelő BAUD kristályra akkor lesz mindenképp szükség, ha nagyobb sebességen akarsz kommunikálni. Ugyanis ilyenkor az UBRR értéke kisebb lesz, tehát egy esetleges kerekítésből származó eltérés túllépheti a megengedett 2-3%-ot. És ezen az sem javít ha az AVR órajelét pontosan ismerjük. Példa: 8 vagy 16MHz kristály, 115200bps: 7.8% és 3.68%. Egész egyszerűen egy nem megfelelő kristállyal és ilyen sebességgel nem lehet kommunikálni. A hozzászólás módosítva: Jan 24, 2014
Az erdekesseg az, hogy nalam mukodik 64-bit alatt, tehat nem az az eset all fent mint nalad.
Felvettem a kapcsolatot az ftdi-al, mert a hiba nem teljesen ugyan az mint a fake ftdi-nal. Azt ismerem. Elkuldtem nekik az eeprom tartalmat es az egyedi ftdi uid-ot nezzenek utana. Jovoheten meg kuldok tesztelesre az ftdi hq-nek ict. Kivancsi vagyok az eredmenyre.
64 bit alatt a fake FTDI is megy a xx.x.24-es végű driverrel. Csak nem szabad e fölé frissíteni.
Kíváncsi vagyok, mi lesz az eredmény. A hozzászólás módosítva: Jan 25, 2014
Legfrisebb driverrel is működik 64-bit alatt, még a 2.08.30-al is. Ott, ahol egyébként is működne, pont ezért gyanús.
Szerk: És biztos hogy nem az áramkör a gyanús, bár csak minden galvanikusan leválasztott USB-t olyan alapossággal és tartalékokkal építenének fel, mint ahogy ezt terveztem meg. Kicserélve az FT-t működik természetesen, csak a 1029-B-vel nem. A hozzászólás módosítva: Jan 25, 2014
Az FT2xxR szériához, belső felépítése miatt nem szükséges és nem is ajánlott a soros ellenállás. Csak rosszat teszel vele.
3K-ig tesztelt és garantált paraméterként ellenáll az FT a túlfeszültségnek, 3K feletti ESD védelem indokolt csak. 3V3-as stabját pedig csak nagyon szorult esetben használd, nem nagyon arra való hogy bármivel terheld.
Sziasztok!
Lenne egy kérdésen ha lehet, építettem egy volt ampermérőt. 8MHZ kvarc van benne beégettem a programot de mivel fuse bit beállítás nem volt megadva ezért az alap low fuse bitet 0xE1-ről 0xDC-re állítottam így megy a program benne szerintem rendesen, alap belső 1MHz-en lassú volt. Jól csináltam? Köszönöm.
Hello!
Konkrétan az a bajom a kérdéseddel(lehet nem vagyok egyedül) hogy SEMMI konkrétumot nem adtál meg az adott eszközről. A 8MHz kvarc nyilván nem dísznek van, tehát nem azért KELL átállítani mert a belső 1MHz RC oszcival lassú, hanem mert 8MHz kristállyal KELL mennie. Valószínű hogy van 8MHz belső RC oszcillátor is, de ha a leírásban vagy a kapcsolási rajzban ott a kristály akkor a pontosság miatt kell az a kristály. Ha van CKDIV8 nevű FUSE bit, akkor azt is ki kell kapcsolni különben "lassú" marad. Na igen, valami kimaradt: az AVR típusa. Ha nem írod le hogy milyen akkor kérlek ne dobálózz HFUSE:LFUSE hexa értékekkel. Ext Crystal Oscillator high freq. és kikapcsolt CKDIV8. Ez kell neked. Ha saját magad tervezted akkor a kristályos dolgot nem értem. A beépített ADC nem igényel pontos időzítést(kristályt), sőt, egyes esetekben be is zavarhat(rosszul tervezett áramkörnél). A lassúság(pl. számolás, LED/LCD kijelző) a 8MHz belső oszcillátorra átállással VAGY a CKDIV8 kikapcsolásával hárítható el. Jó akkor lesz ha úgy működik ahogy szeretnéd, nem akkor ha a fórumozók azt mondják(egy olyan cuccra amit még soha nem láttak/olvastak róla). A hozzászólás módosítva: Jan 26, 2014
Üdv!
Gondom akadt az AVR felprogramozásával. Az USBTiny hex kódját szerettem volna beégetni, de nem megy. WinAVR-el, olyan kódokat amiket én írok, azokkal nincs gond. Ám a kész hex kódot csak AVRDudedal tudnám beégetni, de csak az alap tesztelést végzi el és utána végez. Mi kell a hex fileon kívül a felprogramozáshoz? SB
Lehet hogy kihagytad a "program flash" és "verify flash" kapcsolókat.
Ha "csak" a fájlt adod meg, azt tudomásul veszi és kész, de nem csinál vele semmit. A hozzászólás módosítva: Jan 26, 2014
Én ezt írtam be:
Még mit kellene beírnom?
Hát eléggé meglepődtem, rámértem a kibontott induktivitásokra, és 3-4 ohmnál többet nem mutatott a műszer :O Mindesetre kicseréltem mindkét panelen, és azóta mindkettő jól üzemel.
3-4 Ohm nekem kicsit soknak tűnik egy tápszűrő induktivitásnál.
Most néztem a paraméterlistát, a ":w" lenne az hogy írja is be. Én az STK500.EXE-hez szoktam hozzá.
Apropó, mi az a "SAJAT"? Valami programozótípus?
A SAJAT az én saját programozóm. Egy DASA programozó, csak más pineket használtam a COM portról. A 3mas és 4es pin van felcserélve. A programozó az működik. AVRDude-ban a fuse biteket át tudtam vele állítani és WinAVR alatt simán tudok égetni is.
Volt egy érdekes megfigyelésem, aminek mellékeltem az AVRDude parancssorának a másolatát. Röviden: Ha a WinAVRból kimásolt AVRDude parancsokat, ugyanolyan sorban használom, akkor működik. Ez csak az általam megírt kódra vonatkozik. A kívánt hex filet ezzel a módszerrel sem tudom átvinni.
Bocsánat!
Atmega8-ról lenne szó. És ez a kapcsolás!
Értem. A kristály beállítás szerintem nem gond, a tiéd "medium freq", ami 3-8MHz. A 8MHz az
a határ, én itt általában már "high freq"-t választok. A kapcsolási rajz alapján nem lehet nagy gond belőle ha nem kristályt, hanem 8MHz-es belső RC oszcillátort állítasz be: LFUSE=0xD4 Az egyetlen időérzékeny cucc a DS18B20 hőmérő lehet, de annyit nem téved(het) az AVR belső RC oszcillátora ami a működést befolyásolja. Az LCD szintén.
Köszönöm a válaszodat!
Működik tökéletesen, nem vettem észre semmi rendellenest, a menüben is gyorsan lépked! Köszönöm még egyszer.
Az én számítógépemen 3 sorosport van, köszönhetően a Rufusz szakértelmének.
Amikor új gépet vettem, az volt a kikötés, hogy legyen benne sorosport. Azt mondták, hogy nem lehetséges. Utána jött valami szakértő, aki elmondta, hogy 4000-ért kapható 2 sorosport és egy printerport kombó, amit be tudnak rakni. Mondtam, hogy jó. Miután a gépet megkaptam, megvilágosodtam, hogy a kóklereknek elég lett volna megvenni egy sorosporti csatlakozót és ráhelyezni az alaplapi tüskesorra. ![]()
Halihó.
új eszement tervemhez a bemenetek értékét PPM jellé kéne alakítanom, de nem sikerült rájönnöm hogy hogyan. Valaki próbálkozott már ilyennel? RC távirányítót alakítok át, hogy ne csak 4 csatornám legyen. Neten nem sikerült hasonlót találnom.
tipp: először csináld meg egy csatornára, ha úgy működik akkor többre.
![]()
Igen, még azzal küszködök hogy hogyan tudom létrehozni a ppm jelet
![]()
Sziasztok!
Attiny 2313-mat nyúzom UART kommunikációval PC között, belső oszcillátorral, 8 mhz-en, 2400 bps Szerintetek kevés a processzor órajele? Mert ha a mellékelt programot beleégetem a chipbe, hyperterminalon ha elkuldok egy betűt akkor kiirja, de utánna nem pislákol a kurzor normálisan, hanem úgy mintha lefagyna, hogy sokkal lasabban villog, és nem kapcsolja az AVR a portbiteket. Ha kiveszem az if-es részt akkor lefagyás nélkül működik.
Használj olyan timert aminek két output capture egysége van. A 16 bites 1-es timer mindig ilyen.
Az OCR1A kapjon egy impulzusszélességnyi értéket, az átvinni kívánt kódot az OCR1B-be írod. Gyors PWM módban, ICR1 regiszter legyen a plafon, értéke OCR1B+impulzusszélesség legyen. Az OC1A kimenetet ponált üzemmódba állítod, az OC1B-t pedig negáltra. A két jelet a kimeneten szuperponálod, majd rákötöd az adóra. Szép kis PPM jeled lesz, és mindezt a háttérben csinálja.
8MHz-el még 9600-ra is tudod állítani, kicsit beleírta, szerintem jó, nem állítottad be a portokat kimenetnek! Ha kell még valami akkor szólj, mert már csináltam ilyet.
A hozzászólás módosítva: Jan 27, 2014
|
Bejelentkezés
Hirdetés |