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 

Začetek z AVR
Pojdi na stran Prejšnja  1, 2, 3 ... , 11, 12, 13  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
mucek
Član
Član



Pridružen-a: Tor 01 Avg 2006 10:47
Prispevkov: 5530
Aktiv.: 24.05
Kraj: Domzale

PrispevekObjavljeno: Sob Feb 26, 2011 8:51 pm    Naslov sporočila:   Odgovori s citatom

Pa imaš diodo na ključavnici?
Točno takšne probleme je imel en forumaš, ki je delal mojo "ključavnico" in je diodo nekako spregledal ...

LP, Grega

_________________
...lahko pa se tudi motim ...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 42.77
Kraj: Mengeš

PrispevekObjavljeno: Sob Feb 26, 2011 9:12 pm    Naslov sporočila:   Odgovori s citatom

Vilko, ne, ne....saj ni vojna, samo razprava. Podobno kot pogovor o tem, katero pivo je boljše - laško ali union? Sem pripravljen spiti enega ali drugega, samo potrebujem kakšen razlog, zakaj je eden ali drugi boljši (no, v specifičnem primeru je dovolj dober razlog že to da npr. Uniona nimajo Smile )

Mucek - imam diodo ter 100n kondenzator. Mislim da imam celo dvakrat diodo -eno na relejskih kontaktih in še eno direkt pri sami ključavnici. (na releju je itak tudi dioda). Mislim da če bi celo zadevo naredil kot treba, do tega ne bi prihajalo...najprej sem pozabil dati tuljavo na 5V napajanje, se je to dogajalo skoraj vsakič, potem pa recimo vsakih 10-20 odpiranj...
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Tomazp
Član
Član



Pridružen-a: Sob 02 Feb 2008 13:24
Prispevkov: 559
Aktiv.: 2.64
Kraj: Ljubljana

PrispevekObjavljeno: Tor Mar 01, 2011 2:06 pm    Naslov sporočila:   Odgovori s citatom

Pred kratkim je bilo vprašanje glede razlike med C in Basic. Kot zanimivost: Testiral sem enostaven praktično identičen program vklop/ izklop PORTB.0 v C (AVR Studio), CodeVision - Bascom na ATmega16, interni frekvenčni osc. 1Mhz.

Velikost kode
C AVR GCC 435bytov
C CodeVision: 549bytov
Bascom: 639bytov

Čas med posameznimi signali pina PortB0:
C AVR GCC : 1,63ms
C CodeVision: 2,02ms
Bascom: 3,63ms

Zanimivo je tudi, da je razmerje hitrosti odvisno od uporabljenih ukazov. Včasih je večje ali manjše.

Program C GCC:
#include <avr/io.h>
int main(void)
{
DDRB|=(1<<0);
while(1)
{
for(int i = 1; i <= 100; i++)
{
PORTB|=(1<<0);
}
for(int i = 1; i <= 100; i++)
{
PORTB&=~(1<<0);
}
}
return 1;
}

C Codevision

#include <mega16.h>



void main(void)

{
int i;
DDRB|=(1<<0);
while (1)

{

while(1)
{

for(i = 1; i <= 100; i++)
{
PORTB|=(1<<0);
}

for(i = 1; i <= 100; i++)
{

PORTB&=~(1<<0);
}

}
}

}





Bascom:

$regfile = "m16def.dat"
$crystal = 1000000
$hwstack = 32
$swstack = 10
$framesize = 40
Dim A As Byte
Config Portb.0 = Output

Do
For A = 1 To 100
Portb.0 = 1
Next A
For A = 1 To 100
Portb.0 = 0
Next A
Loop


Nazadnje urejal/a Tomazp Tor Mar 01, 2011 5:07 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3362
Aktiv.: 14.19
Kraj: Dragomer

PrispevekObjavljeno: Tor Mar 01, 2011 2:44 pm    Naslov sporočila:   Odgovori s citatom

Ej, to je lep primer primerjave dveh programskih jezikov, Tomazp! Kaj takega sem si dolgo želel.

Rezultati so v korist C-a, v kolikor sta velikost programa in hitrost relevantna. Tu ima vsak svoje mnenje, nekomu bajti flasha veliko pomenijo, drugi se ne sekira in vzame večji procesor. (jaz sem že prilezel na ATMEGA64. Pred vsem zaradi obilice RAM-a. Često obravnavam prav dolge stringe, SMS sporočila.)

Pri hitrostih imam večje spoštovanje. Često je potrebno kaj narediti hitro.

Ali bi hotel narediti še dva taka poizkusa, meni bi veliko pomenilo.

Naredi C variatno programčkov bascoma, ki prilagam:

Koda:
$regfile = "m644pdef.dat"
$crystal = 11059200

'                            Terminal emulator na pinu A.1
'                            =====================
Open "coma.1:9600,8,n,1" For Output As #2
Print #2 , "Hej! Ljudje! "
End
Close #2


in drugi:

Koda:
 
$regfile = "m32def.dat"
$crystal = 11059200
'                            LCD na portu C
'                            ===========
Config Lcdpin = Pin , Db7 = Portc.7 , Db6 = Portc.6 , Db5 = Portc.5 , Db4 = Portc.4 , E = Portc.3 , Rs = Portc.2
Lcd "Hej! Ljudje!"
end


Pri tem me bolj kot velikost programa in hitrost zanima razlika v izvirni kodi. Seveda lahko uporabiš vse funkcije, ki so na razpolago v ta namen v standardnih knjižnicah.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Tomazp
Član
Član



Pridružen-a: Sob 02 Feb 2008 13:24
Prispevkov: 559
Aktiv.: 2.64
Kraj: Ljubljana

PrispevekObjavljeno: Tor Mar 01, 2011 5:09 pm    Naslov sporočila:   Odgovori s citatom

V zgornjo meritev sem dodal še CodeVision. Zanimiv podatek.

Za serijsko komunikacijo in primerjavo moram pa še prej pogledat nastavitev registrov.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
protoncek
Član
Član



Pridružen-a: Sre 31 Jan 2007 9:41
Prispevkov: 9573
Aktiv.: 42.77
Kraj: Mengeš

PrispevekObjavljeno: Tor Mar 01, 2011 5:31 pm    Naslov sporočila:   Odgovori s citatom

vilko, vidiš da nisi naredil nič slabega---! samo koristno razpravo si odprl.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.91
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Tor Mar 01, 2011 6:21 pm    Naslov sporočila:   Odgovori s citatom

Za prvi vilkov primer assembler. (softwreski serijski port - za hardwerskega bi bilo kode še manj) Na testni namreč imam ravno tiny13



Koda:


;test softverski serijski port
.include "tn13def.inc"

.def CasOff=r2

.def tmp=r16
.def SerData=r17

.equ TxPin=4            ;pin uart TX
#define TxPort Portb,TxPin


.org 0x0
   rjmp GlProg

.org 0x13
GlProg:
   ldi tmp,low(ramend)
   out SPL,tmp
   sbi DDRB,TxPin
   ldi tmp,0x62
   out OSCCAL, tmp

      

Gz1:
   rcall Pisi

   rjmp Gz1


Tekst:
.db  "Hej! Ljudje!",0


Pisi:
   ldi ZH,high(Tekst*2)
   ldi ZL,low (Tekst*2)
NextText:
   lpm SerData,Z+
   tst SerData
   breq KonecTeksta
   rcall Tx
   rjmp NextText
KonecTeksta:
   ret




;-----------------------------------------------------------
;serijsko poÜiljanje
;9600 bps POZOR ne pozabi kalibrirat internega oscilatorja
;------------------------------------------------------------
Tx:   
   cbi TxPort
   rcall Pavza104uS   ;startbit
   ldi tmp,8
NasBit:
   ror SerData
   brcc HBit
   sbi TxPort
   rjmp Pavza
HBit:
   cbi TxPort
Pavza:
   rcall Pavza104uS
   dec tmp
   brne NasBit
;   rcall Pavza104uS   ;bit party
   sbi TxPort
   rcall Pavza104uS   ;stop bit
   ret


;-----------------------------------------------------------
;Pavza 104uS   Oscilator 4,8Mhz
;-----------------------------------------------------------
Pavza104uS:
   push r20
   ldi r20,162
P_zanka:
   dec r20
   brne P_zanka
   pop r20
   nop
   nop
   ret



Velikost hex kode 301 byte

Zasedenost tiny13

Koda:
Segment   Begin    End      Code   Data   Used    Size   Use%
---------------------------------------------------------------
[.cseg] 0x000000 0x00007e     76     14     90    1024   8.8%
[.dseg] 0x000060 0x000060      0      0      0      64   0.0%
[.eseg] 0x000000 0x000000      0      0      0      64   0.0%



test_sp.jpg
 Opis:
 Velikost datoteke:  215.81 KB
 Pogledana:  28 krat

test_sp.jpg



_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igor_k
Član
Član



Pridružen-a: Pon 19 Jul 2004 11:44
Prispevkov: 1011
Aktiv.: 4.27
Kraj: Rače

PrispevekObjavljeno: Tor Mar 01, 2011 8:42 pm    Naslov sporočila:   Odgovori s citatom

Kaj pa to:

C:
Koda:
int i;


Bascom:
Koda:
Dim A As Byte


