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ért, hogy az a sok "okosság", amit az előző hozzászólásomban írtam ne csak a levegőben lógjon, egy képet mutatnék. (tudom, inkább a ki mit épített fórumba tartozna).
Sok persze nem látszik rajta, de ha belegondolunk, mindjárt jobban érthető: ez egy hordozható frekimérő két bemenettel, LCD kijelzővel (ebben használom gtk LCD-s forrását). Ha nem jól helyezed el az áramköri elemeket, a bemeneti erősítő begerjedhet, vagy összeszedi az LCD által sugárzott zajokat. Mivel elég nagy zsúfoltság van a dobozban, nagyban számít, hogy hogyan pakolod be a sok lomot, hogy el is férjen, és még nullát is mutasson szerencsétlen, ha nincs bemeneti jel. Itt inkább jutok eredményre a prototípus, vizsgálat, újabb prototípus módszerrel, mint a próbapaneles megközelítéssel. A megoldás még így sem tökéletes, mert pl. mikor ki/bekapcsolom a háttérvilágítást, 1-2Hz megjelenik a kijelzőn. Ennyi azért belefér, cserében egy kézben elfér a cucc.
Ez jol nez ki! Mit tud? Kicsit OFF, de AVR ez is
Egy apró kérdésem lenne. ADC-vel beolvasott kelet szeretném kijelzőn megjeleníteni. Annyit találtam, hogy az itoa()-val lehet átalakítani, ami sikerült is valamennyire, de összevissza számok jelennek meg a kijelzőn.
Én innen nézném:
Bővebben: Link
2 bemenetes: 1. bemenet, az oldalon is olvasható PIC-es frekvenciamérőből lopott bemenettel, vagyis 1Hz-50MHz 1Hz pontosság, 2. bemenet:MB501-es osztóval, 64-et oszt, 10MHz-1GHz-ig elméletileg.
Itt találsz némi infót róla: Kapcs.rajz
Esetleg mellékeld az ide tartozó forrást is, hátha okosabbak leszünk. Az itoa() jó erre, de ki lehet váltani néhány sorral . pl.:int to string
Ez ötletet adhat, és persze több bájtos számokkal is működik. Volt, hogy nekem is össze-vissza karaktereket írt ki az itoa() után, de akkor nekem a stringre mutató pointer mutatott a semmibe.
Üdv.!
Az ebben a hozzászólásban lévő mintaprogramot hogyan lehet úgy módosítani, hogy a LED ne csak addig világítson, amíg nyomom a gombot, hanem ha megnyomom, kapcsoljon be, és ha elengedem, maradjon égve amíg újra meg nem nyomom?
Igen, és igen. A buffer törlése hiányzott. Azt beírva már működik is. Majdnem teljesen pontos is lett a leolvasott érték.
OK!
És a ledhez mit kell kötni? Amúgy tényleg jó lenne egy leírás laikusoknak, hogy mit hova kössenek és hogy töltsenek bele egyszerűen pl. egy kész hex fájlt az avr-be! Olvasgattam a tavir-es cikket, de minimum a felét nem értem!
Üdv urak szükségem lenne egy kis segítségre, lpt porton szeretnék win7 alatt felprogramozni egy atmega8 16 ostaz avr doperhez a "programozó" kábelem stk 200 az ha jól tudom a 10 9 7 6 lábakat használom plusz 18 felettiek földként bekötésnek. Mely programot lehet használni hozzá hogy működjön? Köszönöm.
Sziasztok!
Van egy kis problémám, vettem hestore-ból, egy HEKIT-301 (AVR-ISP) féle programozót! Jól működött, egy attiny2313-at többször is felprogramoztam(avr studio és bascom segítségével), de mivel szervóhoz akartam, 20msec-es jelet előállítani (fuse bitek azthiszem vagy mi), elkezdtem állítgatni az órajelet avr studioban, aztán egyszercsak avr isp error vagy valami hasonló hibaüzenet után nem tudtam programozni, aztán vettem egy új attiny 2313-at, hátha elcsesztem, de erre már alapból ezt a hibát írja! Van valami ötletetek, olyan mintha a programozót állítottam volna el...? Ajánlja, hogy az órajelnek az 1/4-dének kell lennie de nem teljesen értem! Az első oldalon, ahol a read signature van, ott is probálgattam más frekvencián semmi! Ötlet ? Köszi a segítséget előre is!
A Nokia 3310-es kijelzőmet összekötöttem egy ATmega162-vel. Eddig csak ATmega8-al próbáltam a programomat, azzal jól működött minden, ezzel most nem akaródzik menni.
Még annyi változtattam rajta, hogy eddig csak 3.3V-ról üzemeltettem a kijelzőt, a mikrokontrollert 5V-ról és az SPI busz lábak közé tettem egy-egy 1K-s ellenállást. Most ezt elhagytam, minden 5V-ról megy. Vajon miért nem jó? Találtam egy cikket, ahol 5V-ról üzemeltették és ment nekik?
Szia!
Nagy valószínűséggel átállítottad a Fuse biteket külső oszcillátorra. Próbáld meg azt, hogy teszel rá egy külső kvarcot és 2db 22pF-os kondit a kvarc lábai és a test közé. Az ISP frekvenciának az AVR órajelének 1/4-ének kell lennie. Tehát ha 4MHz-en ketyeg az AVR-ed, akkor 1MHz ISP órajel lehet a maximum. Érdemes a maximumra venni, mert gyorsabb a programozás. Vedd le 250KHz-re és úgy próbáld meg az új processzorod programozni.
Akkor most 3,3 V-ról megy, 5V-ról nem megy, jól értem?
Próbáld meg az inicializációs résznél az egyik értéket átírni, ami a kontrasztért felelős.
Valami ilyesmit keress, a második sorban nálam C8 volt beírva, és átírtam C2-re, így már ment 5 V-on. A PCD8544 adatlapjában azt hiszem benne van, hogy milyen határok között változtatható. Van egy belső feszültség-generátor, ami 7 V körül állít elő feszültséget az LCD vezérléséhez, ettől függ a kontraszt. Viszont ez a feszültség függ a tápfesztől.
Lehet, hogy egy kicsit furán írtam le.
Szóval. ATmega8-al működött, az LCD 3.3V-ot kapott, az AVR 5V-ot, az SPI lábak közt 1K-s ellenállások, a kijelző pedig külön stabilizátorról ment. ATmega162-vel, 5V-ot kap az LCD is és az AVR is és a képen láthatóakat látom a kijelzőn, vagy semmit. Kipróbáltam a kontraszt állítást, de sajnos nem használt. Átnéztem az SPI inicializálásnál az SPCR regisztert, teljesen ugyan az minden, mint az ATmega8-nál. Még annyit módosítottam rajta, hogy a külső kondi nem 4.7µF-os, hanem 1µF-os, de ez gondolom nem számít.
Ühüm. Akkor nem az a gond, mint nálam, nekem semmi nem jelent meg a kijelzőn, mintha be sem lett volna kapcsolva.
Egy AVR UART-ja vagy SPI busza milyen távolságot bír ki? Maximálisan milyen hosszú vezetékkel köthetem össze?
Körülbelül 40-50 m-t kellene áthidalnom vezeték nélküli modulok használatával. Valahogy megoldható ez, lehetőleg UART-al, mert ahhoz csak 2, esetleg 3 vezeték kell.
Köszönöm az infót, sajnos nem volt rajta.
Néztem már a google-n is, de ott sem találtam.
Megint itt vagyok I/O ügyben. Jól értem,h a portlábak (atmega8) nyitott kollektorosak és bekapcsolható a felhúzó ellenállás? Szóval totem pole-t nem tud?
A képen látható,h most mit szeretnék. Egy pnp tranyót meg lehet hajtani egy 5 V-ról járó atmega8-al nyitott kollektoros kimenettel? Van az a sejtésem,h nem és egy npn tranyó kell, amit felhúzó ellenállásos kimenettel kell kapcsolni. Jól tévedek?
Kimenetnél nem tudod bekapcsolni a felhúzó ellenállást.
Ha kimenet a láb, akkor az állapotát tudod megadni, tehát 1 vagy 0.
Ok! De akkor magától bekapcsolja a felhúzót, vagy totem pole?
Szia!
Keress arra, hogy keil C51. Én régen azzal fordítottam. (7.50)
Szia. Ha kimenetnek használod, akkor elvileg +20mA és -20mA-is tud. 1,0 szint.
Totem pole, mindket vege aktivan van meghajtva. Ha open drain vagy open collector szeru megoldast akarsz akkor un. tri-state modban kell vezerelned, de akkor sem lehet a felhuzas magasabb feszultsegen, mint a Vdd. Magyaran az sem igazi open collector.
Sziasztok!
ATMEGA16 bemeneteit próbálom kiolvasni (kapcsolókat szeretnék kötni rájuk.) a jelenség: - ha a bemenetet fixen GND-re, vagy VCC-re kötöm, akkor nincs gond, hibátlanul beolvassa a portláb értékét (0 vagy 1) - ha viszont a levegőben lógva hagyom, akkor teljesen megbízhatatlan, hol 0-nak, hol 1-nek olvassa be, mintha nem lenne felhúzó ellenállás... Az A portot használom, a 0..3 lábak kimenetek (LED-ek), a 4..7 lábak pedig kimenetek, felhúzó ellenállás bekapcsolva:
Szerintetek mi lehet a probléma? Petya |
Bejelentkezés
Hirdetés |