Padauk PFS154          


Elektronik-Labor  Labortagebuch  Projekte 


Mein Freund Rainer hat sich schon länger mit den neuen, extrem preiswerten Padauk-Controllern beschäftigt. Und er hat auch schon einen Brenner für diese Controller, der sowohl die Flash-Controller der PFS-Serie als auch die nur einmal programmierbaren (OTP-) Typen der PMS-Serie programmiert. Seine ersten Versuche waren erfolgreich. Das hat mich neugierig gemacht. Deshalb arbeiten wir jetzt zusammen daran, diese Controller genauer kennen zu lernen. Ich versuche etwas zu programmieren, er brennt es und untersucht das Ergebnis. Team-Arbeit im Home-Office. Solange das Internet steht, ist es egal, wo jeder sitzt.



Die Firma Padauk in  Taiwan gibt eine freie Entwicklungsumgebung heraus, mit der man in Assembler und in einem Mini-C programmieren kann.  Zusätzlich gibt es noch die Möglichkeit, mit SDCC zu arbeiten. Mir ist am Anfang die Padauk-IDE lieber, weil sie sehr viele Controller kennt. Spannend ist, welche Einschränkungen das Mini-C mit sich bringt. Das Bild zeigt ein kleines Projekt für den PFS154. Die Include-Datei PFS154.INC enthält die Deklarationen aller Register.



Um ein neues Projekt zu starten, wählt man zuerst File/New Project. Es öffnet sich ein Fenster mit gewünschten Einstellungen. Hier muss man nur die PFS-Serie und den Chip PFS154 wählen. Alle anderen Einstellungen können unverändert bleiben: 8 MHz, kein Watchdog und PA5 wird nicht als Reset-Eingang verwendet.



Die IDE bereitet dann ein Gerüst für das eigene Projekt vor. Man erkennt schon die Einstellung des Clock-Teilers (16 MHz/2 = 8 MHz), eine leere Hauptschleife und eine vorbereitete Interrupt-Funktion. Das passende INC-File zum Controller sucht man vergebens, und auch eine Möglichkeit, es einzufügen. Es fügt sich aber von selbst ein, wenn man das Programm zum ersten Mal übersetzt. In die Hauptschleife habe ich erstmal nur drei Zeilen eingetragen: PAC = 255; PA = 85; und PA = 170; Damit sollen alle Pins am Port A mit voller Geschwindigkeit getoggelt werden.



Mit Execute/Build erscheint zuerst ein Fenster mit weiteren Einstellungen. Wichtig ist hier nur der Spannungswächter LVR. Bei angedachtem 5V-Betrieb ist eine Schwelle von 3,5 V sinnvoll. Alles andere kann erstmal so bleiben.




Das Programm wird ohne Fehler übersetzt. Brennen, testen, geht.



Der Low-Zustand dauert 250 ns, der High-Zustand 500 ns. Da bei 8 MHz ein Takt 125 ns dauert,  bedeutet das, dass eine Portausgabe 2 Takte braucht und die Schleife ebenfalls 2 Takte. An den Ports erscheint ein Signal mit 1333 kHz, feinste Mittelwelle. Nur an PA5 nicht, denn der hat nur einen Open-Drain-Ausgang. Das hat Padauk vermutlich in weiser Voraussicht so entschieden, weil man das für einen Mittelwellenmodulator braucht.

Um die Sache langsamer zu machen, wurde das Programm dann noch etwas erweitert. Dazu gibt es eine vorbereitete .delay-Funktion. Aber auch mit einer eigenen Zählschleife haben wir es versucht. Mit .delay("0000) kamen Impulslängen von 20 ms an PA0 heraus. die anderen Ports toggeln entsprechend langsamer.

    while (1)
    {
       PAC=255;
       BYTE n;
       unsigned int i;
       while(1){
           n++;
           PA=n;
           i=1;
           while(i>0) i++;
//           .delay(20000);
       }


Mittelwellenmodulator mit dem PFC154



Video:  https://youtu.be/sKEMQCzOdxw

Für den Mittelwellenmodulator wird das letzte Programm verwendet, wobei aber der interne Takt durch 4 geteilt wird. Das Signal erscheint dann auf 667 kHz. Eine möglichst tiefe Frequenz ist günstig, weil dass das Phasenrauschen des internen Oszillators weniger störend wird. Prinzipiell könnte man den Controller auch mit einem Quarz takten, dann wäre das Signal absolut sauer.

Das Rechtecksignal erscheint am Open-Drain-Ausgang PA5-Pin. Die Amplitude des Signals hängt davon ab, welche Spannung man außen anlegt. Deshalb eignet sich der Ausgang für eine Amplitudenmodulation. Die beiden Stereokanäle R und L vom Kopfhörerausgang einer Signalquelle werden hier addiert und bilden das Modulationssignal. Die Antenne ist eine Induktionsschleife aus einem Meter Draht. Ein paralleler Kondensator soll Oberwellen unterdrücken. Im Mittelwellenradio hört man das Signal mit einer verzerrungsfreien Modulation.




Elektronik-Labor  Labortagebuch  Projekte