7.1 Kanaals Microcontroller Gestuurde Volumeregelaar
Moderators: Barry2001, Beheerdersteam
Misschien kom je nog wel eens op Assembler uit Juul
Dan heb je echt alles zelf in de hand maar dan moet je ook echt alles zelf organiseren en opzetten. Heb je dat eenmaal voor een MCU gedaan dan kun je dat wel weer hergebruiken. Overigens zijn PIC'jes geen pretje in assembler, kun je beter naar Atmel AVR, Zilog Z8 of desnoods een 8051 omzien.
Volgende keer wordt het gewoon een AVR.
Maar enig id wat er mis is? Ik ben de halve dag al aan het zoeken, snap er niets van.
Met die codepage 0 en 1 heb ik ook steeds geouwehoer, kans dat het hier zit. Maar ik kom er maar niet uit....
voorbeeltje, als ik dit toevoeg werkt het niet meer:
Terwijl ik dit ergens anders ook heb gedaan, het is gewoon een kloppende code
Ik krijg dit ook als ik hier een ongebruikte, nieuwe variabele voor neem.
Dan doet bijv de master volumeknop het niet meer. Ik zie hier niet echt een oplossing voor...
Maar enig id wat er mis is? Ik ben de halve dag al aan het zoeken, snap er niets van.
Met die codepage 0 en 1 heb ik ook steeds geouwehoer, kans dat het hier zit. Maar ik kom er maar niet uit....
voorbeeltje, als ik dit toevoeg werkt het niet meer:
CODE: Selecteer alles
Eenheden=Vol_Front%10; //Eenheden
Dan doet bijv de master volumeknop het niet meer. Ik zie hier niet echt een oplossing voor...
THx voor je help Geert, maar dat werkt ergens anders ook.
Volgensmij heb ik een truukje gevonden om die compiler niet te laten zeuren.
GeertJ, JAL al eens geprobeerd?
Daniel heeft zijn project daarmee gemaakt , heb hem niet horen klagen
Het is maar dat ik al zoveel code heb, anders was ik meteen overgestapt op wat anders.
/edit
Eindelijk het werkt... I'll need a break
Volgensmij heb ik een truukje gevonden om die compiler niet te laten zeuren.
GeertJ, JAL al eens geprobeerd?
Daniel heeft zijn project daarmee gemaakt , heb hem niet horen klagen
Het is maar dat ik al zoveel code heb, anders was ik meteen overgestapt op wat anders.
/edit
Eindelijk het werkt... I'll need a break
Als je maar volhoudt Juul Edit
Volgens mij ben je met een 8051 altijd nog een stuk beter af dan met een PIC Geert. Vooral de nieuwere van Atmel zijn en single clock/instructie en in circuit te programmeren.
Maar ben je eenmaal verwend met die zak registers die allemaal als alu kunnen dienen in een AVR of een Z8, dan wil je niet anders meer als je in assembler programmeert. Maar een 8051 is ook prima om het te leren hoor
/Edit
ongeveer 50 uns8 variabelen.
[img]/error.JPG[/img]
Heb ook steeds een verify error, lijkt me dat ik dat eerst moet oplossen.
Steeds bij 0800h, de rest lijkt wel goed...
Heb al 2 andere PICs geprobeerd, die doen hetzelfde.
Enig id hoe dat kan komen?
Voor dat adres komen eerst een stel 3FFF (Van codepage0 denk ik) misschien blijft het datasignaal te lang hoog ofzo? Of een capaciteit die eerst oplaadt en na die 3FFF ontlaadt?
Heb blijkbaar mijn dag niet
[img]/error.JPG[/img]
Heb ook steeds een verify error, lijkt me dat ik dat eerst moet oplossen.
Steeds bij 0800h, de rest lijkt wel goed...
Heb al 2 andere PICs geprobeerd, die doen hetzelfde.
Enig id hoe dat kan komen?
Voor dat adres komen eerst een stel 3FFF (Van codepage0 denk ik) misschien blijft het datasignaal te lang hoog ofzo? Of een capaciteit die eerst oplaadt en na die 3FFF ontlaadt?
Heb blijkbaar mijn dag niet
Laatst gewijzigd door JuuL op di 05 nov 2019, 14:41, 1 keer totaal gewijzigd.
Bovenstaand probleem is me nog niet helemaal duidelijk, maar ik ben een stap verder 
Ik ben nou bij het punt balans etc aangekomen.
Nou heb ik bijv het menu
"Front: +xx%"
En ik ben er nog niet helemaal over uit of het klopt zoals ik het in gedachten heb.
Stel het Master Volume is -90dB en de Front balance is ingesteld op +100%.
Welke waarde zou je dan moeten hebben voor het Front niveau qua gehoor?
+6dB=-84dB?
En als het Master Volume= -56dB en het Front niveau=+100%
Wat moet dan het Front Volume zijn?
-56+6= -50dB?
/edit
Als ik met dBs werk ipv procenten ben ik al van de moeilijkheden af lijkt me.
En thx Pjotr.
Ik ben nou bij het punt balans etc aangekomen.
Nou heb ik bijv het menu
"Front: +xx%"
En ik ben er nog niet helemaal over uit of het klopt zoals ik het in gedachten heb.
Stel het Master Volume is -90dB en de Front balance is ingesteld op +100%.
Welke waarde zou je dan moeten hebben voor het Front niveau qua gehoor?
+6dB=-84dB?
En als het Master Volume= -56dB en het Front niveau=+100%
Wat moet dan het Front Volume zijn?
-56+6= -50dB?
/edit
Als ik met dBs werk ipv procenten ben ik al van de moeilijkheden af lijkt me.
En thx Pjotr.
Laatst gewijzigd door JuuL op do 29 dec 2005, 12:24, 1 keer totaal gewijzigd.
Da's de wet van behoud van ellende: "De hoeveelheid ellende in een bepaald systeem is constant"JuuL schreef:Probleem is gewoon opgeschoven.
ALs ik ergens een variabele erbij aanmaak, loopt de boel weer in de soep.
Kunnen je variabelen "op" zijn? Heb er een stuk of 50 nl.
Helaas kan ik je niet echt verder helpen Juul. Daarvoor is het te lang geleden dat ik wat met die PIC's heb gedaan. En ik had er toen al snel genoeg van. Gewoon vol houden en laat je niet kisten door zo'n zwart stukkie plastic met een paar pootjes er aan.
De hoeveelheid variabelen die je kunt maken hangt af van de hoeveelheid ram die aan boord is. Dat zegt nog niet alles want een gedeelte daarvan is ook nodig voor de diverse stacks, zoals de program stack en eventuele data stack(s). Hoeveel daarvoor gereserveerd wordt hangt van je compiler af.
Je stack loopt alleen vol als teveel subroutines een andere subroutine (of functie) achter elkaar aanroepen. Voor iedere sub moet nl het return adres op de stack en eventuele return data.JuuL schreef:Als het fout gaat bij delen, wijst dat erop dat de stack vol zit?
Zo ja, wat kan ik eraan doen?
Het kan best dat je gewoon te weinig ram over hebt voor de hoeveelheid variabelen. Overigens is er met weinig ram ook nog het risico dat de stack in je variabelen gebied gaat lopen en dan heb je helemaal een probleem. Als het goed is waarschuuwt je compiler daarvoor of geeft een foutmelding.
Geeft je compiler niet een lijstje met gealloceerde adressen?
Pointers hebben in dit geval geen zin Henkjan want dat zijn alleen adresverwijzingen naar variabelen en die heeft Juul al apart globaal gereserveerd. Zoiets heeft zin als de return data over de stack overgedragen wordt en dat stackoverflow tot gevolg heeft of bij arrays.
Laatst gewijzigd door Pjotr op do 29 dec 2005, 15:13, 1 keer totaal gewijzigd.
O die compiler is waardeloos 
Geeft vast niet zulke errors.
Maar ik weet waar het aan ligt!
Nog klein vraagje:
Als ik het Front volume kan instellen met -100dB tot +100dB tov het Master Volume.
En als ik deze bijv op +10dB instel, het master volume is bijv +10dB. Dan is het Front Volume +20dB.
Maar als het Master Volume -45 dB is, dan is het Front Volume -45+10=-35dB.
Klopt deze berekening, zijn de verhoudingen goed? Dat het Front Volume niet opeens veel harder is tov het Master volume bij lage niveaus bijv.
Geeft vast niet zulke errors.
Maar ik weet waar het aan ligt!
Nog klein vraagje:
Als ik het Front volume kan instellen met -100dB tot +100dB tov het Master Volume.
En als ik deze bijv op +10dB instel, het master volume is bijv +10dB. Dan is het Front Volume +20dB.
Maar als het Master Volume -45 dB is, dan is het Front Volume -45+10=-35dB.
Klopt deze berekening, zijn de verhoudingen goed? Dat het Front Volume niet opeens veel harder is tov het Master volume bij lage niveaus bijv.
Duh ???
Tussen links en rechts en front en rear is plus en min 6 dB meer dan genoeg. Hoe je dat tov je mastervolume organiseert is aan je zelf.
Edit
Snap nu je vraag. Als je tussen links en rechts b.v. 3 dB verschil hebt blijft dat zo als je het mastervolume veranderd.
Db's zijn zijn relatief: Verhoudingen dus in absolute zin. Dus als je het mastervolume verandert blijft de verhouding tussen links en rechts (en/of voor en achter) gelijk als je het goed doet. Het totaal wordt harder of zachter.
/Edit
Tussen links en rechts en front en rear is plus en min 6 dB meer dan genoeg. Hoe je dat tov je mastervolume organiseert is aan je zelf.
Edit
Snap nu je vraag. Als je tussen links en rechts b.v. 3 dB verschil hebt blijft dat zo als je het mastervolume veranderd.
Db's zijn zijn relatief: Verhoudingen dus in absolute zin. Dus als je het mastervolume verandert blijft de verhouding tussen links en rechts (en/of voor en achter) gelijk als je het goed doet. Het totaal wordt harder of zachter.
/Edit
als je je rear-kanalen wilt muten, dan kun je de debetreffende pga's gewoon muten. Ofwel hardwarematig via de mute-pin, ofwel softwarematig door de waarde '0' te schrijven.
Dat probleem met die variabelen, volgens mij komt dat idd door een geheugenallocatie. Als ik mij niet vergis, is bij die pic 16f877 het ram opgedeeld in verschillende banken. als je compiler daar niet mee om kan gaan, kun je dus een probleem krijgen (ik ben daar zelf neit tegenaan gelopen, omdat de JAL compiler dat gelukkig voor mij opgelost heeft).
Dat probleem met die variabelen, volgens mij komt dat idd door een geheugenallocatie. Als ik mij niet vergis, is bij die pic 16f877 het ram opgedeeld in verschillende banken. als je compiler daar niet mee om kan gaan, kun je dus een probleem krijgen (ik ben daar zelf neit tegenaan gelopen, omdat de JAL compiler dat gelukkig voor mij opgelost heeft).
Voor echte mute heb ik 1 aparte knop, als je die indrukt wordt er via de PIC de MUTE pinnen van alle PGA2310 ICs geactiveerd (=laag).daniel schreef:als je je rear-kanalen wilt muten, dan kun je de debetreffende pga's gewoon muten. Ofwel hardwarematig via de mute-pin, ofwel softwarematig door de waarde '0' te schrijven.
[
-100dB lijkt me voldoende om bijv de kanalen apart te "muten" -voor zover dat nodig is-, ik kan het ook -130 maken dan is het echt gemute.
Ik heb wel last van redelijke DC ploppen bij het in- en uitschakelen.
Zou het niet verstandiger zijn om de caps aan de output ipv de input te plaatsen?
Problemen zijn nog niet voorbij
Maar ben wel stukje opgeschoten.
Wel frustrerend trouwens dat het niet aan het programmeren ligt steeds, maar aan de beperkingen van die compiler...
Heb nu last van oscillaties volgensmij, de output is de ene keer ~vanaf 0 tot plus en de andere keer wel goed en weer keer later ~vanaf 0 tot min.
Ik heb ontkoppelctjes en een weerstand van 100 Ohm aan de output van de PGA2310s. Miss nog een ctje naar gnd daar.
/edit
Dit kwam doordat digitala voeding uitstond
Wel frustrerend trouwens dat het niet aan het programmeren ligt steeds, maar aan de beperkingen van die compiler...
Heb nu last van oscillaties volgensmij, de output is de ene keer ~vanaf 0 tot plus en de andere keer wel goed en weer keer later ~vanaf 0 tot min.
Ik heb ontkoppelctjes en een weerstand van 100 Ohm aan de output van de PGA2310s. Miss nog een ctje naar gnd daar.
/edit
Dit kwam doordat digitala voeding uitstond
[img]/balance.JPG[/img]
Maar eens een keer een positief bericht posten!
Het balans, werkt geweldig
Ook werken de andere kanalen etc.
De grootste tijd gaat in die compiler zitten ipv het programmeren
. Allerlei vreemde dingen steeds, lijkt een excuus voor niet kunnen programmeren maar is het niet.
Ik zit nu op het limiet van codepage0, ik kan alleen hier code kwijt anders loopt de boel in de soep. Dus nog optimaliseren als het lukt en anders er wat uitgooien, balkje bijv. Is wel jammer maar goed.
Maar eens een keer een positief bericht posten!
Het balans, werkt geweldig
Ook werken de andere kanalen etc.
De grootste tijd gaat in die compiler zitten ipv het programmeren
Ik zit nu op het limiet van codepage0, ik kan alleen hier code kwijt anders loopt de boel in de soep. Dus nog optimaliseren als het lukt en anders er wat uitgooien, balkje bijv. Is wel jammer maar goed.
Laatst gewijzigd door JuuL op di 05 nov 2019, 14:40, 1 keer totaal gewijzigd.
- voodooless
- Berichten: 4775
- Lid geworden op: di 02 nov 2004, 23:23
- Locatie: Arnhem
- Contacteer:
Tja, ik zei al de hele tijd dat je beter een "echte" compiler kon zoekenJuuL schreef:Ik heb een fatsoenlijke c compiler nu! Ik maak mijn hele programma opnieuw en dan gaat het wel goed want deze compiler zeurt niet om codepage bende
Tja, dat is omdat je dan de array kunt initialiseren met "hoi". later geef je er een nieuwe waarde aan, en werkt het dus niet. Daarnaast is char Text[] alleen een pointer naar een stuk geheugen, zonder dat daar ook een langte aan verbonden is.klein vraagje:
Waarom werkt dit wel:
char Text[]="hoi";
en dit niet:
char Text[];
Text="hoi";
zo werkt:
int aap[] = {2,3};
maar niet:
int aap[];
aap = {2,3};
Ik wou ook niets liever, moet je wel eentje kunnen vindendeepspace schreef:Tja, ik zei al de hele tijd dat je beter een "echte" compiler kon zoeken![]()
En hoe zou het wel moeten?Tja, dat is omdat je dan de array kunt initialiseren met "hoi". later geef je er een nieuwe waarde aan, en werkt het dus niet. Daarnaast is char Text[] alleen een pointer naar een stuk geheugen, zonder dat daar ook een langte aan verbonden is.
CODE: Selecteer alles
/////////////////////////////////////////////////////////////////////
//Write a string to the LCD
/////////////////////////////////////////////////////////////////////
void LCD_Text(int Position, Char Text[])
{
int i=0;
LCD_Comm(Position); //Go to the right position
while(Text[i]!='\0') //while the end character \0 isn't detected
{
LCD_Ch(Text[i]); //Display a character
i++;
}
}LCD_Ch("h");
LCD_Ch("o");
LCD_Ch("i");
- voodooless
- Berichten: 4775
- Lid geworden op: di 02 nov 2004, 23:23
- Locatie: Arnhem
- Contacteer:
