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
Nekem működik ilyen nagy értékekre is.
Nem tudtam, hogy fel kell húzni. De köszönöm a segítséget!
A MOSFET kérdés még adott marad. Miért van az, hogy néha nem indulnak el a ventilátorok, se a LED-ek?
Ezt néztem.
Majd később:
De ctrl+c / v volt... Valaki leírná pontosan, hogy is műkszik ez? Illetve, az 1 másodperc nem 1 sec. Attiny13a-val dolgozom, a studioban a fogaskerékben, 4.8Mhz-t, O1-et állítottam be. F_CPU 4800000 Égetéskor, belső oszci 4,8mhz 14CK+64ms. De valahogy mégsem jó... Csúszik.. Valaki tud picit segíteni ezekben? Mi miért van. Akár priviben is. Köszi! A hozzászólás módosítva: Júl 5, 2013
Azért nem akartam, mert azt olvastam, hogy csak 65ms-t képes várni a _delay_ms.
Szerintem azért késik, mert a for() lefuttatása is idő.
_delay_ms(1000); teljesen jó lesz.
Nos itt a progi.
Ugye 1 ledes villogóval kezdtem az egészet. Valamiért nem 1 másodperc az időzítés.
Ezt égettem most be az attiny-be.
4.8mhz, O1. Fuse bit-eknél szintén 4.8Mhz van kiválasztva. De a led-ecském tuti nem 100ms-el billeg... Mit rontottam el? Vagy ennyire nem tuti a belső oszc.? up1.: átraktam mindent 9.6Mhz-re és kivettem próbaképpen a CKDIV8 pipát. Megy rendesen... Mi az a bizonyos CKDIV8? A hozzászólás módosítva: Júl 5, 2013
Char helyett int típusú változót használj.
Most akkor használható a késleltetés simán így is?
_delay_ms(1000) ? Műkszik.
Az annyit jelent, hogy 8-al osztja az órajelet. Tehát, ha 8MHz az órajel és a CKDIV8 aktív, akkor valójában 1MHz-el fut a processzor.
Értem.
9,6/8. Mindenhol átírom 1,2mhz-re. Ha 1,2mhz-el próbálok 1 másodpercenként villogtatni. Pontatlan lesz. Miért?
Ha feldobnád a kódot, lehet többet tudnának neked segíteni. Esetleg kapcs. rajzot is.
Sziasztok!
Pár hete rendeltem egy ATmega 16a mikroprocesszort, hogy tovább kísérletezhessek a 7 szegmenses kijelzőimmel, de elképzelhető, hogy hibás a processzor, mert a PORTC lábai közül csak 3 darab működik. Készítettem egy olyan tesztprogramot, hogy a port minden lábára kötött ledet villogtatja, de csak három darab villog a nyolc közül. Mitől romolhatott el, most mitévő legyek? Csak mert egy ilyen processzor nagyon drága ám. A hozzászólás módosítva: Júl 6, 2013
Valószinűlég kikell kapcsolnod a JTAG-et, a JTAGEN Fuse-val teheted meg.
Köszi, majd ha ráérek kipróbálom!
Alapesetben a JTAG BE van kapcsolva. A Fusebiteknél kapcsold ki!
Sziasztok!
Adott a következő program.
Az adatlapban szereplő képlet alapján 59,7kHz-es négyszögjelet kellene előállítania. Viszont amit kapok az feltehetően 20kHz alatt van, mert nagyon irritáló hangot ad ki ha piezot kötök a kimenetre. Valakinek valami ötlet hogy miért csinálja ezt. A hozzászólás módosítva: Júl 7, 2013
Elmagyaráznád pontosan mi is az a JTAG ? Mert nem igazán értem.
Köszi!
Debugolásra (hibakeresésre és nyomkövetésre) való protokoll, ami akkor is ül és fogja a proci lábat, ha nem használod. Google -> JTAG!
Sziasztok!
Most próblákozom egy rendőrlámpa projektel. Attiny13a. Az SCK, MISO, MOSI lábakra kötött ledek haloványan "égnek". Miért? Mi tévő legyek? Köszi! A hozzászólás módosítva: Júl 8, 2013
Közben rájöttem, hogy elfelejtettem megadni, hogy kiemenet.
Viszont másik kérdés. PB0 0x00 / 0b000000 PB1 0x01 / 0b000001 PB2 0x02 / 0b000010 PB3 0x03 / 0b000100 PB4 0x04 / 0b001000 PB5 0x05 / 0b010000 Ez így elvileg nem jó. A helyes ez: PB0 0x01 / 0b000001 PB1 0x02 / 0b000010 PB2 0x03 / 0b000100 PB3 0x04 / 0b001000 PB4 0x05 / 0b010000 PB5 0x06 / 0b100000 Ugye? up1.: Grr ez is badarság. Úgy műkszik már hogy (1<<PB3) vagy PORTB = 0b001000 stb. De, hogy kell ezeket hexába át írni? A hozzászólás módosítva: Júl 8, 2013
up2.:
0x04 a PB3-mas láb. De ha ezt írom PORTB = 0x04; majd késleltetés után PORTB &=~ 0x04; Nem "gyullad ki a led".. Illetve hogy tudok egyszerre két bitet 1-be állítani? Ugye azt szeretném, hogy a piros és a sárga egyszerre kezdjen el világítani.
A hozzászólás módosítva: Júl 8, 2013
Miért kell neked pont hexa, miért nem jó a bináris forma.
DDRB = 0b00000000; PORTB = 0b00000000; 0x04 az 00000100 vagyis 2es pin. A hozzászólás módosítva: Júl 8, 2013
Közben megvan az is.
Piros és Sárgát: 0b011000; Ha így szeretném leírni hogy: PORTB = (1<<PB3); plusz a sárgát? up1.: Nah csak sikerült.
Ebben a formában, hogy (1<<PB3) stb.. Hogy kell megírni? A hozzászólás módosítva: Júl 8, 2013
Teszel egy | -t. PORTB = (1<<PBx) | (1<<PBy) | (1<<PBz);
De ha azt akarod hogy a többi pin változatlan maradjon akkor elvileg PORTB |= kell.
Kizártam magam egy Attiny 44A-ból a fusebit-tel. Melyik a legegyszerűbb programozó amivel vissza tudom hozni az életbe?
Van soros és párhuzamos port is a gépemben. Avrdude-t használok Ubuntu Linuxon, parallel programozóval. |
Bejelentkezés
Hirdetés |