- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Mpasm Fallen

  1. #11
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Anzeige

    Powerstation Test
    Hallo *Mario*

    Schön, dass Du wieder was berichtest. Ich schreibe jetzt ein Programm (in ASM) für mein Logic Analyser und habe ich bis jetzt ca. 16 kB fertig.
    Ich wollte mir die Variablen in Bank 5 ablegen, aber es ist leider ohne relocable code nicht möglich (habe ich sogar im Microchip Forum nachgefragt). Ich kann mir aber, wegen den bremsenden "banksel", das nicht leisten, da es sehr schneller multitask ist.

    Ich benutze Timer0 und Timer1 zum Messen der Taktfrequenz (variabler LC Oszillator) und musste externen 32 kHz Oscillator verwenden, weil der Timer1 Oszillator mit einem Uhrenquarz nicht funktioniert hat, oder wenn schon, dann nicht auf der Quarzfrequenz, sondern daneben. Ich mache alles echt und halte Simmulationen als Zeitverlust. Um externen Oscillator für Timer1 zu nutzen, muss aber Timer1 Oscillator in T1CON eingeschaltet (T1OSCEN bit gesetzt) sein. Das ist aber eine Falle vom Datenblatt. Ich hoffe, dass ich durch die alle Fallen durchkomme und mein Logic Analyser bald fertig wird.

    Schöne Grüsse !

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    27.01.2006
    Beiträge
    44
    Hallo PICture,

    ich werd mir das mal im Datenblatt (MCU-Manual) zum Timer1 ansehen. Klingt jedenfalls komisch. Zu den Simulationen: Prinzipiell gebe ich Dir recht, dass Aufbau mehr Wahrheit zeigt. Ich Simuliere hauptsächlich mehr wegen Ermangelung an Ausrüstung und Zeit (da kann ich mal zwischendurch was machen ...).
    Der zweite Grund ist, dass man besseres Debugging in MPLAB machen kann. Beispielsweise einen EEPROM mit dessen Protokoll.

    Für den Timer kannst Du's wie folgt machen:
    Erstelle eine Text-Datei (Endung .scl) mit folgendem Inhalt:

    configuration for "pic16f876a" is
    end configuration;


    testbench for "pic16f876a" is
    begin

    RTCLKIN: process is
    begin
    loop
    T1CKI <= '0';
    wait for 15 us;
    T1CKI <= '1';
    wait for 16 us;
    end loop;
    end process RTCLKIN;

    end testbench;

    Dann kannst Du mit "Attach SCL" die Datei in MPlab einhängen. Damit kannst Du dann den Code testen, der Timer wird brav das machen was er soll, auch interrupt generieren (wenn konfiguriert).
    Grüße
    Mario

  3. #13
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo *Mario*!

    Vielen Dank für Deine Bemühungen mich zur Simulation zu bringen, da hast Du aber leider keine Chancen!

    Was nutzt mir das, wenn in der Wirklichkeit, der Uhrenquarz vom Timer1 Oszillator als Kondensator gesehen wird ?

    Schöne Grüsse!

  4. #14
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.11.2004
    Beiträge
    332
    Hallo Zusammen,

    wäre ein Hinweis auf die verwendete Version nicht von Nutzen ?
    Oder ist es bei Euch immer die aktuelle Version.

    Gruss Ritchie
    Kaum macht man es richtig, schon funktioniert's ...

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    27.01.2006
    Beiträge
    44
    @Ritchie,

    guter Hinweis. Ich beziehe mich auf die Version 7.31. War bis vor kurzem noch die neueste Version ...
    Ich glaube dass es ratsam ist, immer auf die neueste Version zu setzen, die Liste der bekannten Fehler ist ja geradezu erschreckend! (wegen SCL werde ich aber nicht auf 8.xx umsteigen (können)).

    @PICture,

    hast vollkommen recht. Da ich kein Oszi habe, kann ich das sowieso nicht nachprüfen, bzw. nur über den PIC selber (Main-Clock-Vergleich mit 32kHz Clock etc. , sonst ist "gut raten" angesagt. Ich benutze deshalb die Simulation für digitale Anwendungen, analoges ist aussen vor . Da kriegt man wirklich die blödsten Fehler raus, beispielsweise Display-ansteuerung, digitale nicht-standard Bauteile, etc. ...

    Gruß
    Mario

  6. #16
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo!

    Anscheinend ist die Reihenfolge den "#define" Direktiven wichtig. Ich weiss es nicht warum, aber bei dem zweiten Beispiel im Code wird das Unterprogramm "RegClr" nicht ausgeführt, wenn "call Test0" benutzt wird.

    Wenn es aber so wie in dem ersten Beispiel definiert wird, funktioniert es.

    MfG
    Code:
    #define	@DT	PORTB,7
    #define	@CK	PORTB,6
    #define	@TDT	TRISB,7
    #define	@TCK	TRISB,6
    #define	Test0	RegClr
    #define	_Fcra	Flags,0
    #define	_Fcrp	Flags,1
    #define	_Fdca	Flags,2
    #define	_Ferr	Flags,3
    
    #define	@DT	PORTB,7
    #define	@CK	PORTB,6
    #define	@TDT	TRISB,7
    #define	@TCK	TRISB,6
    #define	_Fcra	Flags,0
    #define	_Fcrp	Flags,1
    #define	_Fdca	Flags,2
    #define	_Ferr	Flags,3
    #define	Test0	RegClr

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen