MK3870 vervanger voor 22AH798

FM, AM, voor ieder wat wils. Tuners zijn nog steeds hot en Philips heeft een hoop mooie gemaakt.

Moderator: Moderators

Gebruikersavatar
Regenpak
Berichten: 859
Lid geworden op: 13 dec 2020, 18:44
Locatie: Amsterdam West
Contacteer:

23 nov 2021, 13:38

Die buggy tijdsinstelling zat me toch dwars. In mijn bed ermee liggen spelen en ineens had ik het! Ik werd conducteur! Oh nee, er zaten wat interrupts en flag tests fout. Deze code is zó uitgebreid aan het worden dat ik het overzicht een beetje verlies. Soms. Maar gelukkig kwam ik eruit:
mk3870-14246_v0.06.pdf
(80.83 KiB) 12 keer gedownload
Nu nog effe:
  • System function select (TAPE, PU, FM)
  • MW, LW receive (PLL+function)
  • Memory buttons and tuning
Dit project is nu al het grootste dat ik tot nu toe heb aangepakt en ik ben nog geeneens klaar... Alhoewel, de Cyrus AM/FM tuner was groter (1098 regels code inclusief commentaar) maar die is min of meer af. En die heeft veel meer lookup tables.

Tjerk
snameroc
Donateur
Berichten: 6126
Lid geworden op: 01 mei 2010, 13:45

23 nov 2021, 17:32

Snachts moet je slapen, maar ik snap wat je bedoelt het laat je niet los.
Gebruikersavatar
Regenpak
Berichten: 859
Lid geworden op: 13 dec 2020, 18:44
Locatie: Amsterdam West
Contacteer:

23 nov 2021, 17:40

Dat is zo maar dit was tijdens mijn siesta. De volgende stap is een lastige omdat er veel gecheckt moet worden. Zo van: ik ga van FM naar PU, dan moet ik PU op het schermpje zetten en dan de klok. De pulser (rotary encoder) moet worden gedisabled maar het instellen van de tijd moet weer wel kunnen. Maar dat is een beetje puzzelen.

Tjerk
Gebruikersavatar
marcrolfes
Donateur
Berichten: 1477
Lid geworden op: 08 dec 2020, 07:34
Locatie: Uden

23 nov 2021, 17:41

Regenpak schreef: 23 nov 2021, 13:38 en ineens had ik het! Ik werd conducteur!
Kedengkedeng

UNIF507MK.png
Nu stop ik er echt even mee (grapje) :whistle:
Gebruikersavatar
Robertvs
Berichten: 2162
Lid geworden op: 30 dec 2012, 13:32
Locatie: regio ArnhemZ

23 nov 2021, 17:51

Knap stukje code.... Wat verschrikkelijk van je broer ... Sterkte !
541, 544, 585, (F9638 unrefurbished in dit theater)
Gebruikersavatar
Will
Donateur
Berichten: 6911
Lid geworden op: 24 mei 2009, 22:56
Locatie: Het uiterste Zuiden
Contacteer:

23 nov 2021, 18:28

Regenpak schreef: 23 nov 2021, 17:40 De volgende stap is een lastige omdat er veel gecheckt moet worden. Zo van: ik ga van FM naar PU, dan moet ik PU op het schermpje zetten en dan de klok. De pulser (rotary encoder) moet worden gedisabled maar het instellen van de tijd moet weer wel kunnen.
Dat is de reden dat ik liever alleen het strikt noodzakelijke op interruptbasis doe.
In een lus loop je dan (conditioneel) de verschillende subroutines af en een interrupt kan dan alleen van de "master" komen of van een klokje dat "de tijd" bijhoudt.
Maar met interrupts gaat het natuurlijk ook. Dan zou ik een stel vlaggen bijhouden in welk onderdeel de gebruiker (en dus de uP) zit te pielen. Aan het begin van een int toets je dan of de routine relevant is en springt er eventueel direct uit.

Ach ja, ieder zijn codevoorkeuren :mrgreen:

Intussen zijn er heel wat uurtjes in gaan zitten, denk ik :shhh: . (Zo gaat dat nu eenmaal).

Mooi werk hoor! :clap:
Een verzamelaar ziet niet wat hij al heeft, hij ziet alleen wat hij nog mist.
Gebruikersavatar
Regenpak
Berichten: 859
Lid geworden op: 13 dec 2020, 18:44
Locatie: Amsterdam West
Contacteer:

23 nov 2021, 19:47

Will schreef: 23 nov 2021, 18:28Maar met interrupts gaat het natuurlijk ook. Dan zou ik een stel vlaggen bijhouden in welk onderdeel de gebruiker (en dus de uP) zit te pielen. Aan het begin van een int toets je dan of de routine relevant is en springt er eventueel direct uit.
Maar dat doe ik ook. Heb nu 16 flags maar daar zitten ook de system control bits bij. Debuggen is een bitch maar dat is het altijd.
Will schreef: 23 nov 2021, 18:28 Ach ja, ieder zijn codevoorkeuren :mrgreen:
Zo is het maar net 8-)
Will schreef: 23 nov 2021, 18:28 Intussen zijn er heel wat uurtjes in gaan zitten, denk ik :shhh: . (Zo gaat dat nu eenmaal).

Mooi werk hoor! :clap:
Zo gaat het zeker. Maar bedankt!

Tjerk
Gebruikersavatar
Regenpak
Berichten: 859
Lid geworden op: 13 dec 2020, 18:44
Locatie: Amsterdam West
Contacteer:

23 nov 2021, 19:47

Robertvs schreef: 23 nov 2021, 17:51 Knap stukje code.... Wat verschrikkelijk van je broer ... Sterkte !
Dank je.

Tjerk
Gebruikersavatar
Regenpak
Berichten: 859
Lid geworden op: 13 dec 2020, 18:44
Locatie: Amsterdam West
Contacteer:

23 nov 2021, 21:16

Grrr... het begint behoorlijk spaghetticode te worden. Moet eerst de boel maar eens fatsoeneren in de debounce interrupt (TESTSTATE). Effe klooien met flowcharts.

Edit: sod the flowcharts. De boel is nu gefatsoeneerd en alle functionaliteit die ik wilde zit er nu in. Bijvoorbeeld het instellen van de klok in stand PU of TAPE. Ging toch nog wel rap. Op dus naar de volgende stap: memory tuning (EEPROM erin prakken).

Tjerk
Gebruikersavatar
Regenpak
Berichten: 859
Lid geworden op: 13 dec 2020, 18:44
Locatie: Amsterdam West
Contacteer:

24 nov 2021, 21:20

Huh. EEPROM zit op geheugenlocaties 0xF00000-0xF000FF. Me suf gezocht naar die adressen. Uiteindelijk vond ik die hierrrrr. Kan intussen de laatste frequentie weer terugkrijgen na stroomuitval. De memory recall en store functies zijn wat lastiger. Moet eigenlijk weten welke waarden de midden- en langegolf moeten hebben zodat ik maar twee bytes hoef weg te schrijven. Of gewoon niet moeilijk doen en drie nemen. Ik heb er 256. Of zelfs vier want dan kan ik het makkelijker uitrekenen (twee keer RLNCF: B'00000001' -> B'00000010' -> B'00000100'). En dat negen keer. Nul is laatste frequentie en system.

De store functie krijgt z'n eigen keyboardscanner zolang STORE is ingedrukt of de timeout nog niet is afgelopen. Effe kijken hoe ik het MEMORY display kan laten knipperen...

Tjerk
Gebruikersavatar
Will
Donateur
Berichten: 6911
Lid geworden op: 24 mei 2009, 22:56
Locatie: Het uiterste Zuiden
Contacteer:

25 nov 2021, 10:16

Regenpak schreef: 24 nov 2021, 21:20 Huh. EEPROM zit op geheugenlocaties 0xF00000-0xF000FF. Me suf gezocht naar die adressen. Uiteindelijk vond ik die hierrrrr.
Volgens de datasheet is het niet de bedoeling dat je het direct aanspreekt, maar via de special function registers:
The data EEPROM is a nonvolatile memory array, separate from the data RAM and program memory, that is used for long-term storage of program data. It is not directly mapped in either the register file or program memory space but is indirectly addressed through the Special Function Registers (SFRs). The EEPROM is readable and writable during normal operation over the entire VDD range.
Five SFRs are used to read and write to the data EEPROM as well as the program memory. They are:
• EECON1 • EECON2 • EEDATA • EEADR
Pag 83 incl code voor read/write
klikklik (maar die heb je natuurlijk al).
Een verzamelaar ziet niet wat hij al heeft, hij ziet alleen wat hij nog mist.
Gebruikersavatar
Regenpak
Berichten: 859
Lid geworden op: 13 dec 2020, 18:44
Locatie: Amsterdam West
Contacteer:

25 nov 2021, 10:51

Will schreef: 25 nov 2021, 10:16Volgens de datasheet is het niet de bedoeling dat je het direct aanspreekt, maar via de special function registers
Dat klopt maar ik moet ze kunnen programmeren zodat de memory presets voorgeprogrammeerd zijn. In de code gebruik je inderdaad de daarvoor bedoelde commando's en SFR's. Die code is al gecopy-pasted en werkt ook al.

Tjerk
Gebruikersavatar
Will
Donateur
Berichten: 6911
Lid geworden op: 24 mei 2009, 22:56
Locatie: Het uiterste Zuiden
Contacteer:

25 nov 2021, 13:03

Regenpak schreef: 25 nov 2021, 10:51 Dat klopt maar ik moet ze kunnen programmeren zodat de memory presets voorgeprogrammeerd zijn.
Ik snap niet wat je hier bedoelde. :think:
Een verzamelaar ziet niet wat hij al heeft, hij ziet alleen wat hij nog mist.
Gebruikersavatar
ChromeMaximaII
Donateur
Berichten: 3349
Lid geworden op: 09 aug 2014, 22:02

25 nov 2021, 13:19

Denk dat hij bedoelt dat met het flashen van de PIC ook meteen gedefinieerde geldige waarden in dat EEPROM gedeelte staan.
Gebruikersavatar
Regenpak
Berichten: 859
Lid geworden op: 13 dec 2020, 18:44
Locatie: Amsterdam West
Contacteer:

25 nov 2021, 14:21

ChromeMaximaII schreef: 25 nov 2021, 13:19 Denk dat hij bedoelt dat met het flashen van de PIC ook meteen gedefinieerde geldige waarden in dat EEPROM gedeelte staan.
Inderdaad. Flashen, programmeren... terminologie is hier wat verwarrend. Als ik het programma in de PIC vrot (met mijn programmer) dan moeten de EEPROM geheugenlocaties van de juiste waardes worden voorzien. Ik test niet op ongeldige frequenties (PLL) dus die mogen dan ook niet kunnen worden opgeroepen.

Tjerk
Plaats reactie