www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

ATMega16 in c
Pojdi na stran Prejšnja  1, 2, 3
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
madzi
Član
Član



Pridružen-a: Sre 24 Sep 2003 10:46
Prispevkov: 315
Aktiv.: 1.33
Kraj: Pragersko, Dragonja vas, Maribor

PrispevekObjavljeno: Sre Avg 08, 2007 7:35 pm    Naslov sporočila:   Odgovori s citatom

Še nekaj me zanima glede PWM. Bo to vezje v priponki za osvetlitev LCDja vredu? Na netu sem našel kup različnih shem zdaj pa nevem katera bi bila vredu. Sem nekaj sam poskušal pa me zanimajo mnenja in popravki Smile
OC2 povezava gre direktno na pin mikrokontrolerja.

Lp



untitled.JPG
 Opis:
 Velikost datoteke:  23.38 KB
 Pogledana:  4 krat

untitled.JPG


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
dragoon
Član
Član



Pridružen-a: Čet 03 Maj 2007 21:51
Prispevkov: 452
Aktiv.: 2.05
Kraj: Trojane

PrispevekObjavljeno: Sre Avg 08, 2007 10:44 pm    Naslov sporočila:   Odgovori s citatom

Načeloma v redu, samo ne vem če res rabiš spreminjat osvetlitev LCDja.

offtopic: Predvidevam, da so tisti kvadratki na koncu "žic" v shemi fizično povezani nekam drugam v shemi. Kako to narediš v eaglu?



LP, Mitja
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
dkone
Član
Član



Pridružen-a: Sre 07 Mar 2007 18:53
Prispevkov: 2116
Aktiv.: 9.51
Kraj: Krško

PrispevekObjavljeno: Sre Avg 08, 2007 10:46 pm    Naslov sporočila:   Odgovori s citatom

dragoon je napisal/a:


offtopic: Predvidevam, da so tisti kvadratki na koncu "žic" v shemi fizično povezani nekam drugam v shemi. Kako to narediš v eaglu?



Vsako povezo preimenuješ posebaj.

_________________
Denis
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3641
Aktiv.: 16.01

PrispevekObjavljeno: Sre Avg 08, 2007 11:37 pm    Naslov sporočila:   Odgovori s citatom

Obvezno daj 10kOhm upor med Vcc in priključkom 1 na trimerju za kontrast. Pa trimer je dovolj 470 do 1000 ohm.

Vezava je drugače v redu, pazi pa na maksimalen tok osvetlitve LCDja. Včasih ga je potrebno malo omejiti s kakim 39 ali 68 ohm uporom med Vcc in A . Glej datasheet od tvojega LCDja.
LP,
Igor

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
madzi
Član
Član



Pridružen-a: Sre 24 Sep 2003 10:46
Prispevkov: 315
Aktiv.: 1.33
Kraj: Pragersko, Dragonja vas, Maribor

PrispevekObjavljeno: Čet Avg 09, 2007 12:11 am    Naslov sporočila:   Odgovori s citatom

dragoon je napisal/a:

Načeloma v redu, samo ne vem če res rabiš spreminjat osvetlitev LCDja.

Po resnici povedano res nebi tako zelo rabil spreminjat osvetlitve ampak bom to vseeno naredil. Rad malo eksperimentiram. Pa še vredu zgleda Smile Če ne druga pa zato da se še bom kaj naučil in morda rabil v naslednjem projektu.

dragoon je napisal/a:

offtopic: Predvidevam, da so tisti kvadratki na koncu "žic" v shemi fizično povezani nekam drugam v shemi. Kako to narediš v eaglu?


To je konektor. Pač vzameš tak simbol za priključek (to dejansko je 11pinska letvica) ki nima oblike konektorja v celem ampak vsak priključek posebaj in pol lahko postaviš ta priključek kamorkoli v vezju brez da bi naredil neko dolgo povezavo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
madzi
Član
Član



Pridružen-a: Sre 24 Sep 2003 10:46
Prispevkov: 315
Aktiv.: 1.33
Kraj: Pragersko, Dragonja vas, Maribor

PrispevekObjavljeno: Sre Jun 04, 2008 1:36 pm    Naslov sporočila:   Odgovori s citatom

Spet se obračam na vas.

