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
Köszi a segítséget!
Hozzá is fogok programozni. Karaktereket már ki tudok írni, bár azt is elég körülményesen. De haladok...
Köszönöm, azt kikapcsolva érzésre jónak tűnik
Kicsit már kitérek az AVR-ektől, de az alapgondolat innen indult, és a végén még valami használható jön ki belőle, szóval ink ide írom, ha már innen indult az egész mizériám.
Próbálkoztam, és elég elkeserítő a 8051 és minden hozzá tartozó mizéria.... TAVIR AVR MKII klón nem képes programozni a z AT89S52-es 8051 chipet A sablonos Enetring programming mode: FAILED Leaving.....FAILED.... 2 próbálkozásom volt eddig. Egyszer XE251 környezetben, assemblyben írtam rá egy programot, és annak a HEX fájlját próbáltam beírni. Ekkor alapban reklamált már a HEX fájl miatt is. Második lehetőségnek próbélkoztam a uVision-ben írt programommal, vagyis annak a HEX fájl-jával. Ekkor a HEX miatt nem panaszkodott, de jól ismert Entering..... FAILED! szöveget megint lenyomta a senkiházija.... Mindkét esetben az AVR Studio 4.18-as verzióját használtam a beégetésre. A programozó választásakor értelemszerűen átállítottam az AT89S52-re. A lábak bekötését legalább 10X ellenőriztem. A mai nap szerintem még fogom vagy 20X. Még van reményem abban, hoyg AVR Dude alól-ami még az életben nem volt kezemben, szóval szép baleset lesz az is - próbálom beprogramozni. Bár nem tudom elképzelni, hogy nagy különbség lenne. Sikolymester! Néhány sorral lentebb írtad hogy te a Silabs debugger-t javaslod, ami olcsó és jó. Hol lehet ilyet venni? Én neten keresgéltem, de nem igen találtam. És mi az-az olcsó? Én a TME-n találtam egy ilyet, de az a 30.000-40.000 FT körüli árával nem tűnik olcsónak, nem is beszélve a képnélküli, szegényes leírású weblapról ahol találtam... Bővebben: Link Elsődleges szempontom az USB-s felület lenne, de ez 8051-nél ritka mint a fehér holló. Amikor meg engedtem volna az USB felületből, akkor már a 80C552-es chiphez ragaszkodtam volna, ami viszont csak sorosan programozható. Ehhez is csak a suli miatt ragaszkodnék. Bár itt előny, hogy találtam egy oldalt, ahol emberi fogyasztásra alkalmas áron adnak ilyen chip-et, de itt is a falat kaparom a semmitmondó panel leíráson.Bővebben: Link Bár itt sem írja egy szóval sem, hogy mégis mi a túrón keresztül programozható maga a chip..... Bár tény: ha 80c552-n maradok csak ezt vehetem meg, mert ilyen chip-et magában sehol nem találtam magyar földön, sőt még külföldin is csak 1 weboldal ha volt. Ne nézzetek hülyének mert én nem ragaszkodnék a 8051-hez semmi téren. AZ tény, hogy talán a lehető legkönnyebben felfogható chip, de csak a Kandó miatt(mivel ott ezt használjuk majd a PLC és PIC mellett) ragaszkodom ennyire a 8051-es chiphez. Valakinek valami reménysugár szerű ötlete esetleg? Hol lehet kapni USB-s 8051 programozót, vagy ezt az említett emberi árú Silabs debugger-t, vagy akármi 8051-es használható cuccost? Ha annyira lehetetlen a dolog minden téren, akkor kénytelen leszek aszteli gépre bbefektetni... és akkor aztán lesz ne mulass, ha gyakorlatilag bármit programozhatok sorosan.... bár az se olcsó mulatság
Én konkréten erre gondoltam. 35 USD a gyártótól rendelve, gondolom megcsapva egy kis postaköltséggel. Szóval olyan 10.000 Ft körül. Tessék FDH-nál ~11.000 Ft-ba kerül.
Ezzel a Silabs 8051-eseket tudod debuggolni. Láttam már akcióban KEIL IDE-ben, engem meggyőzött. Érdemes körülnézni a Silabs oldalán, van mindenféle 8051-esük USB-s is például. Bár, ha rajtam múlik én lebeszélnélek róluk, de ha 8051 a cél, akkor szerintem Silabs a válasz
Én is lebeszélnélek a drága cuccok és az alacsony (hazai) felhozatal miatt, ettől függetlenül Keil+Silabs a nyerő. A BME-n is van egy 8051-el foglalkozó tárgy, és ha a labort is felveszed akkor egy ILYESMI csomagot is megkapsz tökingyen, de csak akkor tarthatod meg ha el is végzed(5 vagy 6 laboralkalom beugróval, írásbeli, nagyházi paneltervezéssel és programozással). Az én csomagomban elem nem volt, a panelen 2 darab DB9(tehát USB nem) amiből az egyik RS-232 a másik CAN busz, és még egy RS-232 hosszabbító kábel is figyelt benne.
Az MKII-k (elvileg) ismer(het)ik a 8051-et. Legalábbis a listában felhozzák...
A 8051 fórumokban eléggé vegyes eredményekről számoltak be - volt akinek ment, de a jellemző az inkább nem. Tipp: olyan 8051, ami beépített USB-s és OTG-vel bír? Igy belső bootloader van és az tölti fel... Bár kérdés mennyire 8x51 a HW így belül. Atmel oldalon a x51 USB önprogramozós kiadásából a FLIP-l töltheted fel a programot. Ebben a köv. chipeket írja most: AT89C51 - Rx2/Ex2/Ix2 series: at89c5115/5130/5131/5132/51ac2/51ac3/51cc01/51cc02/51cc0351ed02/51rb2 ... Ehhez elég egy USB port + atmel FLIP programja.
Köszi a választ mindenkinek!
Sajnos nekem sem szimpatizál annyira ez a 8051, de hát ha azt mondják ezt is tudni kell, akkor nincs mit tenni Sikolymester Szerintem ez lesz az én választottam, de leghamarabb nyáron fogok neki a 8051-es vásárlásnak és programozásnak. De köszi a linket. Pont valami ilyet akartam! Zombeee A BME-s meglátás jó, csak én Kandón vok, szóval ez kilőve. Bár ha nagyon akarnám úgytudom lehetne más-más iskolában is végezni adott tárgyakat, de azért ennyi macerát még egy 8051 sem ér meg. Sőt szerintem a TO-s asszisztensek is csak pislognának TavIR-AVR Az USB-s OTG számomra már-már kínainak hangzik, de kezdőként ezen nem akadok fel. Végülis kezdetben sem azért vettem az MKII klónt, hogy 8051-ezzek vele, csak annyira feldobott hogy lehet vele kezelni 8051-et, hogy nem hagyta nyugton a fantáziám. De végülis AVR-re, amire vettem nekem tökéletesen megfelel.
Ti milyen megoldással oldottátok/oldanátok meg két egész szám hányadosának kiírását az LCD-re?
Pl int a = 3; int b = 4; és én a/b-t akarom az LCD-re íratni.
Jah, még valami.
Tudnátok ajánlani egy olcsó AVR programozót amivel lehet AVRStudioban debugolni? Steb-by-step futtatni a kódot, stb...
szia, en ugyan s*** hulye vagyok AVR programozasbol jelenleg, de szoftverfejlesztokent mondhatom, hogy
kodot nem tudod egymassal elosztani, ugyanis ezek integerek. Ha tizedes pontossaggal akarod kiiratni, akkor elso korben hasznalj
Esetleg ezt a tutorialt nyalazd vegig, szerintem egesz jo:Bővebben: Link
Ha már érthető a kapcsoló, akkor valami tanácsod lenne az eredeti problémára. 9v-os táp (elem) egyik állás óra előre számol, másik állás óra vissza számol. Vagy jó az Én elgondolásom a zéner meg a sok dióda? Köszi
Itt keress pl. JTAG-ICE USB 2 vagy Dragon.
Sokan elfelejtik, hogy a típuskonverziót "ki kell kényszeríteni", mert ha csak simán float c, akkor is levágja mert a hányados képzés int-ben történik. Kiíratáshoz pedig gondolkozz egy kicsit , mert ez nem szintaktikai probléma, hanem szemantikai.
Úgy látszik több hibát is vétettem:
1. változók deklarálását be kellett tennem a main()-be 2. "ki kellett kényszeríteni" a konverziót (köszi a tippet!) Kiírást csak ilyen bonyolultan tudtam megoldani, de hogy kellene ezt igazából?
Az MSC-s "JTAG USB 2" mellett (ami nem keverendő a JTAGICE mkII-vel!) utánépített változatok is léteznek kb. fele/harmada áron, és a JTAG ICE sokak által(köztük jómagam ) ismert szerkezetéből adódóan körülbelül ugyanazt tudják.
Ha valami gyári eszközre fáj a fogad akkor is lebeszélnélek, helyette a Dragont venném meg. integer vs. LCD: Hát ez jó kérdés, egy részét megválaszolták előttem: Nem szintaktikai kérdés hanem formai. Én fixpontos logikát használok, de nem ajánlom kezdőknek mert matek is kell hozzá. Egyébként úgy érdemes konvertálni hogy az osztandók már eleve float-ban legyenek, vagy osztáskor kasztold őket. Több memóriát és stack-et zabál de másképp nem megy:
Ezután először lebontod az egészrészt 10-esével osztogatva, majd a törtrészből 10-esével szorozgatva a törtrészből építed fel a tizedesponttól jobbra álló számsort tetszőleges pontossággal, de a sztring méretét ne lépd túl! Felesleges 200 karakter, egy átlagember számára olcsón elérhető LCD-n is max. 24 karakter van egy sorban...
Én ennél csak bonyolultabb kiíratást tudok , ami nem mellesleg lassabb is, mint a tiéd.
Valószínű nekem címezted, az itoa() épp nem jutott eszembe és kapásból írtam a saját kreálmányom...
Ettől függetlenül a műveleteket a már azelőtt float-ba kasztolt változókon kell elvégezni.
Nos, bajban vagyunk. Googlenak egy találata van erre: M9S08AC128 , mégpedig az általad feltett kérdés.
Pontosíts légyzi a kérdéseden, szerintem ezért sem kaptál senkitől választ, mert senki sem érezte magát relevánsnak.
Gyerekek, mar miert ne lehetne ket int tipust elosztani egymassal? Max az egesz reszet kapod csak meg -- viszont egy kis trukk:
Tegyuk fel, hogy ket tizedes pontossag nekunk elegendo, ekkor ugye 10^2 azaz 100-al szorozzuk az osztandot, majd ugyanennyivel osztunk az egesz reszhez, es ha a tort resz kell akkor az egesz reszt kell kivonni az eredmenybol:
Ennek azt kell kiirnia, hogy 0.75... 4/4 eseten 1.00 es 5/4 eseten 1.25 (gcc-vel teszteltem)
Jó trükk.
Arra érdemes figyelni, hogy értelemszerűen egy uint16_t változó maximális lehetséges értéke csökken két helyjeggyel. Vagy eleve tudjuk, hogy nem lesznek ekkora számok, vagy éppenséggel typecastoljuk uint32_t re a művelet közben. Amúgy szerintem nem úgy értették, hogy osztani nem lehetséges int-tel, hanem arra gondoltak, hogy a tizedesjegyek elvesznek. Közben meg ugye pont tizedest akart kiíratni a kérdező.
Röviden ez lenne a lényege a fixpontos logikának. Köszi, ennél egyszerűbben nekem se ment volna a leírása...
Szia!
Közben agyaltam a folyamaton, és arra gondoltam, hogy az általam beírni kívánt programot nem is muszály kiolvasnom, ha nem megy, megvan egy bootloaderes formában a hex. Viszont az egy üres chip-be nem fog belemászni. Arra gondoltam, hogy esetleg így is be lehetne tölteni. Viszont bootloadert még nem alkalmaztam. És az avr-ekkel is nemrégiben kezdtem el foglalkozni, és még csak az információgyűjtés fázisában tartok. Erről a chipröl van szó és egy kisebb volt eredetileg, csak a frissebb programja már ebben fér el csak, az eredeti chipben nem. Azt akartam kiolvasni, hogy a régi progit beteszem az új chipbe, majd bootloaderrel frissítem. Ez volt a tervem. De nem olvassa eddig nem jött össze. ezt ajánlotta az eladó, a probléma megoldására, miután felkerestek, hogy segítenek szivesen. Bocs, ha sokat írtam.
Ez is működik de hogy etetem meg az lcd_pustr() függvénnyel?
Jóvan, megtaláltam Ricsibácsi C könyvében.
Csak meg kell tanulni ezt a nyamvadt C nyelvet...
Sziasztok nézegettem az ATmega8 - ban a Timer1 működését, de nem teljesen világos. Egy dallamcsengőt szeretnék készíteni, ehhez kellene először egy jelgenerátor, ami pl. létrehoz egy 880Hz frekvenciájú 50% - os négyszögjelet. Szóval a Timer1 inicializálásában szeretnék segítséget kérni (TCCR1A , TCCR1B beállítása) előre is kösz
Lehet hogy a Timer0 is kielégíti az igényeidet, de mind1, megmutatom hogy kell Timer1-ben.
Első a timer előosztója. Mivel kis frekik kellenek de nem árt ha pontos is, az előosztó legyen 1. Nem írtál órajelet(minél nagyobb annál pontosabban időzíthető) így most a 8MHz-es belső oszcillátorra építek. A jeledhez azt a Fast PWM módot ajánlom, ahol a "TOP" mezőben az "ICR1" áll. Ez azt jelenti hogy a számláló, amikor eléri a 16 bites ICR1-be beállított értéket, az lenullázza magát és az elejétől indul újra az egész. Mivel 8000000/880~=9091, az ICR1-be 9090-et kell beállítanod. Ezután jön a kimenet beállítása. Ha azt akarod hogy 50% legyen a kitöltés, akkor a számlálónak ezen érték felénél 4545-ön kell valamit csinálnia. Ez a valami a komparálás, ilyenkor a kimenet polaritást vált. A másik váltás a számláló újraindulásakor történik, ellenkező irányban. Ha az OC1A kimenetet használod akkor a szintén 16 bites OCR1 regiszterbe kell a 4545-öt beleírni. Ezután az OC1A kimenetetet kell a timer számára beállítani a COM1A1:COM1A0 bitekkel("1:0" érték). Ennek hatására komparáláskor(OCR1A) LO, a timer újraindításakor(ICR1) HI állapotba kerül a láb.
Köszönöm a választ sikerült megoldani a problémát. Egyébként a CTC módot használtam, tehát amikor a TCNT1 eléri az OCR1 - ben megadott értéket, az lenullázza magát és átbillenti az OC1A lábat. Köszi a segítséget
CTC-ben is működik, de hangmagasság váltásakor problémákat okozhat. Kis szerencsével egy kattanást vagy semmit nem hallani, szerencsétlen esetben a számláló körbe fog futni és rövid időre csönd lesz...
Most próbáltam egy ADC-s példát. Ha tápfeszre kötöm, akkor 1023 az érték, ez ok, de ha a földre akkor olyan 15 körül ugrál. Ez jó ez így?
|
Bejelentkezés
Hirdetés |