- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 14

Thema: Taster interrupt

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.05.2013
    Beiträge
    7

    Taster interrupt

    Hallo zusammen,
    ich beschäftige mich gerade mit µP und arbeite mit einem Asuro für einige Tests.
    Als ich den Interrupt für die Schalter gesetzt habe hat das auch alles wunderbar funktioniert. Wenn ich jetzt aber versuche über den AD Wandler zu bestimmen, welcher Taster gedrückt wurde läuft das ganze in eine Endlosschleife.
    Code:
      taster_interrupt:
       push R16
       push R17
       in R16, SREG ;statusreg saven
       push R16
       MOTOR_BREAK
       SET_BUMPER_TO_ADC_SOURCE
       SBI DDRD, PD3 
       ;SBI PORTD, PD3  ;if set the interrupt will not stop
    
       rcall delay_short ;give the capacitor a bit time
       GET_ADC_VALUE R17, R16 ;r17=high, r16=low
    
       CBI PORTD, PD3
       CBI DDRD, PD3 
       TRANSMIT R17 ;and send the high result
       TRANSMIT R16 ; and send the low result
    
       pop R16
       out SREG, R16; restore status bits
       pop R17
       pop R16
       reti
    Folgendes Problem. Um die Spannung erfassen zu können muss ich PD3 ja zum Ausgang machen und auf High setzen und nach der Ermittlung das ganze wieder rückgängig machen.
    Wenn ich aber
    Code:
    SBI PORTD, PD3
    mache läuft die ISR in einer Endlosschleife und sendet durchgehend Werte, obwohl ich den Wert ja wieder zurücksetze und Interrupts solange deaktiviert sein sollten.
    Setze ich das Bit nicht funktioniert alles aber der ADC gibt natürlich nur 0 zurück.
    In der asuro.h steht in PollSwitch() oder so auch, das PD3 so gesetzt werden muss.
    Kann mir bitte jemand sagen, wo mein Fehler liegt?
    Vielen Dank im Voraus

    Bastian

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Soltau - Niedersachsen
    Alter
    46
    Beiträge
    1.369
    Hallo,

    unabhängig davon das es anscheinend ASM und auf dem Asuro ist, von denen ich jeweils sehr wenig verstehe - muss PD3 nicht eher zum Eingang gemacht werden um Spannnung zum messen? Also eigentlich müsste es ja anderrum sein, denn es fliest ja etwas in den µC hinein...
    Und wenn man dann noch den PullUp benötigt wird der auf High geschaltet. Das nennt sich Tri-State. Allerdings ist das jetzt nicht der Ausgang, denn den Ausgang auf High schalten bedeutet er führt die Betriebsspannung.

    Ansonsten produzierst Du wohl ungewollt einen Kurzschluss zwischen PD3 und Batterien/Akkuspannung.

    EDIT:
    PD3 müsste wenn dann als Ausgang aber LOW sein? Vermute ich. Dann müsste es gehen über PC4(ADC4) die einfliessende Spannung (über den spannungsteiler) zu messen.
    Geändert von HeXPloreR (09.05.2013 um 20:18 Uhr)

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    09.05.2013
    Beiträge
    7
    Zitat Zitat von HeXPloreR Beitrag anzeigen
    Hallo,
    muss PD3 nicht eher zum Eingang gemacht werden um Spannnung zum messen?
    Nein, der AD Wandler ist an einem Pin angeschlossen Deshalb muss ich verhindern, dass über den Port Spannung abfällt und alles zum AD Wandler "fließt".
    Ob da ein Kurzschluss ist kann ich nicht sagen, alles andere hat bisher aber immer funktioniert, würde also erstmal auf unschuldig tippen^^

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Soltau - Niedersachsen
    Alter
    46
    Beiträge
    1.369
    Ja, habe oben gleichzeitig zu Deiner Antwort editiert. Habe mir den Schaltplan angesehen (Seite 74)... allerdings wie gesagt habe den selber nicht.

    Bin der Meinung es müsste wenn es ein Ausgang sein soll mit Low klappen. Dann sollte der ADC die Messung in der ISR durchführen, insofern er dort eingestellt wird.
    Keine Gewähr

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    09.05.2013
    Beiträge
    7
    Hab es getestet, mit LOW bei PD3 geht es leider nicht funktioniert es leider nicht. Man bekommt dann nur 0 vom ADC

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Als ich den Interrupt für die Schalter gesetzt habe...
    Welchen Interrupt hast du denn gesetzt? Wäre es nicht besser in der ISR ein Flag zu setzen und dann in der Hauptschleife den ADC-Wert zu ermitteln und zu senden?
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Ähnliche Themen

  1. Screens wechseln mit 2 Taster (oder mit einem Taster)
    Von tordy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 14.07.2009, 14:39
  2. Taster per Interrupt nutzen
    Von lalas im Forum Assembler-Programmierung
    Antworten: 4
    Letzter Beitrag: 01.07.2008, 19:54
  3. Interrupt durch Taster ausgelöst
    Von Seppi1203 im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 05.03.2007, 22:25
  4. Mit Taster 1 auswählen und Taster 2 bestäti. " Menü aus
    Von Luppi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 07.04.2006, 22:07
  5. [ERLEDIGT] Interrupt waehrend Interrupt
    Von thomas05 im Forum PIC Controller
    Antworten: 7
    Letzter Beitrag: 08.11.2005, 07:13

Berechtigungen

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

Labornetzteil AliExpress