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 

knight rider

 
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
linel
Član
Član



Pridružen-a: Čet 06 Mar 2008 21:14
Prispevkov: 178
Aktiv.: 0.91
Kraj: prekmurje

PrispevekObjavljeno: Sob Jun 20, 2009 11:04 am    Naslov sporočila:  knight rider Odgovori s citatom

Pozdravljeni!

zanima me kako bi naredil v bascomu avr, da bi ob uganšanju ledic, tiste za prvo ki beži svetile manj? to da letijo v obe smeri imam napisano, nevem pa kako bi ivedel da bi ledice svetile manj. lahko dobim kak nasvet?

takole naj bi bilo: http://www.youtube.com/watch?v=zgpFC91MSVU

naprimer: 00011110 smer poti v desno

0%, 0%, 0% 25%, 50%, 75%, 100% 0%


Nazadnje urejal/a linel Sob Jun 20, 2009 11:09 am; skupaj popravljeno 1 krat
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
krupivnk
Član
Član



Pridružen-a: Tor 27 Feb 2007 20:45
Prispevkov: 335
Aktiv.: 1.60
Kraj: Lj

PrispevekObjavljeno: Sob Jun 20, 2009 11:08 am    Naslov sporočila:   Odgovori s citatom

Uporabi PWM (pulzno širinska modulacija). Prva ledica gori konstantno.Drugo ledico prižigaš in ugašaš tako hitro da je to človeškemu očesu nevidno, prav tako vse naslednje ledice le da je pri vsaki naslednji razmerje med '1' in '0' vse manjše.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.28
Kraj: Domžale

PrispevekObjavljeno: Sob Jun 20, 2009 11:25 am    Naslov sporočila:   Odgovori s citatom

Če te zanima, ti lahko pošljem 2 čipa (smd) ki imada 10 pwm izhodov, prek SPI pa pošlješ podatke! Sam ju še nisem stestiral, ker moram dokončati obstoječi projekt!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
linel
Član
Član



Pridružen-a: Čet 06 Mar 2008 21:14
Prispevkov: 178
Aktiv.: 0.91
Kraj: prekmurje

PrispevekObjavljeno: Sob Jun 20, 2009 1:01 pm    Naslov sporočila:  knight rider Odgovori s citatom

rad bi naredil z mikrokontrolerjem... kje bi lahko našel opisano kako se uporablja pwm v bascomu?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 25.03

PrispevekObjavljeno: Sob Jun 20, 2009 1:13 pm    Naslov sporočila:   Odgovori s citatom

Najbrz nikjer, ker veckanalni softverski PWM ni stvar, ki bi jo potrebovalo mnogo ljudi, tisti, ki pa jo rabijo, pa rabijo specificno za svojo situacijo.

Bos napisal svoj programcek, pa bo. Zacni s timerjem s cimvisjo frekvenco (ovira je dolzina interrupt handlerja, ta se mora v celoti izvesti preden pride do anslednjega interrupta), vsakemu kanalu dodaj par spremenljivk za stevec in koncno vrednost in potem v interrupt handlerju povecuj stevec, nato pa ugasni vsak kanal, katerega vrednost je prisla do prednastavljene koncne vrednosti, ob vsakem okroglem intervalu (ko pretece 100% casovnih enot ene periode) pa ponovno resetiraj stevce za vse kanale ter jih vkljuci.

Seveda bo v Bascomu ta PWM precej neucinkovit - take stvari se pise v assemblerju, da prides do cimvisje ffrekvence timerja in s tem cimbolj fine granulacije periode.

_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.28
Kraj: Domžale

PrispevekObjavljeno: Sob Jun 20, 2009 2:04 pm    Naslov sporočila:   Odgovori s citatom

Evo še link če te zanima! link Lahko vsako ledico posebaj nastaviš!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
krupivnk
Član
Član



Pridružen-a: Tor 27 Feb 2007 20:45
Prispevkov: 335
Aktiv.: 1.60
Kraj: Lj

PrispevekObjavljeno: Sob Jun 20, 2009 2:40 pm    Naslov sporočila:   Odgovori s citatom

Jaz sem pred časom takšnega knight riderja realiziral s frekvenco PWM-ja 100Hz. Pa ni zaznati nobenega utripanja in zgleda vredu...


Video005.rar
 Opis:
filmček je v gp3 formatu (snemano s telefonom)

Download
 Ime datoteke:  Video005.rar
 Velikost datoteke:  128.25 KB
 Downloadano:  62 krat

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



Pridružen-a: Čet 06 Mar 2008 21:14
Prispevkov: 178
Aktiv.: 0.91
Kraj: prekmurje

PrispevekObjavljeno: Sob Jun 20, 2009 3:42 pm    Naslov sporočila:  knight rider Odgovori s citatom

uf, prav lepo se vidi, ko bi znal to naredit Sad kako se določi PWM v bascomu? in pa kako jo uporabit?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
krupivnk
Član
Član



Pridružen-a: Tor 27 Feb 2007 20:45
Prispevkov: 335
Aktiv.: 1.60
Kraj: Lj

PrispevekObjavljeno: Sob Jun 20, 2009 4:03 pm    Naslov sporočila:   Odgovori s citatom

Praviš da si začetnik: Ne se preveč zaletet v sam projektek knight rider...
Najprej naredi da bo ledica utripala, potem naredi tako da bo malo dlje svetila kot bo ugasnjena, potem povečaj frekvenco, tako da ne boš več mogel zaznati utripanja, potem naredi da se ti bo svetilnost spreminjala v odvisnosti od potencimetra ki ga boš priključil na uC.... Potem pa boš imel potrebno znanje da se boš lotil željenega projekta...

Za sam baskom ti pa ne morem nič svetovati ker ga ne uporabljam...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
program_er
Član
Član



Pridružen-a: Sob 08 Mar 2008 13:47
Prispevkov: 2173
Aktiv.: 11.06
Kraj: Maribor (Pohorje)

PrispevekObjavljeno: Sob Jun 20, 2009 4:58 pm    Naslov sporočila:   Odgovori s citatom

Zadnjič sem se malo spoznal z PWMji pri AVRjih, tako da zdaj že delam resnejše PWM projekte.

To pa je bil moj prvi PWM programček za motor:

Koda:
$regfile = "m32def.dat"
$crystal = 11059200
$baud = 4800

Enable Timer1
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64

Dim A As Word

Pwm1a = 0

A = 0
Goto Prvidel

Prvidel:
Do
 Print A
 Pwm1a = A
 Waitms 25
 A = A + 2
Loop Until A > 1021
Goto Drugidel

Drugidel:
Do
 Print A
 Pwm1a = A
 Waitms 100
 A = A - 10
Loop Until A = 0
Goto Prvidel

End


Frekvenca tega PWMja je nekaj manj kot 200Hz, za LED boš moral dat prescale na 1, torej Prescale = 1, da bo frekvenca 64x višja (mogoče se motim). Program deluje tako, da se PWM vrednost vsakih 25ms poveča za 2 in ko pride skoraj na maximum, gre nazaj dol do 0. In tako LEDica ali motor "valovi". Poiskusi.

ps.: Frekvenca PWM v Bascom-AVR se računa tako:

Frekvenca kvarca / Prescaler / X-bitni PWM = x Hz

Če uporabljaš interni 1M kvarc in vzameš 10-bitni PWM ter Prescaler 1, dobiš:
1000000 / 1 / 1024 = 976,56 Hz, kar bi že moralo biti ok.

Če pa imaš zunanji kvarc 11,0592M in iste nastavitve, je pa še boljše!
11059200 / 1 / 1024 = 10800 Hz = 10,8kHz, kar je že skoraj preveč.



Upgrade:
Zgornji programček pa lahko tudi malo nadgradiš:
Koda:

$regfile = "m16def.dat"
$crystal = 11059200

Enable Timer1
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64
Config Adc = Single , Prescaler = Auto , Reference = Aref

Dim A As word, B as Word, Adc0 As Word , Adc1 As Word

A = 0 : B = 0 : Adc0 = 0 : Adc1 = 0
Goto Gor

Gor:
 Do
  Adc0 = Getadc(0)
  Adc1 = Getadc(1)
   Pwm1a = A
   A = A + 2
  Waitms Adc0
 Loop Until A > Adc1
  Goto Dol

Dol:
 Do
  Adc0 = Getadc(0)
  Adc1 = Getadc(1)
   Pwm1a = A
   A = A - 2
  Waitms Adc0
 Loop Until A < 2
  Goto Gor

End


Program je po funkciji enak prvemu, le da tu z enim potenciometrom nastavljaš čas dvigovanja PWMja in s tem čas, kako hitro bo PWM vrednost prišla do maximuma, ki pa ga nastaviš z drugim potenciometrom. Malo se "igraj", če pa ti kaj nebo šlo, pa kar piši.

ps.: Če ti kaj nebo šlo, me lahko dodaš na Skypu - potokbojan, zdaj ko so počitnice imam nekaj časa, se lahko pomeniva. Od takrat, ko sem delal Sledibota, mi PWM v Bascomu kar dobro gre...

_________________
Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo MSN Messenger - naslov
Silvo
Moderator
Moderator



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

PrispevekObjavljeno: Sob Jun 20, 2009 10:29 pm    Naslov sporočila:   Odgovori s citatom

Na hitro zmetano skupaj v assemblerju. Program ni pisan preveč varčno. Ker gre za slične rutine, sem uporabljal makroje. Uporabljen tiny26, ki je bil ravno na testni plošči.
Izhodi so na portua 0-7 interni oscilator 4Mhz
Komentarjev nisem pisal - če koga glede programa kaj zanima, lahko vpraša...



Koda:
;------------------------------------
;testni program "kinight rider"
;Silvo
;www.elektronik,si
;------------------------------------


.include "tn26def.inc"

.def st1=r1
.def st2=r2
.def st3=r3
.def st4=r4
.def st5=r5
.def st6=r6
.def st7=r7
.def st8=r8

.def stmp=r9

.def tmp=r16
.def mtmp=r17

;----- sram
.equ k1=0x60
.equ k2=0x61
.equ k3=0x62
.equ k4=0x63
.equ k5=0x64
.equ k6=0x65
.equ k7=0x66
.equ k8=0x67



;makri
;///////////////////////
.macro PWM
   lds mtmp,@1
   tst mtmp
   breq PC+5
   cpi mtmp,1
   breq PC+6
   dec @0
   breq PC+3
   cbi PORTA,@2
   ret
   lds @0,@1
   sbi PORTA,@2
   ret
.endm


.macro koraki
   ldi tmp,@0
   sts k1,tmp
   ldi tmp,@1
   sts k2,tmp
   ldi tmp,@2
   sts k3,tmp
   ldi tmp,@3
   sts k4,tmp
   ldi tmp,@4
   sts k5,tmp
   ldi tmp,@5
   sts k6,tmp
   ldi tmp,@6
   sts k7,tmp
   ldi tmp,@7
   sts k8,tmp
   rcall Pavza70mS
.endm

;\\\\\\\\\\\\\\\\\\\\\\\\\\\


.org 0x0
   rjmp GlProg
.org 0x06
   rjmp T0Prek

.org 0xD
GlProg:
   ldi tmp,low(ramend)
   out sp,tmp
   ldi tmp,0xff
   out ddra,tmp
   ldi tmp,0b10
   out TCCR0,tmp
   ldi tmp,0b10
   out TIMSK,tmp
   sei



;   testni del za ugotovitev usteznih PWM vrednosti
;   koraki 1,4,9,16,28,35,42,59
;   nop
;   rjmp PC-1



gz:   

   koraki 1,0,0,0,0,0,0,0
   koraki 7,1,0,0,0,0,0,0
   koraki 10,7,1,0,0,0,0,0
   koraki 30,10,7,1,0,0,0,0
   koraki 0,30,10,7,1,0,0,0
   koraki 0,0,30,10,7,1,0,0
   koraki 0,0,0,30,10,7,1,0
   koraki 0,0,0,0,30,10,7,1
   koraki 0,0,0,0,0,30,10,7
   koraki 0,0,0,0,0,0,30,10
   koraki 0,0,0,0,0,0,0,30

   koraki 0,0,0,0,0,0,0,1
   koraki 0,0,0,0,0,0,1,7
   koraki 0,0,0,0,0,1,7,10
   koraki 0,0,0,0,1,7,10,30
   koraki 0,0,0,1,7,10,30,0
   koraki 0,0,1,7,10,30,0,0
   koraki 0,1,7,10,30,0,0,0
   koraki 1,7,10,30,0,0,0,0
   koraki 7,10,30,0,0,0,0,0
   koraki 10,30,0,0,0,0,0,0
   koraki 30,0,0,0,0,0,0,0
   rjmp gz








;-----------------------------------------------------------
;Pavza 70mS   Oscilator 4Mhz
;-----------------------------------------------------------
Pavza70mS:
   push r20
   push r21
   push r22
   ldi r20,154
   ldi r21,108
   ldi r22,2
P_zanka1:
   dec r20
   brne P_zanka1
   dec r21
   brne P_zanka1
   dec r22
   brne P_zanka1
   pop r22
   pop r21
   pop r20
   nop
   ret



;----------------------------------------------------
;prekinitvena rutina
;----------------------------------------------------
T0Prek:
   in stmp,SREG
   push tmp
;   sbi PORTA,1
   rcall Kanal1
   rcall Kanal2
   rcall Kanal3
   rcall Kanal4
   rcall Kanal5
   rcall Kanal6
   rcall Kanal7
   rcall Kanal8
   pop tmp
   out SREG,stmp
   reti


Kanal1:
   PWM st1,k1,0

Kanal2:
   PWM st2,k2,1

Kanal3:
   PWM st3,k3,2

Kanal4:
   PWM st4,k4,3

Kanal5:
   PWM st5,k5,4

Kanal6:
   PWM st6,k6,5

Kanal7:
   PWM st7,k7,6

Kanal8:
   PWM st8,k8,7




P6200059.ZIP
 Opis:

Download
 Ime datoteke:  P6200059.ZIP
 Velikost datoteke:  3.46 MB
 Downloadano:  25 krat


_________________
lp
Silvo
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
Stran 1 od 1

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


Powered by phpBB © 2001, 2005 phpBB Group