- 3D-Druck Einstieg und Tipps         
Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte
Ergebnis 31 bis 40 von 59

Thema: Interrupt-Abfrage >>> Routine vereinfachen

  1. #31
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    147
    Anzeige

    LiFePo4 Akku selber bauen - Video
    ...bin gerade etwas überfordert - brauche etwas mehr Zeit...
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  2. #32
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    @frabe

    Ich habe mal ein wenig quer gelesen, die letzten Einträge hier.

    Wenn Du mit Interrupt noch nichts gemacht hast, gehe erst mal in eine Doku zum Tiny und schau mal, wie man einen Interrupt programmiert. Also ein- und ausschaltet und wie man eine Interrupt Service Routine dafür erstellt. Dann machst Du ein kleines Testprogramm, zum probieren. Auf diese Weise lernst Du es verstehen und siehst, welche zeitlichen Reserven in einer Interrupt-Unterbrechung vorhanden sind und wie Du damit arbeiten kannst. Ich denke, das ist für Deine Fragestellung zuträglich. Zuerst verstehen, dann das "Pflichtenheft". Die Anforderungen müssen mit dem zusammenpassen, was umsetzbar ist. Also einfach klein anfangen, normal ergibt sich dann der Rest ziemlich von allein.

    MfG

  3. #33
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    147
    Zitat Zitat von Moppi Beitrag anzeigen
    Wenn Du mit Interrupt noch nichts gemacht hast, gehe erst mal in eine Doku zum Tiny und schau mal, wie man einen Interrupt programmiert.
    MfG
    Timer-Interrupt und PortChange-Interrupt habe ich in Testprog sicher zu Laufen gebracht - dank Datenbätter und Tuts.
    Aktiviert werde die ISR via sei(); - aber Alle zeitgleich - DAS ist derzeit mein Problem...
    Ich Suche nach einer einfachen(!) sequenziellen Ein-/Ausschaltung bestimmter Pins, die dann durch ISR überwacht werden. Siehe hierzu meinen vorletzten Eintrag.
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  4. #34
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    898
    Zitat Zitat von frabe Beitrag anzeigen
    ...bin gerade etwas überfordert - brauche etwas mehr Zeit...
    Nimm sie Dir!

    Der Unterschied zwischen Genie und Normalo ist: Das Genie versteht die Relativitätstheorie sofort, der Normalo braucht dafür etwas Zeit.
    ...manchmal auch etwas mehr als das Leben hergibt.
    Geändert von Holomino (08.08.2019 um 16:51 Uhr)

  5. #35
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Hmmm. Ich hoffe, dass ich Dich richtig verstanden habe.

    Das gemeinsame Ein- und Ausschalten aller Interrupts ist normalerweise kein Problem, sondern so vorgesehen.
    Um einzelne Interruptquellen zu maskieren, gibt es (normalerweise) ein Interrupt-Maskierungs-Register.
    Das scheint sogar bei den ATtiny und dem ATmega für einzelne Pins zu funktionieren.

    PCMSK – Pin Change Mask Register

    Datenblatt ATtiny24/44/84 (7701G–AVR–02/15)

    Seite 47 und 48

    Vielleicht ist es das, was Du suchst.
    Geändert von Moppi (09.08.2019 um 02:11 Uhr)

  6. #36
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    147
    Verstehe!
    Sowohl beim Timer-Interrupt als auch bei PortChange-Interrupt habe ich immer alles Eingeschaltet.
    Über Funktionen könnte ich auch Pin-genaue Konfiguration gewährleisten. Hier könnte ich über ausgelagerte Funktionen immer nur einen Bit im Register PCMSK0 ein/ausschalten.

    So sah bis lang mein PortChange-Interrupt-Konfig aus;
    Code:
    int main(void)
    {
    	DDRB |= (1<<PB0);	
    	DDRA |= (1<<PA6);	
    	DDRA &= ~((1<<PA4)|(1<<PA5));	
    
    	//Interrupt-Routine wird defeniert
    	GIMSK = (1<<PCIE0);					// Bank0 wird eingeschaltet (PA0-PA7) // BANK1 beinhaltet PB0-PB3
    	PCMSK0 = (1<<PCINT4)|(1<<PCINT5);		// PCINT4(PA4) und PCINT5(PA5) könnte Interrupt auslösen
    	sei();								// Interrupt´s werden gestartet 
    
    	LEDaus();
    	SUMaus();
    	StartBlock();
    	
    	while(1)
      {
    
    								
    	}
    }
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  7. #37
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    147
    Hallo.
    Habe wieder einwenig Zeit zu experimentieren.

    Bei meinem derzeitigen Schritt geht es darum, innerhalb der while(1), oder eines ISR bestimmte Pin ein- oder auszuschalten.

    Folgender Versuch klappt nicht - PA5 bleibt dauerhaft im Eingangs-Modus.
    Code:
    LEDgn_ein();
     DDRA &= ~(1<<PA5); // Eingang!
      _delay_ms(1000);
    LEDgn_aus();
     DDRA |= (1<<PA5);  //Ausgang, somit kein Eingang?
      _delay_ms(1000);
    Aber warum?
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  8. #38
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Wie kommst du darauf dass es nicht funktioniert?! Misst du mit einem Messgerät? Hast du in PORTA denn auch PA5 gesetzt?

    Nur weil du den Pin aus Ausgang stellst gibt er nicht automatisch ein High Signal aus, du musst auch das PA5 im PORTA setzen, damit er den Ausgang high setzt.

    Das DDR bestimmt nur ob dein Pin aktiv (5V mit PA5 in PORTA oder GND ohne PA5) oder passiv (High-Z oder Pull Up wenn PORTA gesetzt ist) ist
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  9. #39
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    147
    Zitat Zitat von Ceos Beitrag anzeigen
    Wie kommst du darauf dass es nicht funktioniert?!
    Soll:
    Sobald LED/gn kann PA5 als Eingang, Taster über einen Timer-ISR eine LED/rt schalten.
    Solang LED/gn ausgeschaltet ist, kann auf Taster PA5 rumgetippt werden > nichts passiert.
    Ist:
    Taster an PA5 kann jederzeit steuern. Also dauerhaft als ein Eingang konfiguriert.
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  10. #40
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Sorry das ist etwas zu kurzsilbig, ich versteh der Satz gerade nicht mal

    Der ISR und auch das PIN Register funktionieren unabhängig vom DDR Register!
    Observe that, if enabled, theinterrupts will trigger even if the INT0 or PCINT[5:0] pins are configured as outputs
    du musst den Interrupt also schon aus/blindschalten und dann den Pin über das PORT Register entsprechend setze.

    Der Taster an einem auf output geschalteten Pin bedeutet natürlich auch ein Kurzschluss, ist also generell nicht empfehlenswert!
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

Seite 4 von 6 ErsteErste ... 23456 LetzteLetzte

Ähnliche Themen

  1. [ERLEDIGT] Interrupt Routine
    Von Saturas077 im Forum Assembler-Programmierung
    Antworten: 8
    Letzter Beitrag: 23.04.2014, 13:46
  2. Codebeispiel für Lesen von RC5 Code mit Interrupt-Routine
    Von -tomas- im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 19
    Letzter Beitrag: 25.05.2011, 13:54
  3. Interrupt Routine
    Von luvat im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 4
    Letzter Beitrag: 16.03.2008, 21:54
  4. Interrupt in ISR-Routine freigeben
    Von dj5am im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 10.08.2007, 09:44
  5. uart interrupt routine
    Von Computerkora im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 25.11.2006, 14:45

Berechtigungen

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

Solar Speicher und Akkus Tests