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

Thema: Probleme mit Timer0 Interrupt

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.09.2007
    Ort
    Südbaden
    Beiträge
    182
    Anzeige

    Powerstation Test
    Jo, mit dem Grundwissen wirst du nicht ganz Unrecht haben obwohl ich von Anfang an eigentlich versucht habe richtig vorzugehen. Ich hab mit Assembler angefangen und wollt mich jetzt an C versuchen. Aber dafür will ich ja was lernen.
    In meinem neuen Programm habe ist mein größstes delay 6ms. Das mit der ISR wusst ich nich, aber ich habe jetzt mal noch eine einfache dazugeschrieben.
    Code:
    ISR(TIMER0_OVF_vect)
    {
    PORTB = 0xAC;
    }
    Aber damit bin ich immernochnicht weiter. Ich versteh einfach das verhalten von dem AVR nicht das der ein Reset macht. Und Hubert.G hat ja gesagt bei ihm würde es gehen und ich selbst hatte das Programm auch schon am laufen jedoch ohne RN Control. Ich habe das Board ja gebraucht gekauft und deswegen auch schon an ein Defekt geglaubt, aber hier fällt mir auch keiner ein der zu diesem Verhalten führt. Aber auf jdenfall danke für deine Hilfe.

    Gruß
    elayne

  2. #12
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Ich glaube das dein Compiler da was nicht richtig macht und du die Warnings ignorierst. Ich schicke dir mein *.zip, das läuft bei mir einwandfrei. Den Wert im UBRRL musst du ändern, ich hatte nur eine 11,0592MHz Quarz zur Verfügung.
    Dein letzter Code kann nicht funktionieren und wenn meiner bei dir auch nicht geht, dann hast du ein Problem das nicht direkt mit diesem Code zusammenhängt.
    Angehängte Dateien Angehängte Dateien
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Aber damit bin ich immernochnicht weiter. Ich versteh einfach das verhalten von dem AVR nicht das der ein Reset macht.
    Das ist recht einfach.
    Du schreibst, daß Du mit Assembler angefangen bist,gut.

    Also Du aktivierst einen Interrupt, und wenn der zuschlägt will der AVR in die ISR von diesem Interrupt springen.
    Das ganze organisiert GCC in einer Tabelle, ich habe die aus meinem jetzigem Programm kopiert
    Code:
    Disassembly of section .text:
    
    00000000 <__vectors>:
       0:	0c 94 2a 00 	jmp	0x54	; 0x54 <__ctors_end>
       4:	0c 94 a9 00 	jmp	0x152	; 0x152 <__vector_1>
       8:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
       c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      10:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      14:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      18:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      1c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      20:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      24:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      28:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      2c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      30:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      34:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      38:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      3c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      40:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      44:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      48:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      4c:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
      50:	0c 94 47 00 	jmp	0x8e	; 0x8e <__bad_interrupt>
    
    00000054 <__ctors_end>:
    Wenn man sich das ganze jetzt anschaut, habe ich nur einen Interrupt definiert (EXT 0), da springt er in 0x152 <__vector_1>.
    Der rest ist undefiniert und wenn durch falsches Programmieren mal einer zuschlagen sollte geht es nach 0x8e <__bad_interrupt> die wiederum so aussieht:
    Code:
    0000008e <__bad_interrupt>:
      8e:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>
    Ich hoffe, Du weißt was unter jmp 0 zu verstehen ist

    Und wenn Du einen Interrupt zuläßt, aber keinen Vektor definierst, tja dann geht es in __bad_interrupt, verständlicher ?

    und du die Warnings ignorierst
    Das ist sehr wichtig!

    Alles was Lila im Ausgabefenster von PN erscheint, sollte Deine Alarmglocken läuten lassen...

    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    29.09.2007
    Ort
    Südbaden
    Beiträge
    182
    Hey,
    deine kleine Exursion ist ganz interessant, danke das habe ich jetzt verstanden. Und nun habe ich Hubert's Programm compilled und sehe da es funktioniert. Was genau jetzt bei meinem Programm nicht ging weiss ich nochnicht. Aber ich schau mir das jetzt genau an.
    Danke euch allen für eure Mühen! Schlauer bin ich jetzt auf jeden Fall.

    Gruß
    elayne

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