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
Az amplitúdó mérése szerintem egyszerű. Ha valamely pillanatban kíváncsi vagy az aktuális amplitúdóra, akkor indítasz egy ADC sorozatot mindaddig, amíg a következő mérés az előzőnél nagyobb eredményt ad. Az utolsó ~20 mérést átlagolod, hogy ne egy zavarra hidd azt, hogy lokális maximumnál vagy. Amikor az átlagérték elkezd csökkenni, akkor tudod, hogy a lokális maximumnál vagy, tehát elérted az amplitúdó tetejét. Ugyanezt elvégzed az amplitúdó aljára nézve is, csak ott ugye lokális minimumot keresel
Azt, hogy milyen gyorsan vezet ez eredményre természetesen a mérendő jel frekvenciája fogja befolyásolni, hiszen meg kell várnod azt, amíg a jel a legalsó állapotából eléri a maximumot. De szerintem mérési elvnek ez megállja a helyét. Anélkül, hogy megnézném az adatlapját az atmega8-nak én kimerem jelenti, hogy ezeket a frekvenciákat képes megmérni gond nélkül.
Megpróbáltam de sajnos nem sikerült valamiért. Beállítottam Proteusban egy 164Hz-s jelet 5V-os amplitudoval és csak 34-et kaptam vissza.. Pedig 1023-nak kellene lennie szerintem. A kód a következő Bascomba:
Sajnos nincsen ráállva a szemem a Basic nyelvre. De nekem valami kapásból gyanús:
Ha jól látom Amp1 és Amp 0 ra van inicializálva, tehát a while ciklus elindul. Ezután bármi jön ki a Getadc(3) parancsból a 0-t kivéve azt eredményezi, hogy a while ciklus egyből leáll, mivel az nagyobb lesz az Amp1-nél. Gondolom a proteus szimulátor, amire oda jut, hogy ADC-zen, akkor a generált jel mindig pont 34-es ADC értéknél van, ami az említett okok miatt egyből vissza is tér vele és kiírja. Szóval gondold át ezt az algoritmust. Az elv amit mondtam szerintem jó. Csak a programozói skillen múlik, hogy menjen is.
Na úgy néz ki sikerült megoldani. Ez már megközelítőleg jó eredményt ad. Egy picit téved de ez már nem annyira vészes.
Kérdés az hogy ez mennyire pocsékolja nekem a memóriát? Mert az eddigi program is már 54%-ot ír fordításkor..
Sziasztok
Ezt hogyan tudnám beírni c-be? (AVR Studioba akarom, kép mellékelve)
Ezt használd: http://www.nongnu.org/avr-libc/user-manual/group__avr__math.html
Includeolod a math.h headert, majd szemezgetsz a szükséges függvényekből.
Sziasztok
Van egy olyan problémám, hogy nem fut végig a programom, és nem tudom hogy miért. A programba beleírtam a fentebb már csatolt egyenletet, de amikor kiakarom íratni a helyiértékeket, onnantol error-t ír ki, és nem is nagyon tudom mire, "multiple definiton of __floatunisf"
Szerintetek mi lehet a hiba? Üdv, yoman
Igen, azok fix képek, amiket kirajzolok csak. De még 1bit-es színmélységgel is sok helyet foglal relatíve, így meg kell majd oldanom a rajzoltatást. Egyszerű, négyszögnél nem gond, ha lekerekítést is akarok, az már érdekes lesz... De egyelőre húzódik a projekt befejezése, találtam érdekesebbet...
Szerintem masold ide a fordito outputjat, mert ez igy keves ahhoz, hogy segitsunk.
A kiolvasás elleni védelem:
- Verify & Read Flash section: DISABLE - SPM & LPM BOOT section: DISABLE - SPM & LMP Flash section: DISABLE Ha ujra akarod irni a chipet ERASE chippel lehet... Ekkor a lockbit es a chip tartalom is törlődik.
Sziasztok. Olyat lehet esetleg AVR-ek esetében, hogy Khazama-ataval kiolvasom az EEPROM tartalmat és azt vissza tudom fejteni valami úton módon hogy a benne tárolt változóknak mi az értéke? Vagy ez hülyeség? Ki kellene valahogy szednem a gépen az EEPROM-ból az értékeket.
Sziasztok
Remélem erre gondoltatok az output alatt. Üdv, yoman
Ülj le fiam, egyes!
A viccet félretéve: 1: Az "F_CPU"-t mindig a delay.h behívása előtt adjuk meg. Én mindig a legeslegelső sorba beírom. 2: Az elsőben még "#include 3: Az 1-es hiba javítása után az összes warning eltűnt...
Sejtettem hogy valami nagyon piti a hiba forrása. A warningok eltűntek, de sajnos error miatt megáll az egész. Nem tudok mire vetni
Üdv Mindenkinek!
Nincs meg véletlenül a következő AVR programozó nyákterve valakinek Sprint Layout formátumban? Köszönöm!
Attól függ, mi számít "következő"-nek...
Amúgy én Eagle-ben dolgozom, ebben terveztem már AVR Doper, AVRISP, AVRISP-mkII, JTAG ICE programozót, a bufferelt AVRISP-mkII terve is majdnem kész...
Sziasztok!
Arduino-val kapcsolatos kérdésem lenne. Van egy Arduino UNO-m és hozzá szeretnék egy CAN-BUS shieldet társítani. Ez működik már! De egy ADXL335 3 tengelyes gyorsulás mérő modul is kellene. A CAN shield az analóg bemeneteket is felhasználja. Gondoltam hogy be kellene ruházni egy Arduino ATMega 2560-re, mivel annak jóval több a analóg inputja. Lábkiosztása fizikailag megfelelő a CAN shield fogadására, de a digitális portok úgy tudom nem ugyan ott helyezkednek el mint az UNO-n. Kérdésem, hogy ha a MEGA-ra kötöm a gyári CAN-BUS shieldet működni fog attól, hogy nem ugyan oda illeszkedik mint az UNO-n. Előre is köszönöm a válaszokat.
Igen, ez majdnem egy Doper lesz, de ahogy nézem, inkább USBASP.
Megbántani nem akarlak, de én inkább egy STK500/AVRISP-re beszélnélek rá, nem bonyolultabb megtervezni és még gyorsabb is lesz, és AVR Studio is támogatja. USB illesztőnek MCP2200-át ajánlok, az elérhető SOIC változatban is.
Nem tudom milyen CAN shield-ed van (foleg azt nem hogy milyen egyeb eszkozoket raktak meg ra). Amit neten neztem, azon volt egy kis joystick, annak kellettek az analog bemenetek. Maga a CAN-BUS ha jol neztem csak az SPI-t hasznalja.
Egy megoldas lehet az is hogy a CAN shield-et nem rakod ra az Arduino-ra (pl rateszed egy probapanelra), es csak azokat a labakat kotod ra ami a shield tapellatasahoz, es a CAN kommunikaciohoz kell (SPI). Az analog bemenetekre meg rakotod a gyorsulasmerot. Ha nem akarsz vezetekdzsungelt, akkor hasznalhatsz egy Arduino + protoshield + CAN-BUS shield szendvicset is, ahol az analog bemeneteket a protoshield-en oldalra kivezeted, igy a rameno CAN shield analog csatlakozoja nem lesz az Arduino-ra kotve.
Nem csereszabatosak a lábak.
A Mega Shield egy zsákutca. A joystick az analog labon van-> I2C foglalt. SPI - kissé vegyesfelvágott, de arra egy SPI->AD konverteren át felrakhatod. Vagy egy 1Wire (DS2450) AD mérőre. Egyszerűbb sokkal..... (CAN panelt most élesztem én is a nyáklapok megjöttek, már csak ültetem és megy a kocsiba/próbapadra mérni ) Persze szintén Arduino alapon...
Köszönöm a gyors válaszokat!
A CAN-BUS modulom így néz ki: Bővebben: Link és a lefoglalt "lábak". Nem nagyon szeretnék proto shieldet használni,vagy maximum csinálok egyet. A CAN shield-hez még van egy 2soros LCD meg egy EM-406 GPS modul is és uSD kártyára loggol. Uhhh TavIR-AVR köszönöm, csak nem nagyon értem Ez a kép szerint kompatibilis a shildekkel: Bővebben: Link Köszönöm
A mega lábai NEM funkcióazonosak pozíció szerint.
Ezért macerás az átalakítás. A szabad lábakat próbáltam körbejárni, hogy azokon analóg jelet hogyan lehet megfogni...
A kiegészítő LCDről lehet tudni bővebbet?
A CAN-Shieldhez....
Sziasztok adott egy program amit arduino-ra írtak ezt valahogy rá lehet húzni egy sima AVR-re?
A válaszotokat előre is köszönöm
Rá.
Komolyra fordítva: amíg elég láb van addig mindent lehet. De miért nem szúrod be a kódot?
Mert ez csak egy elméleti kérdés volt tudod a kíváncsiság az igazat meg valva kezdő vagyok....
Persze!
Majdnem ugyan így néz ki az enyém is csak piros a CAN shield . A Lcd modul is ugyan ez. Bővebben: Link |
Bejelentkezés
Hirdetés |