Je razlika če uporabiš: unsigned char i; ?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
forest70
Član
Član



Pridružen-a: Ned 20 Jul 2008 1:00
Prispevkov: 588
Aktiv.: 2.85
Kraj: Koper

PrispevekObjavljeno: Tor Mar 01, 2011 9:07 pm    Naslov sporočila:   Odgovori s citatom

igor_k je napisal/a:
Kaj pa to:

C:
Koda:
int i;


Bascom:
Koda:
Dim A As Byte


Je razlika če uporabiš: unsigned char i; ?



unsigned char i - pomeni, da je vrednost med 0 in 255
char i - pomeni, da je lahko vrednost med -127 in 128
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igor_k
Član
Član



Pridružen-a: Pon 19 Jul 2004 11:44
Prispevkov: 1011
Aktiv.: 4.27
Kraj: Rače

PrispevekObjavljeno: Tor Mar 01, 2011 9:41 pm    Naslov sporočila:   Odgovori s citatom

Citiram:
unsigned char i - pomeni, da je vrednost med 0 in 255
char i - pomeni, da je lahko vrednost med -127 in 128


Very Happy Very Happy Very Happy

govorim o zamenjavi:
Koda:
int i;

z
Koda:
unsigned char i;

ker v Bascomu je uporabil:
Koda:
Dim A As Byte
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
NUFAN
Član
Član



Pridružen-a: Pon 05 Apr 2004 21:39
Prispevkov: 947
Aktiv.: 4.00
Kraj: Žalec

PrispevekObjavljeno: Tor Mar 01, 2011 9:53 pm    Naslov sporočila:   Odgovori s citatom

Ja, razlika je v obsegu oziroma velikosti spremenljivke.

- (signed) int: -32768 .. 32767
- unsigned char: 0 .. 255

_________________
Roke spadajo k telesu, ne k delu.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3362
Aktiv.: 14.19
Kraj: Dragomer

PrispevekObjavljeno: Tor Mar 01, 2011 11:32 pm    Naslov sporočila:   Odgovori s citatom

Silvo je napisal/a:
Za prvi vilkov primer assembler. (softwreski serijski port - za hardwerskega bi bilo kode še manj) Na testni namreč imam ravno tiny13


Ni kaj, Silvo! Kapo dol! Assembler obvladaš in zato tudi vse delaš v assemblerju.
Koliko časa je trajalo, da si postal mojster assemblerja?

Pozdrav in spoštovanje
Vilko
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igor_k
Član
Član



Pridružen-a: Pon 19 Jul 2004 11:44
Prispevkov: 1011
Aktiv.: 4.27
Kraj: Rače

PrispevekObjavljeno: Sre Mar 02, 2011 12:40 am    Naslov sporočila:   Odgovori s citatom

Citiram:
Ja, razlika je v obsegu oziroma velikosti spremenljivke.

- (signed) int: -32768 .. 32767
- unsigned char: 0 .. 255


Rolling Eyes

V Bascomu je uporabil 8 bitno spremenljivko, v C pa 16 bitno.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Tomazp
Član
Član



Pridružen-a: Sob 02 Feb 2008 13:24
Prispevkov: 559
Aktiv.: 2.64
Kraj: Ljubljana

PrispevekObjavljeno: Sre Mar 02, 2011 9:33 am    Naslov sporočila:   Odgovori s citatom

Hvala za odkrito napako. Res je. Moral bi uporabit uint8_t oz. unsigned char. Kar pomeni, da mora vse skupaj biti še hitrejše in krajše.

Spodnji podatki so sedaj še zgovornejši. Novi podatki so dopisani.

Velikost kode
C AVR GCC 435bytov => 402bytov
C CodeVision: 549bytov => 504bytov
Bascom: 639bytov

Čas med posameznimi signali pina PortB0:
C AVR GCC : 1,63ms => 1,31ms
C CodeVision: 2,02ms => 1,43ms
Bascom: 3,63ms
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Sadida
Član
Član



Pridružen-a: Pet 17 Apr 2009 12:53
Prispevkov: 636
Aktiv.: 3.23
Kraj: Zasavje

PrispevekObjavljeno: Sre Mar 02, 2011 10:47 am    Naslov sporočila:   Odgovori s citatom

Za začetnike bi bilo mogoče zanimivo gradivo iz predavanj, ki nastaja sproti.

http://paris.fe.uni-lj.si:81/izobrazevanje/1-stopnja-vs/osnove-mikroprocesorske-elektronike-ome/
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2, 3 ... , 11, 12, 13  Naslednja
Stran 12 od 13

 
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: 496 dni


Powered by phpBB © 2001, 2005 phpBB Group