Attiny45 osztás - miért hibás?

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Kód: Egész kijelölése

$sim
$regfile = "atTiny45.dat"
$crystal = 8000000

$hwstack = 32
$swstack = 10
$framesize = 40

Dim Egyik As Long
Dim Masik As Word
Dim Eredmeny As Word

Egyik = 80000
Masik = 500
Eredmeny = Egyik / Masik

End
Az eredmény mijéééééé 28?
Szimulátorban és a való életben is.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Ha az eredmény as LONG, akkor jó az eredmény.

Long / Word -> LONG-ban kellene az eredménynek lennie.

Az eredmény (hányados) típusúvá alakítja a kiindulási számot!

Kód: Egész kijelölése

Dim Egyik As Long 'vagy akár WORD
Dim Masik As Word
Dim Eredmeny As Word

Egyik = 14465
'80000-65535
Masik = 500
Eredmeny = Egyik / Masik 'ez pont 28 :)
Ha az eredményt is LONG-ban várod, akkor a 160 az eredmény
(Long/word=LONG)

A példádban az osztás:
Long/Word -> Word/Word = Word
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

"Az eredmény (hányados) típusúvá alakítja a kiindulási számot! "
Hmmm. Miafene... Ez eddig miért nem tűnt fel.
Hát van mit tanulnom még...
Köszi!!!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Elvileg ( :) ) nem illik a típuskonverziót 1 lépésben írni a osztással.

1. Long/word-> Long
2. Word=Long


A fordító feltételezi, hogy az eredménybe belefér az osztandó (/1 esete)
Hülyébb hiba lenne, ha:

Long / word = Word (plusz az utána álló WORD helyre a memóriába beírja az adatot). ne ez lenne a véletlenszerű hiba este... Szívás a köbön:)
"Szerencsére" csak a csonkolás esete forog fenn.

1.11.9.3Reg volt az áldozat Bascom-AVR-ből...
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Mikor tudom, hogy az eredmény biztosan bele fog férni az EREDMÉNY-be, akkor jobb lenne, ha a konverzió a kifejezésben szereplő legnagyobb formára menne, aztán műveletvégrehajtás, utána csonkolhat. De szerencsére még belefértem a memóriába, szóval nincs nagy gond. A program meg ki fog úgy is futni, szóval AtTtiny85-öt kell valahol beszereznem...normális áron.
Valaki tud beszer forrást olyan nagyonlapos, nagyonkicsi infratávirányhoz? 6-7 gomb most elég is lenne, NEC protokolú megy most. No meg hozzávaló mini vevő is kellene, de nem tudom, milyen vivőn megy :(
Vagy ha van ötletetek arra, hogy egy beépített műszer néhány paraméterét kell változtatni, gomb nincs, kiszerelni nem kellene a műszerfalból. (kerek hajóműszer, egész eleje LCD, vízhatlan).
nagyonolcsó rádió adó-vevő talán 20cm-re...

JAni
17:08
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Sorosport induktív kicsatolással?

T85-re tipp: Farnell

A vevővel a 36kHzvel nem lősz mellé. Max az érzékenység lecsökken 12m-ről 6 m-re :)
TSOP17xx sorozat.

Tipp: reed relé plusz mágneses ceruza? Előlapra mehet minden.... De a Tiny45 és az LCD hogy jött össze? I2C? 1Wire?? 74595 és SPI?
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Hát igen, másfélezerért kicsit húzós a T85. De hát ez van, majd kifizetik.
(most futottam ki a 4k-ból)
Az LCD hajtása PCF8566-al van.
Az infránál érdekes, hogy a vevő veszi egy másik kis vacak távirány jeleit is, de az enyém, az nem vezérli a másik ketyerét. Pedig a parancsok ugyan azok. Hmmm.

JAni
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Jó ez az LCDvezérlő :) (I2C-s)
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Kivételesen egész normális az IC, elsőre röffent. Későbbiekben azért majd ki szeretném próbálni az ATmega169 LCD kontrollerét, de még nem jutottam oda. (idióta tokban van pár darab).
És ha már Tiny: Nem bírtam magammal:
T45 külső órajellel elmegy 40MHz-ről, 48-ról már hibázgat, 50MHz-nél el sem indul. Ezek csak 5V tápnál érvényesek. Sajnos a belső PLL-t nem lehet akkor használni, ha külső órajel van beállítva, pedig kíváncsi lettem volna, hogy mennek-e a timerek 300MHz-ről :)
A fogyasztás persze megnő, de hát ez van...
Szóval ha valakinek kell hirtelen nagy sebesség, akkor melökheti.
Talán ha valaki megír rá DDS-t vagy FFT-t, akkor jól jöhet.
És köszönöm az egyéb infókat is!!!
(a megrendelő nyaral, majd vetetek vele egy marék 85-t)
JAni
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Jé, ez a PLL holmit még nem is lestem meg :)

Azért 300MHz nem semmi lenne ...
ASM-ben FFT van.... :) Bascomban is van már valami 5-6 csatornás....


Az xMega lesz majd még érdekes... belső 50 MHz lesz poén....
A T85 megy kivesézésre :) - már látom...
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Sajnos "csak" a timerekhez megy, de nekem nagyon bejött, hogy a belső 8MHz-es órajelről PLL-el 16MHz-ről megy a mag, a timerek meg 64MHz-ről, így 250kHz-es PWM-et ki lehet csikarni.
FFT: Kis vacak tokban megspékelve 2db 8-bites shiftregiszterrel, már mehet is a 8x8-as LED spektrumkijelző vagy más felhasználásra a beépített USI-val I2C vagy SPI SLAVE-ként kiolvasható az FFT eredménye. Szóval egy ilyen "célIC" nekem nagyon tetszene. Ha valaki arra jár és megírná ... :)
JAni
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Már megint szívat valami.
T45, SW I2C. PB2=YADC1-et szeretém beolvasni, de valami felhúzza tápra a bemenetet. Üresen 1023 jön be, ha beterhelem 10k-val akkor cca 300-at olvas.
Programban :PortB=INPUT van.
Már kínomban beírtam a Portb.2=0-t is (hátha a belső felhúzó bekapcsolt).
A program ADC3-al (PB3) tökéletes, csak a PB2-t nem szereti.
INT és Timer nincs használva a programban.
A programozót is lehúztam.
Arra gondoltam, hogy az I2CINIT megbirizgálja a hardver SCL (ami ez) lábat,
de kivettem, akkor is felhúzódik. Chipcsere után is.
Ötlet?
JAni
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

Hülye tipp (adatlap alapján)
PUD - > PullUp disable beállítani? Igaz ez az összes lábra hat, az ADC beolvasás előtt....
MCUCR regiszter 6. bitje.
10.2.3 fejezet az adatlapban.

Másik tipp:
-az ADC lábat a mérendő holmi nem hajtja meg? Az is okozott nálam már ilyet....
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Nem gyütt be :(
Most nincs idő tökölni vele, áttettem másik ADC-re.
Persze rá fogok feküdni, mert ez nem állapot.
Dugdosó panelen csak a programozó volt rajta, de azt lehúztam, akkor is húzódik felfelé.
Na, majd beszámolok, ha rájöttem.
Avatar
winnerbt
Elektronbűvölő
Hozzászólások: 907
Csatlakozott: 2007. március 25. vasárnap, 6:00

Hozzászólás Szerző: winnerbt »

Csak szólok, hogy anno volt valami Timer probléma a Tiny cuccokkal, és úgy látszik, nincs javítva.
STOP Timer1-nek nincs hatása :(
(most szívatott)

Kód: Egész kijelölése

$regfile = "atTiny45.dat"
$crystal = 8000000
Led Alias Portb.2
Config Portb = &B00000100                                   'PB2 LED
Config Timer1 = Timer , Prescale = 16384                    '8000000/16384/244=2.001Hz
On Timer1 Kethertz
Enable Timer1
Enable Interrupts

Do
Stop Timer1
Loop

Kethertz:
Toggle Led
Return
End
Válasz küldése