Neueste Beiträge

Seiten: [1] 2 3 ... 10
1
Elektronik und Schaltungen / Audio Lautstärkeregelung mit MUSES Chip
« Letzter Beitrag von Rudi_Ratlos am Mai 06, 2018, 12:36:54 Nachmittag »
Hallo PIC-Freunde,

ich beabsichtige, eine "universelle" Lautstärkeregelung für eine AUDIO-Endstufe zu bauen.
Kern der Regelung soll ein PIC16F886 Prozessor sein.
Die von mir entworfene Schaltung mit PCB-Layout besteht aus einem Mother- und Daughterboard mit dem ausgewählten Lautstärkeregler.

Lautstärkeregler können sein: entweder ein duales POTI oder ein PGA2311-Chip oder ein Muses72320-Chip oder ...
Zur Zeit existieren Daughter-Boards für die oben genannten 3 Varianten.




Die Bilder zeigen das Motherboard mit aufgesetztem Daughterboard für ein motorisiertes Poti (z.B. ALPS Blue Velvet)  und das Daughterboard mit dem MUSES-Chip.
Das Motherboard enthält Regler für die geforderten Spannungen (TPA7Axxx, 78xx).
Die Aktionen (Source-Wahl, Mute, Lautstärkeregelung, ...)  werden per Fernbedienung (Philips RC5-Code) gewählt.

Die Programmierung ist soweit gediehen, dass die Musik-Auswahl (die Auswahl der Eingangs-Relais) funktioniert.
Aber bevor ich mit der Poti- bzw. MUSES-Chip Programmierung (in High-Tech C-Compiler, SPI(??) - Interface - was ist das denn schon wieder) beginne:

Hat Jemand von Euch Lust, an diesem kleinen Projekt mitzuwirken? Zu Zweit geht doch alles besser und einfacher!
Ich habe noch einen Satz mit allen erforderlichen PCBs (Mother, Daughter 1, 2, 3, ...) mit gelötetem Muses- und TPS7Axxx - Chips zur Verfügung.
Nicht ganz umsonst, leider - aber für 25€ (siehe allein den Preis für den MUSES Chip) gebe ich den gesamten Satz gerne einem Interessenten her.

Bei Interesse oder Fragen: gerne eine EMail an mich.

Viele Grüße - Rudi_Ratlos





 
2
Programmer und Debugger / Womit und wie soll ich beginnen, wenn ich am PIC32 lernen möchte.
« Letzter Beitrag von vril am Januar 09, 2018, 10:33:34 Vormittag »
Hallo und Guten Tag,

ich komme aus der C-Welt, habe beruflich E-technischen Hintergrund und
möchte mich nun mal mit der Welt der µController befassen.

Programmieren möchte ich kleinere Spielereien anfangs in Assembler,
später in C.

Ich arbeite hauptsächlich unter unixoiden Betriebssystemen und mag als Editor
den VI(M) ... somit kommen für mich die meissten IDEs nicht in Frage.

Für FreeBSD und OSX gibt es ja die gputils - damit dürfte ich schon zurecht kommen.

Was mir aber vollkommen unklar ist, welches Board ich für den PIC32 kaufen sollte.
Es muss via USB mit Mac und FreeBSD PC kommunizieren können und muss bequem
mit einem Steckbrett für LED-Spielchen etc. erweiterbar sein.

Könnt ihr mir bitte ein paar Vorschläge machen - zwar sind diese Themen hier in diesem Forum
mitunter so oder so ähnlich schon behandelt - aber teilweise auch schon zig Jahre alt.

Danke, für Eure Mühe
 
EDIT: Nachtrag: -... es sollte aber schon eine Lösung für den PIC32 sein, auch wenn der zum Lernen
vielleicht ne Nummer zu gross ist ... aber eventuelle spätere ernsthaftere Dinge werden sich ja auch auf dem 32er
abspielen
3
Timer (Allgemein) / Timer0 bei PIC18F2620 - Ungenaue Durchlaufzeit??
« Letzter Beitrag von Monika am Januar 08, 2018, 16:28:25 Nachmittag »
Hallo,

ich arbeite seit Jahren mit dem PIC18F2620 und alle "normalen" Anwendungen von Timer0, auch in Kombination mit anderen Interrupts, verhalten sich meistens so, wie ich es mir erwarte.

Heute steht allerdings ein eher zeitkritisches Projekt an, das einige Verständnisfragen aufwirft.

Kurz zum Ablauf:
Abhängig von einem Potentiometer sollen Impulse mit einer Frequenz von 100 - 15750Hz ausgegeben werden.

Da ich mir nicht sicher war, wie sich der PIC bei so hohen Ausgangsfrequenzen verhält, habe ich damit begonnen, das 15750Hz-Signal zu erzeugen:

(Insert Code funktioniert leider nicht!)
void highprio_int(void)
{
   if(INTCONbits.TMR0IF)
   {
      INTCONbits.TMR0IF = 0;
      WriteTimer0(timer_startwert);
      
      AUSGABE_PIN = 1;  //Impulsausgabe
      AUSGABE_PIN = 0;
      
      laufvariable1++;
      laufvariable2++;      
   }
}

Den Timer-Startwert habe ich mir mit 65028 berechnet, allerdings stimmt dann die Ausgangsfrequenz nicht, sondern es wird ein Wert von 65108 benötigt, damit ich mit dem Oszilloskop das richtige Ausgangssignal messe.
Das ist für mich auch noch relativ plausibel, da ja bei so einer kurzen Durchlaufzeit das Rein-/Rausspringen in die Interruptroutine ein nicht zu vernachlässigender Zeitfaktor ist.

Das Hauptprogramm ist sehr einfach gehalten: Nach jedem 270. Impuls soll mit dem ADC der Potentiometer-Wert eingelesen und dann die Frequenz gegebenenfalls angepasst werden.

void main(void)
{
   Init();                  // Funktionsaufruf für alle notwendigen Einstellungen

   while(1)      
   {   
      TESTPIN = 1;
   
      if(laufvariable1 >= 270)
      {
         laufvariable1 = 0;
         
         ConvertADC();
         while(BusyADC());

         //ADC_result = ReadADC();      
      }
      TESTPIN = 0;
   }
}

Die beiden Zeilen ConvertADC() und while(BusyADC()) ändern am Ausgangssignal nichts, aber sobald ReadADC() aufgerufen wird, ändert sich die Ausgangsfrequenz 15700Hz auf 15000Hz. Wenn dann noch die Berechnung für den Timer-Startwert aus dem ADC_result dazukommt, liegt die Frequenz überhaupt nur mehr bei 12kHz!
Mit Hilfe des Testpins kann ich nachmessen, dass das Hauptprogramm schnell genug läuft und ich noch lange nicht an der Grenze des Möglichen angelangt bin.

Ich hätte mir erwartet, dass bei jedem 270. Impuls irgendeine Verzögerung oder ähnliches auftritt, aber nicht, dass sich dadurch die gesamte Zeitbasis des Timers ändert!!! Wie kann das passieren? Ist das nicht die Definition des Timer-Interrupts, dass dieser immer zu einer voreingestellten Zeit aufgerufen wird und das restliche Programm in der verbleibenden Zeit dazwischen abgearbeitet wird?

Durch weitere Messungen habe ich noch versucht, die Ungenauigkeit genauer zu definieren und ich glaube, dass der größte Zeitfehler beim Zurückspringen von der Interruptroutine in das Hauptprogramm passiert. Ist diese Zeitspanne vielleicht davon abhängig, welche Variablen im Hintergrund gesichert werden müssen?

Hat jemand dafür eine Erklärung?

Vielen Dank,
Monika
4
Probleme und Fragen / Pic18f248 config Einstellung beim k150 microbrn
« Letzter Beitrag von Marco23 am Dezember 19, 2017, 20:06:29 Nachmittag »
Schön guten abend, mein Name ist Marco und ich habe folgende Probleme !

Ich habe mir für mein auto ein selbst Bausatz für einen Diagnose interface ( can ) bestellt !

Ich könnte mir auch so was fertig kaufen aber ich bastell halt gerne !

Man muss alles selber zusammen löten und den pic mit der dazu gehörigen hex Datei brennen , ich habe mir den billig Brenner pick150 made in China gekauft benutze dazu microbrn , wenn ich die hex lade und brennen will kommt eine Fehlermeldung " 0x00000..... Good 0x0001 Bad 0x400f "

Habe herausgefunden das es an der config Einstellung liegt ,
genauer an die Rom u. Boot read protect .... Das es ein lese und Schreibschutz ist weis ich auch.

Die config ist von der hex aus vorgegeben , aber den pic brennen geht nur wenn ich den Schutz deaktivier !?

Da wo ich das gekauft habe sagen mir nur, es liegt an meinen Brenner und Programm!

Was ich mir auch gut vorstellen kann, aber meine Frage ist wenn ich es deaktiviert lasse wirkt es sich auf irgend einer weise auf die Funktionalität aus ?

LG Marco

5
MPLAB / MPLAB X und Hi-Tech Compiler
« Letzter Beitrag von dodo am Dezember 05, 2017, 18:34:25 Nachmittag »
Hallo, ich möchte eine Reihe laufender Projekte vom alten MPLAB aufs das MPLAB X portieren und weiter den Hi-Tech Compiler nutzen. Ich kann ihn allerdings nicht richtig integrieren. In der Projektumgebung ist er aufgeführt, jedoch nicht zu aktivieren. Der Compiler selbst ist installiert. Wie macht man es richtig?
Konrad
6
Programmiersprache Assembler / Re: PIC12F617 PWM Modul
« Letzter Beitrag von cermid am Oktober 20, 2017, 20:42:45 Nachmittag »
Gelöst! Yeah.

Aufgrund der Shoot Trough prevention ließ sich nur P1B Vollständig durchschalten, P1A hat genau um die Länge der Shoot Trough prevention Zeit noch einmal den Zustand gewechselt.
Ich setze jetzt, wenn voll durch geschalten werden soll, die Shoot trough prevention Zeit auf 0 (PWM1CON = 0).

Gruß Thomas
7
Entwicklungswerkzeuge / PIC32 LCC Demo
« Letzter Beitrag von BL1 am Oktober 18, 2017, 12:46:35 Nachmittag »
Moin,


hat jemand schon mal mit diesem Demo gearbeitet?
8
Programmiersprache Assembler / PIC12F617 PWM Modul
« Letzter Beitrag von cermid am Oktober 14, 2017, 13:35:37 Nachmittag »
Hallo zusammen,

ich hoffe mir kann jemand bei folgendem Problem helfen:

Beim PIC12F617 habe ich das PWM Modul initialisiert und funktioniert. Allerdings Kann ich kein 100% Duty Cycle erzeugen. Wenn CCPR1L gleich (oder sogar größer) CCPR1L ist wird immer noch ein Duty Cycle von einem TMR2 Takt ausgegeben. Also wenn TMR2 = PR2 ist wird der PWM Ausgang noch einmal auf null gesetzt (ist invertiert) und bei erreichen von TMR2= 0 wieder auf eins gesetzt. Wie kann ich diesen einen Takt weg bekommen? Hat jemand noch einen Tip?
In diesem Fall sind die für das PWM Modul notwendigen Register wie folgt gesetzt:
CCP1CON  B'10001101'
PWM1CON B'10000001'
APFCON B'00000000'
CCPR1L = 101 (oder größer)
PR2 = 101

Gruß Thomas
9
CCS Compiler / Gartenorchideen
« Letzter Beitrag von Magiwriva am Oktober 07, 2017, 16:01:43 Nachmittag »
Hallo ich bin auf der suche nach einen Gartenorchideen Lieferant kann mir jemand was empfehlen?
10
Programmiersprache Assembler / Re: Drehencoder zum 1000. mal
« Letzter Beitrag von delucks am Mai 24, 2017, 09:20:39 Vormittag »
Aufgrund meiner Antwort keine zu grosse Hoffnung machen !
bisher habe ich gute Erfahrungen mit der Sprut-Idee gemacht;Du sagst leider nicht wie der Enoder angschlossen ist.
Je nachdem ob Pulldown-Widerstände und die Drehschalter gegen Spannung schalten oder Pullups mit Masseschaltern, es werden die richtigen Impusformen erzeugt,allerdings falsches Timing.
Ist nur eine Idee,habe dein Programm nicht gelesen.

Frank
Seiten: [1] 2 3 ... 10