pwm met 16f628a

Alle vragen m.b.t digitale schakelingen m.b.v. losse i.c's
en oplossingen m.b.v. PIC processoren.
Plaats reactie
nonkel dw
Berichten: 215
Lid geworden op: ma 29 aug 2005, 19:24
Locatie: Antwerpen. .

pwm met 16f628a

Bericht door nonkel dw »

Hallo

Ik heb een probleem ik zou een 4 kanaals pwm uit deze pic moeten krijgen maar heb geen idee hoe te doen .

- 4 software matige pwm kanalen
- of met een cmos 4094

Kunnen jullie mij mss helpen ?
Ik werk op 20Mhz
En programeer in ASM taal

M.v.g
Gebruikersavatar
Stynus
Site Admin
Site Admin
Berichten: 5971
Lid geworden op: vr 16 mei 2003, 20:45
Locatie: Overpelt (België)
Contacteer:

Bericht door Stynus »

Hoe je dit in asm aanpakt weet ik niet precies maar in picbasic doe je het zo: http://www.elektronicastynus.be/PICBASI ... /index.php misschien kan je dat vertalen naar asm. Het principe blijft hetzelfde met de tellers enzo.
Met vriendelijke groet,
Stynus
http://www.elektronicastynus.be
nonkel dw
Berichten: 215
Lid geworden op: ma 29 aug 2005, 19:24
Locatie: Antwerpen. .

Bericht door nonkel dw »

hier kan ik niet veel van maken

maar wat zou het simpelste zijn ?

software matig of met een 4094?

is hier iemand op het form die het in woorden kan uit leggen hoe het te fixen dan kan ik er mss wat van maken :)
Gebruikersavatar
Stynus
Site Admin
Site Admin
Berichten: 5971
Lid geworden op: vr 16 mei 2003, 20:45
Locatie: Overpelt (België)
Contacteer:

Bericht door Stynus »

met een 4094 kan je volgens mij geen pwm opwekken.

En de code is toch vrij simpel.
Je laat een teller de hele tijd lopen van 0 - 255
dan zet je een digitale comperator die kijkt of de duty cycle die je wil groter of kleiner is en dan daar afhankelijk de uitgang hoog of laag maakt.
Met vriendelijke groet,
Stynus
http://www.elektronicastynus.be
nonkel dw
Berichten: 215
Lid geworden op: ma 29 aug 2005, 19:24
Locatie: Antwerpen. .

Bericht door nonkel dw »

niemand die wat meer uitleg kan geven ?
of code ter beschikking kan stellen
pe5ocb
Berichten: 115
Lid geworden op: za 5 mei 2007, 19:59
Locatie: Zoetermeer

Bericht door pe5ocb »

Die uitleg is genoeg.

brightness1=0x80


while()
{
pwm++
if pwm<brightness1: buffer|=(1<<kanaal1) else kanal1 uit.

out(portx,buffer)
}
reddevil
Berichten: 316
Lid geworden op: wo 7 feb 2007, 22:54
Locatie: lummen. .. .. .. .. .. .. .. .. .....

Bericht door reddevil »

Het beste werk je met een interupt, dan kan je ook nog iets anders doen zoals drukkoppen inlezen, of een signaal ontvangen of iets anders. Bij de code van Stynus ga je tegen problemen oplopen dat de lampen of leds beginnen te flikkeren als je er nog iets anders gaat tussen schrijven.
In de datasheet van de pic bij timer0module staat de uitleg hoe je alles moet instellen. Dan in die interupt zet je in asm of basic als hij niet te lang is de code van Stynus en deze wordt dan afhankelijk van de instellingen en je kristal (neem maar een 20 mhz) zoveel keer per seconde afgehandelt.

Op bouw van het programma:

hier uw instellingen, en poorten diffinieren en je interuptinstelligen.

On_Interrupt GoTo scan

lus:

Hier zet je je programma voor bv drukknoppen inlezen,
of display aansturen of laat je de helderheid van een led varieren.
in basic of asm maakt niet uit.
goto lus

scan:
Hier zet je de interupt afhandelingen in asm of basic, als het lang is in asm anders in basic want je heb hier niet alle tijd, je moet hier alle instrukties gedaan hebben voor de interupt. (hier de code van Stynus die een beetje aangepast is).

END

Het is niet gemakkelijk voor het te maken, heb er samen met mijn collega
ook een 3 tal weken op gewerkt om het aan het werken te krijgen. Dus daarom kan ik niet de code zomaar hier posten,
het is als een goed recept van een kok die geeft het ook niet zomaar.Ik heb nu de opbouw al gegeven, nu nog invullen en proberen. Nog een tip neem poort b als de uitgangen en poort a als ingangen.
Professioneel LED Temmer :twisted: alléé dat hoop ik.
pe5ocb
Berichten: 115
Lid geworden op: za 5 mei 2007, 19:59
Locatie: Zoetermeer

Bericht door pe5ocb »

3 weken?:O
Ik was toch sneller klaar. Op interrupt basis werken is makkelijker als je ook andere dingen wilt doen, maar aangezien hier niets over gezegd is. Of je op interrupt basis werkt of niet doet trouwens niets af van het principe, het enige is dat je dan in een sleep ligt te wachten tot het interrupt ping zegt.
reddevil
Berichten: 316
Lid geworden op: wo 7 feb 2007, 22:54
Locatie: lummen. .. .. .. .. .. .. .. .. .....

Bericht door reddevil »

Of ik er 3 weken aan werk, of drie dagen maakt mij niks uit. Het is een hobby en daar speelt tijd geen rol, wel het plezier dat je eraan hebt. :)
Professioneel LED Temmer :twisted: alléé dat hoop ik.
Joeri Fr
Berichten: 744
Lid geworden op: wo 29 sep 2004, 18:22
Locatie: Brugge (B). .. .

Bericht door Joeri Fr »

vraagje: waardoor laat je je interrupt dan triggeren?

ik begrijp de meerwaarde van een interrupt niet helemaal in dit verhaal.
bazzz
Berichten: 406
Lid geworden op: wo 8 feb 2006, 19:42
Locatie: . .

Bericht door bazzz »

kijk maar eens naar dit asm bestandje. Afhankelijk of S1 of S2 hoog is fade hij in/uit. Dit is makkelijk uit te bereiden naar rgb of iets dergelijks

grrrrrr ik kan geen asm toevoegen:S
Bijlagen
S1.rar
(1.87 KiB) 528 keer gedownload
Plaats reactie