- LiFePO4 Speicher Test         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: Tiny13(A), PWM, $crystal: Komisches Verhalten

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Schön dass es klappt!
    Aber es wäre gar nicht nötig gewesen die Resonanzfrequenz des Übertragers anzupassen - denn man kann die PWM-Frequenz auch nahezu stufenlos variieren. Das geht im sogenannten "CTC"-Modus. CTC heißt "Clear Timer on Compare". Der Timer zählt in diesem Modus von 0 aufwärts, und wenn er den Wert des OCR-Registers erreicht, toggelt er einen Ausgang und wird sofort auf 0 gesetzt, um wieder von vorne zu beginnen. Heißt also, dass der Ausgang umso öfter getoggelt wird, je niedriger der Wert im OCR-Register ist - und den kann man ja in 256 Schritten variieren. In den Datenblättern sind sehr schöne, aufschlussreiche Grafiken hierzu abgebildet. Auch wenn´s jetzt auch schon mit der "festen" Frequenz funktioniert - aber vielleicht brauchst Du ja irgendwann noch mal eine variable Frequenz

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    30.07.2012
    Beiträge
    19
    ... hu? Da ich sowieso noch nicht fertig bin, lass mich mal wissen, wie man dieses Register in Bascom setzen kann? Ich finde da nix zu (oder ich sehe es einfach nicht). Einfach ein compare0a=x klappt ja so nicht ...

    BTW:
    Nach einigem Rumspielen habe ich mal eine andere Merkwürdigkeit entdeckt...
    Wenn man die Wait- Statements mit den vorbelegten Variablen W und D besetzt, schmiert der Tiny irgendwann ab, wenn man abwechselnd einen INT und eine der beiden anderen Eingänge triggert. Wenn man aber die Wait's mit fixen Werten setzt, dann passiert das nicht

  3. #13
    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
    Der Interrupt bringt wahrscheinlich die Waitschleife durcheinander.
    Wenn ein Interrupt ausgelöst wird, müssen bestimme Registerinhalte gesichert werden. Eventuell macht dir das Schwierigkeiten.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    30.07.2012
    Beiträge
    19
    ... das kann natürlich sein, ist natürlich doof, wenn dem so sein sollte *hmmmm*


    BTW: Meine Nachbildung der "Change" Funktion für die anderen beiden Engänge funktioniert nicht korrekt; ich rätsel noch... oder geh ins Bett ...

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Da ich sowieso noch nicht fertig bin, lass mich mal wissen, wie man dieses Register in Bascom setzen kann?
    Also, ich setzte bei PWM-Anwendungen die beiden relevanten Register immer direkt. Wenn man sich da einmal reingedacht hat, ist es eigentlich ziemlich einfach. Eine gute Beschreibung des CTC-Modus findest Du auf Seite 63 im Datenblatt des Tiny13.

    Falls Du es aber ohne viel Kopfzerbrechen testen möchtest, probier mal folgendes:

    Code:
    DDRB.0=1 'OC0A als Ausgang konfigurieren
    TCCR0A = &B01000010
    TCCR0B = &B00000001
    Wenn Du diesen Code vor die Do-Loop-Schleife stellst, müsste am Port B.0 ein Rechtecksignal anliegen, dessen Frequenz zwischen CLK/2 (wenn OCR0A = 0) und CLK/512 (wenn OCR0A = 255) liegt.

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.01.2007
    Ort
    westliches Pannonien
    Beiträge
    123
    Zitat Zitat von M_I_B Beitrag anzeigen

    BTW:
    Nach einigem Rumspielen habe ich mal eine andere Merkwürdigkeit entdeckt...
    Wenn man die Wait- Statements mit den vorbelegten Variablen W und D besetzt, schmiert der Tiny irgendwann ab
    Wen Du keine Stackwerte definierst, ist das weiter nicht verwunderlich.

    MfG
    Rone

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    30.07.2012
    Beiträge
    19
    @Rone: Wo du Recht hast ^^

    @Sauerbruch: Ok, so weit, so gut. Aber wie verändere ich das jetzt?

    @all: der obige Code ist Murks, da einige Unschönheiten. Ich habe es mal ganz anders gemacht und die Unschönheiten (bis auf die PWM- Frequenz) sind w.e.c.h. ...
    Die Dokuentation habe ich erstmal weg gelassen, da mich dieser eingebaute Editor echt elendig genervt hat; kann man da nicht irgendwie Notepad++ integrieren?!? *grrr*

    Code:
    $regfile = "attiny13.dat"
    $crystal = 4800000
    $hwstack = 16
    $swstack = 16
    $framesize = 16
    '$prog &HFF , &H72 , &HFF , &H00                                                ' 9,6 MHz, Vorteiler aus
    $prog &HFF , &H75 , &HFF , &H00                                                 ' 4,8 MHz, Vorteiler aus
    
    
    
    Config Timer0 = Pwm , Compare A Pwm = Clear Down , Prescale = 1                 'PWM im Schnellgang
    'Ddrb.0 = 1                                                                      'OC0A als Ausgang konfigurieren
    'Tccr0a = &B01000010
    'Tccr0b = &B00000001
    
    Dim Z As Byte , T As Byte , L As Byte
    Dim Du As Integer , Dd As Integer , Ot As Integer
    L = 8 : Du = 2000 : Dd = 2000 : Ot = 1500
    
    Config Pinb.0 = Output
    Config Pinb.1 = Input : I1 Alias Pinb.1 : Portb.1 = 1
    Config Pinb.2 = Input : I2 Alias Pinb.2 : Portb.2 = 1
    Config Pinb.3 = Input : I3 Alias Pinb.3 : Portb.3 = 1
    
    
    
    Enable Pcint0
    Enable Interrupts
    Pcmsk = &B001110
    On Pcint0 An
    
    
    
    Hell:
    
       While T = 0
          Incr Z
          Pwm0a = Z
          If Z = 128 Then T = 1
          Waitus Du
       Wend
    
       If T = 1 Then
          Waitms Ot
       Else
          Z = 127 : Goto Hell
       End If
    
       While T = 1
          Decr Z
          Pwm0a = Z
          If Z = L Then T = 2
          Waitus Dd
       Wend
    
       While T = 2
          nop
       Wend
       Goto Hell
    
    End
    
    
    An:
       T = 0
       If Z > 125 Then Z = 127
    Return

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    30.07.2012
    Beiträge
    19
    ... ich hätte da noch eine Frage *duck...*

    Wie kann ich während der Laufzeit den als PWM laufenden Timer anhalten resp. das AUsgangssignal auf LOW setzen (und später wieder einschalten)??

    Ich habe es jetzt versucht mit Disable Timer0, pinb.0=0, portb.0=0. Nichts funktioniert


    Hat sich erledigt: Einfach Pwm0a = 0 und anschliessend ein Config Powermode = Powerdown funktioniert perfekt
    Geändert von M_I_B (17.09.2012 um 21:31 Uhr)

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Wie kann ich während der Laufzeit den als PWM laufenden Timer anhalten resp. das AUsgangssignal auf LOW setzen (und später wieder einschalten)??
    Auch wenn´s mit PWM0A = 0 klappt, gibt´s noch zwei einfachere Methoden (die dem Verständnis im allgemeinen und speziellen auch förderlich sein könnten):

    "disable timer0" wird oft anfangs fälschlicherweise so verstanden, dass man damit den Timer anhält. Dem ist aber nicht so, sondern mit diesem Befehl wird lediglich der Interrupt deaktiviert, der beim Überlaufen des Timers ausgelöst würde (entsprechend aktiviert man diesen Interrupt mit "enable timer0")

    Der Befehl den Du suchst lautet ganz einfach "stop timer0" bzw. "start timer0", wenn er weiterlaufen soll.

    Nur diese Frage habe ich nicht ganz verstanden:
    Aber wie verändere ich das jetzt?
    WAS willst Du denn verändern??

    Und den PWM-Pin kannst Du über das Data-Direction-Register als Eingang konfigurieren. Dann führt er weder High noch Low, sondern ist einfach nur ein hochohmiger Eingang:
    DDRB.0=0

    Mit DDRB.0=1 wird er dann wieder zum Ausgang!
    Geändert von Sauerbruch (17.09.2012 um 22:32 Uhr)

  10. #20
    Neuer Benutzer Öfters hier
    Registriert seit
    30.07.2012
    Beiträge
    19
    Nur diese Frage habe ich nicht ganz verstanden:
    Also... (luft hol'):

    Du hattest mir ja den Trick und Code mit dem CTC- Mode verraten. Wie du siehst, steht das auch auskommentiert in meinem Quelltext. Sobald ich das aber aktiviere, erhalte ich zwar ein symetrisches Rechteck, aber das ändert sich dann in der Frequenz und nicht mehr in der Pulsbreite.

    Am Geschicktesten wäre m.E. eine kleine Unterroutine, die sich selbst auf die optimale Frequenz einstellt. Also Messung der Ausgangsspannung des Konverters via ADC, langsames Durchfahren des Frequenzbandes und ermitteln der optimalen Schaltfrequenz bei verschiedenen Tastverhältnissen (z.B. im 10% Raster). Das wäre deshalb sinnig, da zum einen eine zugeschnittene EL- Folie die Resonanzfrequenz verändert und zu alle dem auch noch ihre Kapazität mit der Helligkeit ändert, mal ganz abgesehen von Alterungserscheinungen solcher Folien. Mit so einer Routine könnte man nach dem Einbau z.B. bei jedem Systemstart die Werte neu ermitteln und hätte damit auch gleich eine "... bin gleich soweit..." Meldung.

    Aber erst mal wäre mir damit gedient, wenn ich erstmal in die Lage komme, die Frequenz zu fixieren/einzustellen. Wenn ich dann im Nachgang durch Rumfrickeln und deiner/eurer Hilfe auch noch verstehe, was du mir da an Code an die Hand gegeben hast, dann hätte ich schon einen weiten Sprung nach vorn gemacht...

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Ähnliche Themen

  1. RP6-Wetterstation komisches Verhalten
    Von Virus im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 5
    Letzter Beitrag: 03.01.2010, 12:35
  2. komisches Verhalten einer Schaltung
    Von Arduino99 im Forum Elektronik
    Antworten: 14
    Letzter Beitrag: 24.12.2009, 16:13
  3. Antworten: 18
    Letzter Beitrag: 06.06.2007, 09:22
  4. Komisches AVR Verhalten...
    Von EDatabaseError im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 21.02.2007, 20:44
  5. Komisches verhalten meiner CC1
    Von d4rkwolf im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 01.03.2005, 21:58

Stichworte

Berechtigungen

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

Labornetzteil AliExpress