Fórum témák

» Több friss téma
Fórum » PIC18F4550 vs TC74 hardware-es I2C-vel hogyan?
Lapozás: OK   2 / 2
(#) icserny válasza ldani hozzászólására (») Jan 12, 2009 /
 
Innen látatlanban nemlehet kideríteni az okát. Nekem egy hasonló IC-vel ez a sorozat jött ki:
[quote=text]The board temperature is 26 degrees Celsius.
The board temperature is 25 degrees Celsius.
The board temperature is 25 degrees Celsius.
The board temperature is 26 degrees Celsius.
The board temperature is 26 degrees Celsius.
The board temperature is 26 degrees Celsius.
The board temperature is 27 degrees Celsius.
The board temperature is 26 degrees Celsius.
The board temperature is 25 degrees Celsius.
The board temperature is 25 degrees Celsius.
The board temperature is 26 degrees Celsius.
The board temperature is 25 degrees Celsius.
The board temperature is 25 degrees Celsius.
The board temperature is 26 degrees Celsius.
The board temperature is 26 degrees Celsius.
The board temperature is 25 degrees Celsius.
The board temperature is 26 degrees Celsius.
The board temperature is 26 degrees Celsius.
The board temperature is 26 degrees Celsius.
The board temperature is 26 degrees Celsius.
The board temperature is 26 degrees Celsius.
The board temperature is 26 degrees Celsius.[/quote]

Az átlagolt sorozat valamivel jobb (pl. nincs benne 27), de a két szomszédos érték közötti vacillálás teljesen normális.
(#) ldani válasza icserny hozzászólására (») Jan 13, 2009 /
 
32 mintát átlagolva és a konkrét minták vétele között 200msec időt várva egész korrektül mutatja a hőmérsékletet.
A mintákat én is ki akarom gyűteni (jelenleg csak egy int-ben szummázom, aztán a ciklus végén osztok), de ahhoz pl eepromba le kellene tárolnom őket.
Kiváncsi vagyok, hogy mennyire csökkenthető a minták közötti várakozási idő.
Az eepromnak nekiesek, aztán ha lesz eredmény megírom.
(#) icserny válasza ldani hozzászólására (») Jan 13, 2009 /
 
Idézet:
„Kiváncsi vagyok, hogy mennyire csökkenthető a minták közötti várakozási idő.”

Nálam a FlashForth 3.3 i2c mintaprogramjában 80 ms a várakozási idő.

Átlagolásnál pedig úgy látom, hogy 64 mintát átlagol.
(#) szilva válasza ldani hozzászólására (») Jan 13, 2009 /
 
Ha az i2c kommunikáció megy jól, akkor én azt gondolom, hibátlannak tekinthető a működés.

Az értékek szórása adódhat pl. abból, hogy a többi áramkör által termelt digitális zaj a tápfeszültségen keresztül befolyásolhatja a mérést. Én a TC74 tápfeszültségébe tennék egy soros ellenállást (akár párszáz ohm is lehet, a TC működési áramfelvétele maximum 350uA az adatlap szerint, ez maximum néhány tizedvoltot jelent), és egy pár µF-os tantált is a ~100nF kerámia mellé az IC táplábaihoz.

Átlagolásos eredmény kiszámolásához ne az EEPROM-ot használd, mert annak az írási ciklusainak száma véges! Ilyen esetben inkább a RAM-ban kellene egy FIFO jellegű buffert kialakítani.

32 vagy 64 minta átlagolásánál már lehet, hogy jobban jársz, ha egy digitális aluláteresztő szűrőt valósítasz meg. C-ben nem olyan bonyolult, asm-ben már inkább, mivel valós számokkal illik számolni. Ilyenkor azonos időközönként kell mintát venni a hőmérőről, és ezt beküldeni a szűrőbe, a szűrő kimenetét pedig aktuális értékként kezelni (kiiratni, vagy amire épp szükség van).

Itt lehet pl. szűrőket számíttatni anélkül, hogy nagyon sokat tudni kellene az elméletükről (akár C kódot is tud generálni):

Bővebben: Link
(#) ldani válasza szilva hozzászólására (») Jan 13, 2009 /
 
Idézet:
„Átlagolásos eredmény kiszámolásához ne az EEPROM-ot használd.”

Nem azt használom, csak rögzíteni szertném a mért részeredményeket, hogy meg tudjam őket nézni. És ezt találtam a legegyszerűbb megoldásnak.

Az általad írt többi dolgot megnézem, köszönöm!
(#) ldani válasza ldani hozzászólására (») Jan 13, 2009 /
 
Megpróbálkoztam az EEPRON-ba mentését a részeredményknek. Természetesen az sem jött össze elsőre (és még most sem megy). Csináltam neki egy új topicot. Ha vki tud segíteni, akkor pls belső EEPRON írás nem megy:
(#) And válasza ldani hozzászólására (») Jan 13, 2009 /
 
A TC74 adatlapja szerint a konverziós ráta tipikusan 8, de minimálisan 4 konverzió/sec. Power-on reset után is az utóbbi érték a jellemző, ezért nincs értelme ennél gyakoribb kiolvasásnak. Ha kisebb 'mocorgást' szeretnél a mért értékben, akkor használj helyette 0.5°C/LSB vagy jobb felbontású szenzort, ezeknek az abszolút pontossága is jobb lehet, mint a TC74-es típusé.
(#) Gamedavid hozzászólása Nov 17, 2010 /
 
Én is TC74-el szenvedek, de sehogy nem akar összejönni. Tudna valaki segíteni hogy mit mire kell állítani, vagy egy asm-ben megírt kódot adni? Előre is köszönöm.
(#) csabander hozzászólása Jan 2, 2011 /
 
Sziasztok!
Segítséget szeretnék kérni a PORTok beállításával kapcsolatban.(PIC18F4550) Konkrétan a PORTD -hez tartozó 8 lábon szeretném változtatni a jelszintet egymástól függetlenül! Alfanumerikus kijelző adatbájtját képezi a projektemben. Ha akad valaki aki tudna egy működőképes példaprogramot írni (Assembly) azzal sokat segítene.
Az a probléma, hogy ha a PORTD egyik lábát sem állítom logikai 1-re akkor is a multiméterrel mérhető az 5-ös lábon egy 5V. Ha pl betöltök a regiszterbe egy 0xAA kombinációt akkor az összes láb magasra kerül!
Az I2C-s komunikációt egyébként megoldottam a szimulátor program szerint. Ha kell valakinek szívesen elküldöm. SEGÍTSETEK !
(#) Mate78 válasza csabander hozzászólására (») Jan 2, 2011 /
 
Jól értem hogy a PORTD összes bitjét szeretnéd beállítani kimenetnek?Adatlap 10-4 példájában van leírva hogyan kell beállítani a portot.120.oldal a pdf-ben.
5-ös láb referenciafeszültségként is használható, szerintem ez a funkció aktív, azért mérsz rajta 5V-ot.

Egyébként:
  1. movlw 0xFF
  2. movwf TRISD
(#) Mate78 válasza Mate78 hozzászólására (») Jan 2, 2011 /
 
Természetesen 0x00-t kell beírnod a TRISD-be, hogy kimenet legyen a PORTD ,csak elírtam, és már nem tudom módosítani.

Tehát:

  1. movlw 0x00
  2. movwf TRISD
(#) csabander hozzászólása Jan 2, 2011 /
 
A példában leírtakhoz hasonlóan programoztam a PORTD-t csak mindegyik lábát kimenetnek definiáltam. + letiltottam az SPP-t és a CCP1CON-t.
Az RD5 az én adatlapom szerint 3 funkciót láthat el: -digitális I/O
- SPP adat
- PWM kimenet

Szóval a szimulátor szerint a programom működik a gyakorlatban viszont még a portok sem vezérelhetőek.
Ha van valakinek valammi gyakorlatban is müködő port vezérlő példa programja Assemblyben azt nagyon megköszönném.
(#) Mate78 válasza csabander hozzászólására (») Jan 2, 2011 /
 
5-ös lábat írtál, nem RD5-öt.Én meg nem néztem hogy az nem a D Porté.
Ha publikus a programod tedd fel, úgy nagyobb az esély a segítségre.4550-est nem használtam még, csak 4520-ast.
(#) icserny válasza csabander hozzászólására (») Jan 2, 2011 /
 
A honlapomon a PICCOLO projektben találsz példákat (többnyire C nyelven, de a Kísérleti áramkör c. fejezet 4. példaprogramja assembly nyelvű). A dokumentált Szoftver segédlet egyben is letölthető (a nyitólap tetején: code_examples.zip), ebben az include/p18_all.inc állományba érdemes belenézni (CONFIG bitek beállítása, LEDport és LEDtris definiálása).

A projektek feltételezik a HID bootloader és a szoftver segédletben található linker szkript használatát. Ha nem kell a bootloaderes megoldás, akkor a Project/Build options/Project menüben az MPLINK opciói közül ki kell venni az /uHID_BOOTLOADER
opciót. (ezt egyébként az .mcp állomány direkt szerkesztésével is meg lehet tenni...)

Amelyik projektből nincs külön 4550-höz való, ott a CPU típusát és a linker szkript nevét is át kell írni (PIC18f14k50.lkr helyett PIC18f4550.lkr).

Mellesleg érdemes lesz mihamarabb átszoknia a C18-ra, mert az USB kezelése már kicsit bonyolult lesz assembly nyelven! A PICCOLO projekt első öt fejezete ebben is sokat segíthet.
Következő: »»   2 / 2
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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