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
Bocsanat, hogy kozbe kotyogok, de igy nem szabad csinalni, mivel igy tul irhatod a buffert!
...es most mar a string teljesen megbizhato...
Például úgy hogy a karaktereket egyenként beleteszed egy karaktertömbbe?
Ezt annyival egészíteném ki, hogy természetesen várakozni kell, míg az UDR-t olvasod, mert ez így egy pillanat alatt végigfut... csak adat nem kerül az UDR-be.
(Mindkét megoldásra igaz. Sgt első veszélyes megoldására, és Trudnai korrektebb megoldására is) De a valóságban ettől eltérő módon kellene gyűjteni a stringet, megőrizve a kvázi taskokat és aszinkronitásunkat. Bemásolom az egyik általam készített AT-val vezérelhető készülék ide vonatkozó program részletét.
- 0x0D-re "triggerelt", ekkor az addig gyűjtött stringet átadja a parse-oló függvénynek (ParseCommand) - 0x0A-t eldobja - minden mást gyűjt a pufferben, és mindig lezárja a stringet azonnal (ez fontos!!) Lsd. recbuff[recbuff_idx]=0;
Sziasztok! Nem rég ismerkedek én is az AVR-ekkel.Egy olyan problémám lépett fel, hogy a "Belépés programozási üzemmódba"-re Failed-et kapok egy olyan hiba üzenettel ami ebben a videóba másodjára ugrik fel. Azután is hogy kivettem a pipát a CKDIV8-ból és át állítottam a frekit és így kezdő fejjel már egészen neki keseredtem a dolognak mert nincs több 5letem akébel rövidebb mint 20 cm szóval ez nem lehet gond. Topi féle programozóm van(lehet hogy ezzel van valami) és AVR Studio 4.19 van fel telepítve a Számítógép pedig egy laptop. Kösz a válaszokat így előre is.
Majdnem jo, csak ha o fogad sorosporton es \n a lezaras, akkor EOL-ra kell tesztelni (0x0d). A ciklus pedig lehet nyugodtan hatul tesztelo, mert a memoriaban is le kell zarni a stringet. Tehat igy:
Gyorsulás mérő , de ugyan úgy dőlést mér!
Accelerométer.
Nem, gyorsulast mer. Dolest csak nyugalmi allo helyzetben tud merni. Peldaul szabadeses kozben nem, mig ott a giroszkop hasznalhato. Es meg sorolni lehetne. Tehat giroszkop!=gyorsulasmero. Hasonloan ahhoz, hogy kondenzator!=akkumulator.
Hat igen, amit linkeltel az gyorsulasmero! Ajanlom figyelmedbe a kovetkezo cikkem:
MMA7260 Ez a gyorsulasmero az MMA7361 elodje. Nem sok kulonbseg van koztuk (csak mas az allithato merestartomany), ugyanugy analog jelet allitanak elo. Ahhoz hogy hasznalni tudjad, az X, Y es Z kimeneten levo analog jelet kell merned (a cikkben levo kodot kell atirnod Arduino-ra). A neten sok pelda van, keress ra az Arduino + potmeter-re...
Tudtommal az Arduino IDE megeszi a szabványos C kódot, így nem lesz nagyon bonyolult szinte akár egy az egyben betennie.
Igaz, de egy kezdonek szerintem egyszerubb osszehozni es megerteni egy 20-25 soros Arduino kodot, mint az ADC es UART mukodeset regiszter szinten megismerni es az En kb 100 soros AVR-GCC kodomat megfejteni.
Van AVR Software Framework, igy azert nem kell feltetlen regiszter szinten szenvedni. Bar teny, hogy kezdetekben az Arduino egyszerubb, de hamar korlat is lesz a sok kotottseg.
Nagyon kjöszönöm a sok segítséget, sajnos teljesen kezdő vagyok ezen a téren de érdekel a dolog ,lesz sok hülye kérdésem de szertném az alapokat megtanulni.
A szakdolgozatomat.
Konkrétan egy 6 szabadságfokú robotkart. 3 atmega 162 és 1 16-ost tartalmaz a vezérlőpanel plusz egy kis sallang (csatolás, szűrés, miegymás). Tisztában vagyok vele hogy nem éppen UART a legideálisabb erre a feladatra mint ahogy nem is ezek a mikrokontrollerek, de kötött volt a kezem a DIP miatt... szívesebben nyomattam volna SPI-al, meg még inkább CAN-nel, de DIP-ben az felejtős... Mivel mindent idehaza építek az viszont előkövetelmény volt számomra. Ezek meg olcsó kis kontrollerek és tökéletesen realizálható velük a feladat, még ha sokkal többre is képesek lennének mint holmi robotkar vezérlés A 162-esek a PWM plusz dupla UART miatt, de persze ADC egyikben sincs Szóval a 16-os emiatt kell. A Real Time Terminált meg Perlben írtam, ez egy real time diagnosztikai GUI magához a vezérlőpanelhez.
Ha kell számítási kakaó, akkor ott vannak a DSPic-ek DIP tokban.
Vagy már PIC32-k is.
Sziasztok!
Farok voltam mert amikor programoztam az atmega168-at akkor nem raktam át a jumpert, 3,3V-ról ment az avr és úgy programoztam, azóta nem ismeri fel, segéd órajel generátorral is próbáltam de semmi, a reset lábon 5V-ot mérek ha 5Vról hajtom, de nem történik semmi. Ez azt jelenti hogy örök vadászmező? Egyébként még az az érdekes számomra hogy atmega168-ból az smd változatot nem tudom programozni csak a simát. Van valami hardveres különbség?
Nemnem, én írtam elő magamnak, mert: 1: Nem volt pénzem a panelt legyártatni. 2.: Nem volt, és még mindig nincs meg odahaza a technológiám smd forrasztáshoz.
Így maradt a DIP @sikolymester: A Pic meg szintén elég idegen számomra régóta használok atmegát így ezért választottam atmegát. Számítási kakaó nem kell, ez most 18,432 MHZ-ről üzemel igen biztonságosan, szóval bőven elegek. Így a komplett robotkar mindennel együtt max 10000Ft volt Kiskereskedelmi áron vásárolva mindent! Ha kész leszel akkor akár írhatnál róla egy cikket is, szerintem sokan szívesen vennék. Neked meg okoznak túl sok plusz munkát, hiszen, már egyszer úgyis megírtad. Üdv Kiborg
Ha akad úgy pénzed akkor 25000FT ért lehet kapni asztali veller pákát, 150-450C-ig állítható az elektro konthába láttam, én egy ilyennel forrasztom az smd alkatrészeket, nagyon jól lehet vele dolgozni, viszont ha le akarod szedni akkor hőlégfúvó kell, olyan 6-7e körül szerintem kapsz aminek van szűkítője, ahoz meg már csak egy csipesz és egy kis folyasztószer, meg némi tapasztalat kell. Nagyobb hegyű pákával is megtudod oldani, ha a panelt előónozod, rárakod az alkatrészt és a lábakra érinted a pákát, vagy az adott lábhoz érinted a pákát és nyomsz oda egy kis ónt. Ha 2 lábat összefolyasztasz akkor ónszívó fonattal le tudod szedni a felesleget. Remélem segítettem.
A frekimérő témához, egy ilyen megfelelne a bemenetre? Bővebben: Link
Mondjuk egy 220-330 kOhm bázisellenállással open-collector üzemmódban, és még 1µF kondival.
Meg holegfuvo sem kell, csak jo technika. Amugy en egy Weller TCP-24-et hasznalok mar >10 eve.
Üdv
Egy kis segítség kellene. Összeraktam egy ILYEN órát. A programozást egy barátom csinálta pickit 2-vel. Működik rendesen, egy baj van csak, hogy a kijelzés nagyon villog. Arra tippelünk hogy a controller villogtatja mivel a belső órajelet nem tudtuk átállítani. Mert az oldalon van egy hivatkozás a Fuse bitekről. Ahogy mi kivettűk a leírásból, az Atmega alapból 1Mhz-en van, de át kellene állítani 0001-ről 0000-ra. A mellékelt képen látható programot használtuk. A "Program fuse bit" ablakban alapból ez van a kontrollerben: Cksel0=0 "kipipálva" Cksel1=0 Cksel2=0 "kipipálva" Cksel3=0 "kipipálva" Itt, ezeknél kellene módosítani, vagy hol? ITT az oldal alján a mutatja hogy mit kellene átírni, de ezt a programot nem használja. Előre is köszi.
Igen. 0001 re kell atirni, ahol az 1 a nem programozott allapot.
De a fotókon pont 0001-ről írják át 0000-ra. ?
És amire én kíváncsi vagyok, hogy a pipákat hová (cksel0=0, stb.) kell tenni, mert amit leírtam, az van most benne, nem lett módosítva.
Szia!
Csak értetlenkedek, a megoldást nem tudom... A leírásban a Fuse bitek részletezésében AtMega8535 -tel készült képek vannak, a belinkelt képen AtMega64 van beállítva, a kapcsolási rajzon pedig AtMega88 szerepel.
Sajnos nem tudok japanul. De ha latod, hogy 0000-at kell beleirni, akkor nem ertem miert kerdezed. De leegyszerusitem a kerdest: Van kulso orajel(vagy kvarc)? Ha van akkor 0000 mehet bele. 0 a bepipalt, azaz programozott allapot.
|
Bejelentkezés
Hirdetés |