Fórum témák

» Több friss téma
Fórum » AVR - Miértek hogyanok
 
Témaindító: pakibec, idő: Márc 11, 2006
Témakörök:
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
Lapozás: OK   5 / 840
(#) szal válasza Ant hozzászólására (») Szept 16, 2006 /
 
Igaz, hogy én csak LINUX alatt használom . De ezen a címen,
http://www.lancos.com/prog.html
minden máshoz is van megoldás.
Üdv!
(#) szal válasza szal hozzászólására (») Szept 16, 2006 /
 
Elnézést kérek Mindenkitöl!
Az elözö válaszomban, igaz jó. De már nem aktualizált címet
adtam meg !
Amire gondoltam az a következö: http://avrburn.sourceforge.net/hu/index.html
Nem ad választ ugyan a Tyni2313 égetésére(!?), de ez egy
teljesen letisztult valami.:wave:
Csak ajánlani tudom. Természetesen elsö sorban UNIX-osoknak!
Viszont ehhez minden olcsón van beleértve az op. rendszert is!
(#) gtk válasza szal hozzászólására (») Szept 17, 2006 /
 
En is Linuxot hasznalok.Avr-gcc es avrdude.
C -ben fejlesztesz avr-re?
Azt szeretnem kerdezni ,hogy avr- projektet hogy debugolod milyen eszkozzel?
(#) szal válasza gtk hozzászólására (») Szept 17, 2006 /
 
Mivel ilyen "kis" méretü nem tartok célszerünek másképpen, mint
assemblerben programozni. A szokásos de 'fapados' eljárásom az, hogy -ha gond van ide berakok egy kis output rutint. Az igy kapott dump. Eddig még mindíg elég volt az elírás felfedezésére.
Természetesen ez egy 'tyni 8 lábú" eszköznél nem használható
eljárás. Ha ilyen környezetben van gond.Akkor sincsen baj. Mert a regiszter defek. cseréjével a progi szimulálhatja saját magát a kedvenc 'mega8-amon is. Itt már semmi sem akadályozhat meg a
fenti eljárás alkalmazására.
(#) szal válasza gtk hozzászólására (») Szept 17, 2006 /
 
Az elözö üzenetem elennörzés nélkül ment fel.
Elnézést érte! A javitott verzió ez,

Mivel ilyen "kis" progikat méretü nem tartok célszerünek másképpen, mint assemblerben megírni. A szokásos de 'fapados' eljárásom az, hogy -ha gond van ide berakok egy kis output rutint. Az igy kapott dump. Eddig még mindíg elég volt az elírás felfedezésére.
Természetesen ez egy 'tyni 8 lábú" eszköznél nem használható
eljárás.
Ha ilyen környezetben van gond. Akkor sincsen baj. Mert a regiszter defek. cseréjével. A progi szimulálhatja saját magát akár a kedvenc 'mega8-amon is.
Itt már semmi sem akadályozhat meg a fenti eljárás alkalmazására.
(#) gtk válasza szal hozzászólására (») Szept 17, 2006 /
 
Meg kerdeznek ha szabad

Milyen forditot hasznalsz assemblyhez?
Es melyik szintaxist hasznalod AT&T vagy Intel?
(#) d0b0s válasza Ant hozzászólására (») Szept 18, 2006 /
 
Szia !

AtTiny2313 -at avdude-al tudod programozni, soros letöltőn keresztül.
(#) szal válasza gtk hozzászólására (») Szept 18, 2006 /
 
Mégegyszer a tegnapi zavaros levélért, de sokan voltak a
'nyakamon'.
Én a TASM nevü "Thomas own assembler"-t használom.
Intel *.hex -et generálok belöle mert az illeszkedik a PonyProg
programozóhoz is.
Válasz csak akkor születhet, ha van kérdés
(#) andrewforest válasza szal hozzászólására (») Okt 1, 2006 /
 
Lenne egy problmémám PWM beállítással kapcsolatba...
ATmega8 TimerCounter1 16bites számlálójával valósítom meg a dolgot, és mikor az OCR1AH regiszterét beállítom egy értékre, az a következő lépésben mindig kitörlődik... az OCR1AL regiszternél nem jelentkezik ez a probléma, és nem tudom h mi lehet a gond... Csak szimulátor programban játszottam még végig a dolgot... lehetséges h a szimulátor program hibázik? Valakinek volt már ilyen jellegű problémája?
Please help!
(#) Dudus válasza andrewforest hozzászólására (») Okt 1, 2006 /
 
Kérlek pontosan add meg, hogy melyik regiszterbe milyen értéket töltöttél.
(#) andrewforest válasza Dudus hozzászólására (») Okt 1, 2006 /
 
Nem tudom h mind1ikre gondoltál-e, de leírom...

A PWM beállításánál:
TCCR1A - 0000 0001
TCCR1B - 0001 0001

ICR1H - 0010 0011
ICR1L - 0010 1000

OCR1AH - 0000 0010 -> Ezt az értéket törli ki beírás után...
OCR1AL - 1110 1110
(#) Dudus válasza andrewforest hozzászólására (») Okt 1, 2006 /
 
Ha jól látom ez egy frequency and phase correct 16 bit PWM (9).

Az adatlapon olvastad a 79-es oldalt, ami a 16-bites regiszterek kezelésére vonatkozott?

Írásnál először a H-t kell írni, majd az L-et.
Olvasásnál először az L-et kell olvasni aztán a H-t.

Van egy temp regiszter, amibe a H beíródik és az L írásakor egyszerre kerül a 16 bites regiszterbe. Olvasásnál, amikor olvasod az L-et a H beíródik a temp-be, amit ezután ki tudsz olvasni.

ldi r17,0xFF
ldi r16,0XFF
out TCNT1H, r17
out TCNTH1L,r16
.
.
.
in r16,TCNT1L
in r17,TCNT1H

.....

Valahogy így.

Zoli
(#) andrewforest válasza Dudus hozzászólására (») Okt 1, 2006 /
 
Köszönöm szépen a kielégítő választ! Ez valóban elkerülte a figyelmemet...
Akkor most meg is próbálom kijavítani...
mégegyszer köszi
(#) andrewforest válasza Dudus hozzászólására (») Okt 1, 2006 /
 
Megpróbáltam úgy is, de sajnos nem oldotta meg a problémámat, ugyan az történik... bemásolom a programrészletet, hátha az segít... tanácstalan vok...

ldi temp1, 0b10000001
out TCCR1A, temp1;
ldi temp1, 0b00010001
out TCCR1B, temp1;

ldi temp1, 0b00100011
ldi temp2, 0b00101000
out ICR1H, temp1
out ICR1L, temp2

ldi temp1, 00000010
ldi temp2, 11101110
out OCR1AH, temp1;
out OCR1AL, temp2;
(#) Gory válasza andrewforest hozzászólására (») Okt 1, 2006 /
 
Nem tudom hogy az hiba-e de az utolsó két sorban nincs 1b a bináris értékek előtt. És pontosvessző se kell utána. Esetleg még az lehet rossz, hogy valami interrupt elrontja a temp-ek értékét, amire nem figyelsz.
(#) Dudus válasza andrewforest hozzászólására (») Okt 1, 2006 /
 
Nos az OCR1AH és L Double buffered PWM-módban. Tehát, ha jól értem, akkor a fenti regiszterek csak TOP ill. BOTTOM - nál frissülnek így jön létre a glitch free PWM. AZ OCR1H nem olvasható az előző hozzászólásban említett Temp regiszteren keresztül. Tehát a H csak írható, de PWM-módban nem tudod kiolvasni csak az L - et. (85,86. oldal a leírásban)

Zoli
(#) andrewforest válasza Dudus hozzászólására (») Okt 1, 2006 /
 
Most nem igazán értettem amit írtál... jelen esetben én nem akarom kiolvasni az OCR1AH-ból az értékeket, csak bele akarok írni, tehát ezt csak TOP és BUTTOMnál tudom megtenni? Vagy ezt hogy csináljam?.. Bocs az értetlenkedésért...
(#) Dudus válasza andrewforest hozzászólására (») Okt 1, 2006 /
 
Igen. Amikor beírsz adatot, az először a bufferbe kerül és TOP vagy BOTTOM-nál kerül a helyére. Valamint az OCR1AH-t csak írni tudod, nem tudod kiolvasni, hogy tényleg bele került-e. Hidd el ott van.

Zoli
(#) andrewforest válasza Dudus hozzászólására (») Okt 1, 2006 /
 
Mostmár érthetővé vált számomra... Köszi a segítséget!

András
(#) MaSTeRFoXX válasza andrewforest hozzászólására (») Okt 4, 2006 /
 
Sziasztok!
Az Atmega128-nál a PORTF felső négy (portf.4-portf.7) bitjével kell valami különlegeset csinálni, hogy digitális kimenetként használjam, vagy egyszerűen le van égve nálam ez a négy bit a portból. Próbáltam már bascom-AVR-ben és WinAVR-ben is, de hiába rakom a DDRF-be 255-öt, aztán írok villogtató programot, erre a portra, ez a négy bit nem akar menni nálam.

Most a program rossz, vagy a proci?
(#) MaSTeRFoXX válasza MaSTeRFoXX hozzászólására (») Okt 4, 2006 /
 
Asszem én vagyok a :lama::lama:

A JTAG be volt kapcsolva..... Most néztem meg az adatlapot.....
Már arra készültem hogy vennem kell egy új procit, mert valahogy leégettem.......
Hátha más is tanul a hibámból....
(#) Dudus válasza MaSTeRFoXX hozzászólására (») Okt 4, 2006 /
 
Van pár dolog, ami lefoglal portokból lábakat. Én ezen a téren már elrontottam mindent, amit lehetett ))))
(#) MaSTeRFoXX válasza Dudus hozzászólására (») Okt 8, 2006 /
 
Újra én vagyok
A WinAVR-ben vagyis C nyelven az unsigned és a signed között mi különbség van? pl az uint8_t és az int8_t között?
(#) dpeti válasza MaSTeRFoXX hozzászólására (») Okt 8, 2006 /
 
unsigned - előjel nélküli számábrázolás a változóban
signed - eljőjeles számábrázolás.

Pl 8 bites változónál az unsigneddel 0-255-ig ábrázolhatsz, signeddel meg -128 -től 127 -ig (kettes komplemens ábrázolás)
(#) deguss válasza MaSTeRFoXX hozzászólására (») Okt 8, 2006 /
 
Szia!

signed = "előjeles", tehát pl. "signed char" (alapból signed) -127-től +126-ig megy, "unsigned char" = előjel nélküli 0-255-ig. De mindegyik logikusan csak 1 byte.
AVR-éknél az uint8 = 8 bites unsigned integer, ami 0-255-ig megy, az int8 pedig a fentiekben leírthoz hasonlóan -127-től +126-ig.
uint16: 65535-ig, míg int16 -32767-től +32766-ig.
uint32: ~4,3mrd-ig.

Remélem tudtam segíteni.
(#) deguss válasza dpeti hozzászólására (») Okt 8, 2006 /
 
a francba. megelőztek.
lassan gépelek.
(#) MaSTeRFoXX válasza deguss hozzászólására (») Okt 8, 2006 /
 
Köszi mindkettőtöknek !

Most már értem miért nem ment a for ciklusom signed-al. mivel az csak 127 ig van

for(uint8_t i=1; i<128; i++)
{
PORTD=255;
}
Még csak tanulom a C-t.... Ismeretlen, de tetszik! :yes:>
(#) deguss válasza MaSTeRFoXX hozzászólására (») Okt 8, 2006 /
 
Egyszer el kell kezdeni!
Jó az assembly, de nem mindenre.
Amit egyszer a saját kárán/kínlódásán tanul meg az ember, azt tuti nem felejti el!
Nah, jó programozást!

Üdv. deguss
(#) szal válasza Pavel hozzászólására (») Okt 9, 2006 /
 
Szia!
Milyen progi van az "stk200" mögött, amikor LINUX-on
használod?
(#) gtk válasza szal hozzászólására (») Okt 9, 2006 /
 
Szia.

Ha az egetore(letolto progira) gondolsz,akkor avrdude van mogotte,en is ezt hasznalom.

Bocsi Pavel hogy belekotyogtam


Deguss:

Idézet:
„AVR-éknél az uint8 = 8 bites unsigned integer”

Az uint8 mint tipus = unsigned char-al. 8 bites elojel nelkuli.
Következő: »»   5 / 840
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem