- LiTime Speicher und Akkus         
Ergebnis 1 bis 10 von 10

Thema: Timer-Interrupt im Minutentakt blinken

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330

    Timer-Interrupt im Minutentakt blinken

    Anzeige

    Praxistest und DIY Projekte
    Hallo Leute, habe folgendes Programm geschrieben:

    Bei Sekunden klappt es toll (Prescaler 64, Startwert Timer 49910)

    Aber bei den Minuten leuchtet es viel zu lange!!

    Code:
     $regfile = "m8def.dat"
     $crystal = 1000000
     $hwstack = 30
     $swstack = 30
    
     Config Portb = Output
     Config Timer1 = Timer , Prescale = 1024
     Enable Timer1
    
    
     On Timer1 Isr_von_timer1
    
     Enable Interrupts
     Timer1 = 6942
    
     Do
    
     Toggle Portb.0
     Waitms 200
    
     ' Hauptprogramm zb. wait
     Loop
     End
    
    
    
     Isr_von_timer1:
    
     Timer1 = 6942
    
     Toggle Portb.5
     Toggle Portb.4
    
     Return
    Kann da mal ein erfahrener Programmierer drüberschaun ??


    Mfg

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Also von den Zeiten her scheint das in Ordnung zu sein. Wie lange ist den zu lange bei dir? Sind das nur ein paar Sekunden oder schon Minuten?

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Nach 3-5 min habe ich es immer ausgeschaltet. Jetzt läuft es bereitrs 14min!!

    Die 200 ms Led an pb0 geht übrigens, aber wenn die angeschlossen war, hat die andere etwas mitgeflackert... Drum hab ich sie gleich weg


    EDIT: 24 min and counting...
    Geändert von runner02 (30.07.2011 um 15:05 Uhr)

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Laut Rechnung sollte es passen:
    1024*(65535-6942)=59999232 Kontrollertakte, macht bei 1MHz etwa 60 Sekunden. Mein 8MHz-Mega8 toggelt in der ISR nach etwas mehr als sieben Sekunden (vier mal toggeln in 30,16 handgestoppten Sekunden), also scheint es grundsätzlich zu funktionieren.

    Gruß

    mic
    Geändert von radbruch (30.07.2011 um 15:19 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Ich kanns leider nur rechnerisch prüfen, da ich meinen Programmer im Bascom nicht ans laufen kriege -.-
    Sicher das bei deinem Controller alles richtig eingestellt ist? Fuses usw.

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Zitat Zitat von Kampi Beitrag anzeigen
    Ich kanns leider nur rechnerisch prüfen, da ich meinen Programmer im Bascom nicht ans laufen kriege -.-
    Sicher das bei deinem Controller alles richtig eingestellt ist? Fuses usw.
    Ich fuse gar nicht... Selbst wenn ich wollte, ich könnt's nicht

    30 min, danach hab ich ihn ausgeschaltet... Wär vermutlich noch Stunden weitergelaufen...

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    da ich meinen Programmer im Bascom nicht ans laufen kriege
    Bascom erzeugt natürlich auch nur .hex-Dateien die man auch mit avrdude oder ponyprog mit jedem Programmer flashen kann. (So bekomme ich die Bascomprogramme auf den asuro, RP6 und bee mit jeweils deren Flashtool)

    Wenn die Sekunde passt läuft der Mega8 wohl auch mit 1MHz. Wird die richtige Datei geflasht? Programm richtig kompiliert oder versehentlich nur Syntxcheck ausgeführt? Versuche mal kürzere Zeiten, 1, 5, 10, 20... Sekunden mit Prescaler 1024.
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von radbruch Beitrag anzeigen
    Bascom erzeugt natürlich auch nur .hex-Dateien die man auch mit avrdude oder ponyprog mit jedem Programmer flashen kann. (So bekomme ich die Bascomprogramme auf den asuro, RP6 und bee mit jeweils deren Flashtool)
    Ja aber das Problem ist der Programmer funktioniert mit AVR Studio auch nicht Und sonst hab ich nur nen PSoC Programmer

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    05.03.2011
    Ort
    Graz
    Beiträge
    29
    Hallo,

    Code:
     $hwstack = 30
    ...
     Enable Interrupts
    ...
    ISRs benötigen in Bascom standardmäßig min. 32 Bytes (+ jeweils 2 Byte pro aktive Subroutine, =Rücksprungadresse), ein größerer Wert für hwstack dürfte das Problem also beheben.

    mfg

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    15.04.2008
    Beiträge
    330
    Zitat Zitat von da_reefer Beitrag anzeigen
    Hallo,

    Code:
     $hwstack = 30
    ...
     Enable Interrupts
    ...
    ISRs benötigen in Bascom standardmäßig min. 32 Bytes (+ jeweils 2 Byte pro aktive Subroutine, =Rücksprungadresse), ein größerer Wert für hwstack dürfte das Problem also beheben.

    mfg


    Danke, genau das war das Problem. Ich habe den hardwarestack und den softwarestack auf 80 gedreht - und siehe da - es läuft!!!

    Irgendwie komisch, dass es bei 1 sek geklappt hat?!

Ähnliche Themen

  1. Timer/Interrupt Problem. LED soll jede Minute blinken
    Von dg im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 18.05.2007, 21:04
  2. LED im 1 oder 2 sek. Takt per Interrupt blinken lassen
    Von rogerberglen im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 17.04.2007, 20:51
  3. Timer und Interrupt
    Von c-m-m im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 23.11.2005, 11:03
  4. Timer und Interrupt??
    Von Crocodile im Forum C - Programmierung (GCC u.a.)
    Antworten: 13
    Letzter Beitrag: 14.10.2005, 22:31
  5. Interrupt und timer
    Von m0 im Forum PIC Controller
    Antworten: 3
    Letzter Beitrag: 14.03.2005, 19:19

Berechtigungen

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

LiFePO4 Speicher Test