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? ![]() ![]()
É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 ![]()
Ú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
![]() 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
![]()
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 |