- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 13 von 13

Thema: INT0 Interrupt funktioniert nicht

  1. #11
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.651
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Zitat Zitat von Jason07 Beitrag anzeigen
    ... nen Schaltplan ... lad ihn nachher hoch und werd danach nochmal was umbauen ...
    Diese Reihenfolge finde ich etwas verwirrend. Zumindest wäre es gut, wenn Du beim Hochladen des Schaltplans GLEICH dazuschreibst, welche Änderung Du warum machstplanstnötigfindest - dann muss man nicht so ins Blaue raten.
    Ciao sagt der JoeamBerg

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    12.03.2013
    Beiträge
    19
    Klicke auf die Grafik für eine größere Ansicht

Name:	Interrupt.jpg
Hits:	8
Größe:	30,9 KB
ID:	24883Ahh okay, dass erklärt es gut danke, irgendwie ist der Post vorhin untergegangen.

    - - - Aktualisiert - - -

    So hier ist der aktuelle Schaltplan, die Änderungen sind schon gemacht. Jetzt ist auch am Port 2D eine Rising Edge von 0V auf 3,8 V Messbar, aber es gibt trotzdem kein Interrupt.

    Hier noch der neue Code mit D als Eingang:
    .include "m32def.inc"

    .def temp1 = r16

    .org 0x000
    rjmp main
    .org 0x002
    rjmp int0_handler ;IRQ0 Handle

    int0_handler:
    ldi temp1, 0b00010000 ;PortC5 HIGH, rest LOW
    out PortC, temp1
    reti

    main:
    ldi temp1, 0x00 ;Port D auf Ausgang
    out DDRD, temp1
    ldi temp1, 0x00 ;Port D auf LOW
    out PORTD, temp1

    ldi temp1, 0xFF ; PortC auf Ausgang
    out DDRC, temp1
    ldi temp1, 0b00000000 ;PortC Pullup LOW
    out PortC, temp1

    in temp1, GICR
    ori temp1, 0b01000000 ;INT0 = 1
    andi temp1, 0b11111101 ;IVSEL = 0
    out GICR, temp1
    in temp1, MCUCR ;INT0 Aktivieren
    ori temp1, 0b00000011 ; rising Edge
    out MCUCR, temp1
    sei

    ende: rjmp ende
    Gibt das Komplikationen dass ich den ganzen Port auf Ausgang gesetzt habe? Weil PortD Pin 0 und 1 für die RS232 Schnitstelle und pin 4 und 5 für den Motortreiber genutzt werden.

    Sry für das durcheinander

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.702
    Blog-Einträge
    133
    Gibt das Komplikationen dass ich den ganzen Port auf Ausgang gesetzt habe?
    Für alle Ports, die nicht genutzt werden, würde ich vorschlagen, sie auf Input zu konfigurieren -sind sie sowiso schon nach Power On Reset und zusätzlich den Pullup Widerstand einzuschalten um den Eingang auf definiertes Potential zu legen. Dann können auch unabsichtliche Berührungen oder falsche Beschaltungen den Port nicht so leicht zerstören.

    Zur Schaltung: "Normalschaltung" für den Taster ist: PD2 - Taster - GND, PD2 als Input, Pullup für PD2 einschalten. Dann legt der Taster bei Betätigen das GND Potential an den PD2. Müßte der INT0 dann auf falling edge konfiguriert werden.

    Wenn der Taster aber wie im Schaltbild VCC schalten soll, kannst Du den 1k Widerstand durch einen viel größeren ersetzen. zB 10k oder noch besser 22k. Dann werden auch die gemessenen 3,8V näher an die 5V rankommen. Der 1k bzw 22k ist als Pulldown Widerstand eingesetzt, der bei offenem Taster ja nur dem PD2 ein definiertes Potential geben soll.


    Hab mir Dein letztes Programm nicht genauer angeschaut. Nimm Dein zuerst gepostetes und laß folgende Zeilen weg und benutz obige Schaltung mit dem 10k oder 22k Pulldown.:
    Code:
         ldi temp1, 0xFF    ;Port D auf Ausgang
         out DDRD, temp1
         ldi temp1, 0x00        ;Port D auf LOW
         out PORTD, temp1
    Wie erkennst Du daß kein Interrupt ausgeführt wird. An das Abschalten des Jtags hast du gedacht - der benutzt PC4.

    ldi temp1, 0b00010000 ;PortC5 HIGH, rest LOW
    Das ist nicht wie im Kommentar angegeben der PC5 sondern PC4

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Code: Globale Boolvariable mit INT0 Interrupt auf Tiny13 set
    Von ExXeQtor im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 30.10.2010, 23:10
  2. RC5 Abfrage funktioniert per Polling, aber nicht per INT0
    Von luvat im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 17.03.2008, 05:10
  3. Externer Interrupt mit INT0
    Von Mr Bean im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 12.01.2008, 17:09
  4. URXC1 Interrupt beim Atmega 128 funktioniert nicht
    Von tobuc0 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 24.06.2007, 10:23
  5. Externer Interrupt funktioniert nicht
    Von Jens81 im Forum C - Programmierung (GCC u.a.)
    Antworten: 18
    Letzter Beitrag: 16.10.2006, 19:48

Stichworte

Berechtigungen

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

LiFePO4 Speicher Test