Merim temperaturo z AVR-jem. Rezultat meritve dobim v spremenljivki tipa float ki je 32 bitna. Kako naj to razbijem na 4 8 bitne dele da bi jih lahko poslal preko rs232? Ali pa če ima kdo kakšno drugo metodo? Ne pride pa vpoštev pošiljanje stringa saj moram rezultat meritve stlačit v odgovor MCU na zahtevo PC-ja v tej obliki:
Koda:
|_________________|___________________________|____________________|__________|___________|
Dolžina sporočila   Kakšen podatek se prenaša    številka senzorja   vrednost   checksum
                        (naslov sporočila)         (  vsebina   sporočila  )
        8b                       8b                     8b              32b        8b   
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
dragoon
Član
Član



Pridružen-a: Čet 03 Maj 2007 21:51
Prispevkov: 452
Aktiv.: 2.05
Kraj: Trojane

PrispevekObjavljeno: Sre Jun 04, 2008 4:44 pm    Naslov sporočila:   Odgovori s citatom

Koda:

float temp;
char prvi,drugi,tretji,cetrti;


prvi= temp && 0xFF;

temp>>=8;
drugi= temp && 0xFF;

temp>>=8;
tretji= temp && 0xFF;

temp>>=8;
četrti= temp && 0xFF;





Lahko pa tak paket pošlješ večkrat (?), pač v vsakem en (štiri) znake stringa. Koneckoncev pa lahko pošlješ tudi string, prostora imaš za 4 znake.


edit: nonsense...

_________________
LP, Mitja
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
madzi
Član
Član



Pridružen-a: Sre 24 Sep 2003 10:46
Prispevkov: 315
Aktiv.: 1.33
Kraj: Pragersko, Dragonja vas, Maribor

PrispevekObjavljeno: Sre Jun 04, 2008 4:57 pm    Naslov sporočila:   Odgovori s citatom

Smem vprašat zakaj nonsense??

BitShift pa ne deluje na spremenljivkah tipa float. Verjemi poskusil sem že nekaj metod ki se nekak niso izkazale dobre. Tako da to nebo šlo.

Imam pa še eno idejo pa bi prosil če malo pokomntirate.
Float se pri 8bitnih mikrokrmilnikih shrani v 4 byte v sramu. Bi blo možno da bi naslove teh bytov nekak dobil in podatke na teh naslovih preprosto uporabil za pošiljanje na uart? Če ja kako?
Koda:
float podatek;
char prvi,drugi,tretji,cetrti;
*prvi_byte=&podatek;
*drugi_byte=&podatek+1;
*tretji_byte=&podatek+2;
*cetrti_byte=&podatek+3;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
dragoon
Član
Član



Pridružen-a: Čet 03 Maj 2007 21:51
Prispevkov: 452
Aktiv.: 2.05
Kraj: Trojane

PrispevekObjavljeno: Sre Jun 04, 2008 5:17 pm    Naslov sporočila:   Odgovori s citatom

madzi je napisal/a:
Smem vprašat zakaj nonsense??


Prej sem nekaj zaj... pri programu, pa sem popravil.


aha, float seveda ne moreš šiftat pozabil, lahko pa takole:

Koda:

   float temp ;
   int * ptr = (int *)(& temp);       

   prvi=temp && 0xff;
   *ptr>>=8;
   drugi=temp && 0xff
   ....




verjetno bi tudi ta tvoj način deloval?

Kaj pa če pošlješ kost string, pač pošlješ več paketkov, v vsakem en znak stringa?


edit:spet sem popravljal; nekej me pointerji [cenzurirano]... Evil or Very Mad

_________________
LP, Mitja
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
dragoon
Član
Član



Pridružen-a: Čet 03 Maj 2007 21:51
Prispevkov: 452
Aktiv.: 2.05
Kraj: Trojane

PrispevekObjavljeno: Sre Jun 04, 2008 6:23 pm    Naslov sporočila:   Odgovori s citatom

Ah, klinc, ta koda zgoraj ne dela po pričakovanjih. Sem šel malo probavat, pa se mi nikakor ne izide...
Bo kdo drug povedal, jaz ne bom več pametoval tam kjer nimam pojma.
Pa še int je na AVRju (CV?) verjetno 16 biten in ne 32 tako kot na 32 bitnoh mašinah...

išči pod casting, pointer, float shifting,....

_________________
LP, Mitja
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
spy
Član
Član



Pridružen-a: Sre 06 Sep 2006 20:43
Prispevkov: 403
Aktiv.: 1.76
Kraj: Tržič

PrispevekObjavljeno: Sre Jun 04, 2008 7:27 pm    Naslov sporočila:   Odgovori s citatom

Če ti kaj pomaga:

jaz integer spravim v dva byte-a z deljenjem z 0x100. Recimo:

char izhod1, izhod2;
int vhod;

izhod1=vhod/0x100; //MSB
izhod2=vhod; //LSB

Pa dela v redu. Probej enako za float, če gre.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
dragoon
Član
Član



Pridružen-a: Čet 03 Maj 2007 21:51
Prispevkov: 452
Aktiv.: 2.05
Kraj: Trojane

PrispevekObjavljeno: Sre Jun 04, 2008 7:58 pm    Naslov sporočila:   Odgovori s citatom

@spy, to ne bo šlo. Float je čisto drugače zapisan v spominu kakor integer. Deljenje z 0x100 - isto kakor shiftanje, glej moj prvi post


@madzi:

kje pa dobiš ta tvoj float? zakaj ne pošlješ kar podatka, ki ga dobiš iz senzorja, ta sigurno ni float. obdeluješ pa naprej na kompu.


Je pa kolega rašil tisti problem razbijanja na 4 byte (hvala Tadej!):

Koda:

#include <stdio.h>

int main(int argc, char *argv[])
{
float nazaj;  // spremenljivki za testiranje obratne operacije
char *naz;    //  -^-^-^-

float temp = 234.33;
unsigned char t1, t2, t3, t4;     //začasne spremenljivke
 char test = 0;         //spremenljivka, ki hrani offset do floata   
test = (unsigned int)&temp - (unsigned int)&test;  //izračunamo offset do floata
t1 = *(&test+test);      //t1 nastavimo 1. bit floata, ki je za offset oddaljen od lokacija chara...
t2 = *(&test+test+1);
t3 = *(&test+test+2);
t4 = *(&test+test+3);

printf("%d %d %d %d\n\n", t1, t2, t3,t4);


//še obratno 
test = (unsigned int)&nazaj - (unsigned int)&test;
naz = &test+test;
(*naz) = t1;
naz = &test+test+1;
(*naz) = t2;
naz = &test+test+2;
(*naz) = t3;
naz = &test+test+3;
(*naz) = t4;

printf("%f", nazaj);

 
  system("PAUSE");   
  return 0;
}


kodo lahko direktno probaš na računalniku, za avr boš pa že sam priredil.

_________________
LP, Mitja
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.66
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Sre Jun 04, 2008 11:12 pm    Naslov sporočila:   Odgovori s citatom

Kje si sploh iz senzorja dobil float? In zakaj stvar preprosto ne pretvoriš v string? Tako je še najlažje za pošiljanje preko uarta, drugače stvari sploh ne moreš preveriti v kakšnem terminalu ... v vsakem primeru pa stvar potem pretvoriš nazaj v float / int na pc-ju.

Namesto float-a lahka uporabiš tudi kar integer -- po vsej verjetnosti ima več kot dovolj dobro natančnost (lahko številko malo skaliraš, da dobiš tudi decimalke ...).

Če pa že res moreš pošiljati float, potem pa pride prav finta z union-om: deklariraš union, ki vsebuje en float in en char[4], unionu nastaviš vrednost kot float, bereš pa kot štiri char-e.


LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
madzi
Član
Član



Pridružen-a: Sre 24 Sep 2003 10:46
Prispevkov: 315
Aktiv.: 1.33
Kraj: Pragersko, Dragonja vas, Maribor

PrispevekObjavljeno: Sre Jun 04, 2008 11:41 pm    Naslov sporočila:   Odgovori s citatom

Sem že pogruntal kak bom naredil. Malo sem tudi po svoji neumnosti zabluzil...., sem skoraj sam sebe hotel prehiteti Confused

Uporabljam neko že narejeno knjižnico za branje temperature ki je iz podatka iz senzorja skalkulirala ta "float". Sedaj sem začel na novo pisati funkcijo za branje iz senzorja da bo vse malo bolj jasno še najbolj pa bom jaz vedel kak je na stvari. Prenašal pa bom vrednost ki pride direkt iz senzorja in se na srečo nabom rabil ukvarjat z kakimi pretvorbami saj je že v 3 bytnem formatu.

Da nočem prenašat stringa do računalnika je zarad tega ker hočem ohranit pravo vrednost (nevem kak naj drugač povem) in na PC-ju opravit vse drugo. Tako bom še prihranil nekaj MCU-jevega časa. Prikaz v kakem terminalu pa mi nič ne pomeni saj imam že skoraj napisano aplikacijo v c#. Več ali manj še samo dodajam funkcionalnosti ki jih napišem za AVR-a.

Hvala in LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3
Stran 3 od 3

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group