Tonen generen met PIC16F628A

Goedkoper? ik heb er verleden week gekocht op CO, 1euro/stuk

Ik bedoel natuurlijk wel via de reguliere handel, scheelt 30...40%...
(iemand kan ze je wel gratis geven, kun je zeggen 'ze kosten niks'...)

Grote voordeel is de snelheidswinst door hogere clock en ontbreken van save/restore van context bij interrupts.
(met save/restore kost dat zo'n 16 extra instruction cycles per interrupt. Bij 10000 ints/sec (niet eens erg veel) hakt dat er stevig in...)

Zaken als controllers en/of andere zaken die hier niet echt veel kosten moet je ook niet in China kopen...

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Je hebt wel een punt maar ze kwamen mee met een grotere bestelling componenten en modules.

LDmicro user.

De afkorting van Circuits Online.

LDmicro user.

Kan ik daar uit opmaken dat je hier ook spullen kan kopen?

Ja op "Vraag en aanbod" klikken hier links in het navigatiemenu.

Voorbeeld: https://www.circuitsonline.net/aanbod/7/componenten

LDmicro user.

Deze namiddag wat zitten spelen met Proton Basic en alles werkte zoals voorzien, zowel de sound, Freqout, pwm, Hpwm instructies.

Bij de sound- freqout instructies worden de tonen opgewekt met een pwm waarvan de pulsbreedte volgens een software algoritme bepaald wordt, staat ook zo beschreven in de manual.
Je krijgt dus een scoopbeeld zoals op uw foto, je moet dus zonder filtering niet teveel sinussen verwachten ;)
Het slechte scoopbeeld komt door de triggering van de scoop die de wijziging van de duty niet kan opvangen.

Bij onderstaand voorbeeld gebruik ik de hardware Hpwm instructie die je eenvoudigweg door alle andere bovenstaande instructies kunt vervangen.
Welke pin de output is kun je lezen in de commentaar.
HPWM geeft een nette blokgolf uit.

In de manual staat dat bij een 4Mhz osc de (Hpwm) minimumfreq = 124Hz en bij 20Mhz is dat een stuk hoger, dat is een negatief punt bij geluiden omdat de laagste frequenties niet meer bereikt kunnen worden

Bij een 16f628a moet bij de interne oscillator geen Xtal ingeven.

Het gebruik van een andere controller >20Mhz geeft volgens mij geen noemenswaardige verbetering in de sound en freqout kwaliteit.

LDmicro user.

Ik heb het programma getest, MGP.

De compiler gaf errors op PORTB_PULLUPS en CCP1_PIN.

Na wat speurwerk zag ik dat voor beide DECLARE er voor moet staan.
Hij vertaalt nu foutloos, maar ik krijg geen enkel signaal op PORTB.3 (pin 9).
Ik heb daarna voor de zekerheid de IF S1 = 0 er uit gehaald, zodat alleen overblijft HPWM 1, 127, 1000

Maar helemaal stil op de poort...

Probeer deze hexfile eens, gecompileerd met het geposte .bas programma en bij mij geeft Proton geen enkele fout aan.

Ik weet niet welke versie jij hebt maar ik moet geen(maar mag) DECLARE voorzetten.

[Bericht gewijzigd door MGP op 1 augustus 2019 22:14:14 (32%)]

LDmicro user.

Ik had hem inmiddels aan de praat; er zit iets raars met de waarden;

Ik moet de frequentie op 5000 instellen om een echte frequentie van 309 Hz te krijgen.

HPWM 1, 127, 5000

Hetzelfde doet zich voor bij DELAYMS:
DELAYMS 5000 geeft ca 0,35 sec ipv de 5 seconden die je zou verwachten.

?

Mijn versies zijn:
Compiler: 3.7.2.2.
Proton IDE: 2.0.3.3

XTAL instelling ontbreekt weer. Is bij sommige versies wel of niet verplicht, beter altijd invullen.

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Op 1 augustus 2019 22:08:59 schreef MGP:
Probeer deze hexfile eens, gecompileerd met het geposte .bas programma en bij mij geeft Proton geen enkele fout aan.

Deze hexfile van jou doet het goed en geeft idd een fequentie van 1000Hz

Op 1 augustus 2019 22:50:11 schreef Arco:
XTAL instelling ontbreekt weer. Is bij sommige versies wel of niet verplicht, beter altijd invullen.

Klopt! Dat brengt de oplossing. Nu klopt alles weer.

Vreemd, hier klopt alles, zelfs de 1Khz gecontroleerd met de scoop was juist.

Uw versie is zelfs veel beter(jonger) dan de mijne(3532).
Je zult het eens moeten uitzoeken of eens een andere pic proberen, maar probeer eerst eens mijn HEX file om te zien of het dan al dan niet klopt.

Ok dan, ondertussen heb je het gevonden..

@Arco, zal dat ook onthouden

LDmicro user.

Ok, nu werkt HPWM.
Maar dit commando blijft in de uitvoering. Er zit geen 'duration' aan vast.

Hoe kan je dit stoppen (om bv meerdere tonen achter elkaar te krijgen?)

Uw verbeelding laten spreken ;)
eens kijken in de manual naar die instructie...

Of eerst eens met sound of freqout proberen zodat je het programmeren wat meer in de vingers krijgt.

[Bericht gewijzigd door MGP op 1 augustus 2019 23:02:09 (15%)]

LDmicro user.

Ik neem aan dat 'ie uitgaat door een duty-cycle van nul in te stellen...

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Hij kan 'on the fly' de frequentie veranderen en ook op 0 zetten.
De frequentie kan ook een variabele zijn die hij om de zoveel mS aanpast.

In bijlage de uitleg uit de manual voor diegenen die Proton niet hebben.

LDmicro user.

Op 1 augustus 2019 23:01:08 schreef MGP:
Uw verbeelding laten spreken ;)
eens kijken in de manual naar die instructie...

Of eerst eens met sound of freqout proberen zodat je het programmeren wat meer in de vingers krijgt.

SOUND en FREQOUT lukt wel. Ik heb meerdere melodiën gemaakt. Dat krijg ik wel voor elkaar. Ook in diverse volgordes.
Echter zijn beiden het nét niet:

FREQOUT geeft de mogelijkheid om een exacte frequentie in te stellen, maar geeft een m.i. naar signaal wat redelijk 'schor' klinkt (filtering helpt best wel wat, maar de speaker blijft 'sissen', o.i.d)

SOUND geeft de mogelijkheid om meerdere tonen achter elkaar te laten spelen, geeft een redelijk nette blokgolf die ook wel klinkt, maar hierbij kan je de frequentie niet exact instellen, maar bij benadering met een çonstante die weer geen zichtbare relatie heeft met de frequentie (bv 104 = 438 Hz, 107 = 500Hz, etc).

HPWM geeft ook een mooie blok, met de duty-cycle kun je min of meer het volume regelen. Maar hij blijft in uitvoering (In de PIC basic cursus gebruiken ze het voor een motor, die bv op 25% blijft draaien en het programma verder gaat).

Dus ik kom er wel bij benadering, maar het mooiste zou zijn geweest als SOUND de mogelijkheid gaf de exacte frequentie te genereren. al dan niet gebruik makend van een extern kristal omwille van de stabiliteit en nauwkeurigheid.

Dan weet je wat gedaan ;)

@Specialisten, wat er mij nu wel opvalt is dat je in Proton niet hoger kunt dan 32767 Hz, hoe zenden ze dan 38kHz IR data met Proton?

LDmicro user.

Da's een beperking van Proton zelf, de pic kan tot 78khz bij 8 bits, bij lagere resolutie zelfs tot 200+kHz...
Dat vergt dan wel 'echt' programmeren... ;)

(met bit-bangen kun je nog veel hoger gaan...)

Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com

Op 1 augustus 2019 23:13:09 schreef MGP:
Hij kan 'on the fly' de frequentie veranderen en ook op 0 zetten.
De frequentie kan ook een variabele zijn die hij om de zoveel mS aanpast.

In bijlage de uitleg uit de manual voor diegenen die Proton niet hebben.

Ik had deze gezien en gelezen, maar kon er niet uit opmaken dat je 'on the fly' het kon wijzigen.
Maar je hebt gelijk; je kunt gewoon een nieuwe HPWM achter de vorige plaatsen, die 'overruled' dan de vorige.

Op deze manier kan ik i.d.d. exacte frequenties maken!

Ik moet trouwens opmerken, Arco en MGP, dat ik het heel plezierig vind dat jullie zo snel en adequaat antwoorden.

Ik hoop ook dat - als ik wat meer bedreven in deze materie ben - ik ook anderen kan helpen zoals jullie dat doen!