- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: Atmega32 Interrupt Timing

  1. #11
    RN-Premium User Begeisterter Techniker
    Registriert seit
    30.04.2004
    Alter
    47
    Beiträge
    245
    Anzeige

    Powerstation Test
    Für mich klingt die ganze Sache sehr zeitkritisch - in meinen Augen eine Sache die komplett in Assembler aufgebaut werden sollte, da hast du deutlich einfacher die Kontrolle was passiert. Wie lange zeichnest du da auf und in welchen Speicher? Nur in das Interne Ram? Der ist ja relativ schnell voll. Und wie verarbeitest du das weiter? Bremst du dich da vielleicht aus?

    lg
    Alex

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.01.2004
    Ort
    Erlangen, Bayern
    Alter
    42
    Beiträge
    253
    Der Ringpuffer ist 3*512 Bytes groß. Aufgezeichnet wird nonstop. Ein Pc holt dann zyklisch die Daten aus dem Controller. Das Hauptprogramm tut nichts anderes als vor und nach die Daten in eine MMC zu schreiben, die wiederrum wie ein Ringpuffer aufgebaut ist. (So grossen sram, dass er für eine halbe Stunde Aufzeichnung, zu annehmbaren Preisen, ohne Abholen reicht, habe ich nicht gefunden). Ein Druckauftrag hat ein Zeichenvolumen von max 1044Byte.

    Die Kontrolle über die Kommunikation zu übernehmen, habe ich mir auch schon überlegt, allerdings kann dann nichtmehr gedruckt werden, wenn ich, warum auch immer, ausfallen sollte. Und die Kommunikation zwischen Drucker und PC muss dringend weitergehen, da dort Prozessdaten einer Baugruppe gedruckt werden, die zwecks Qualitätssicherung aufbewahrt werden müssen.

    Der PC Archiviert die Daten in einer Datenbank, es kann allerdings, z.B. durch Stromausfall, vorkommen dass er bis zu einer halben Stunde die Daten nicht abholt, die ich aufzeichne. Ich hingegen (mein Controller ) hänge zusammen mit der Anlage an einem Notstromaggregat.

    Gruss
    Michael

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.01.2004
    Ort
    Erlangen, Bayern
    Alter
    42
    Beiträge
    253
    Falls jemand mal drüber stolpert, ich habe das Timing jetzt mal mit einem Oszi nachgemessen.
    Der Code in C (gcc):
    Code:
    void SIG_INTERRUPT0(void){
    	PORTB &= ~(1<<PB3);	//Set to low
    	asm volatile("NOP"::);
    	asm volatile("NOP"::);
    	asm volatile("NOP"::);
    	asm volatile("NOP"::);
    	asm volatile("NOP"::);
    	asm volatile("NOP"::);
    	asm volatile("NOP"::);
    	asm volatile("NOP"::);
    	asm volatile("NOP"::);
    	asm volatile("NOP"::);
    	asm volatile("NOP"::);
    	asm volatile("NOP"::);
    	PORTB |= (1<<PB3);	//Set to High
    	sei();
    }
    ergab mit einem 20MHz Quarz:
    https://www.roboternetz.de/phpBB2/al...php?pic_id=840


    Wobei das Blaue das externe Signal an Int0 ist, und das Rote die Leitung, die ich in der Interruptroutine geschaltet habe.

    Das Signal kommt von der Strope Leitung des Druckers.

    Grüsse Michael

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests