eintastendimmer

Probleme mit bestimmten Schaltungen von meiner Seite?

Moderator: Tim Sasdrich

eintastendimmer

Beitragvon bascom » 06.08.2011, 21:25

wuerde gerne den eintastendimmer mit dem tiny26 auf einen atmega 8 laden. das programm habe ich soweit fehlerfrei
abgeschrieben und erfolgreich kompiliert aber leider passiert nichts.
ich habe das rowalt-board und hier ist pinb.6 mit dem quartz (xtal1) belegt, deshalb habe ich das listing von pinb.6 auf
pinb.1 (pin15/oc1a) geaendert, trotzdem kein erfolg.
kann mir jemand helfen?
laut dmm ist der pullup-widerstand an pb1 aktiv und wird auch nach null gezogen, sobald man den taster drueckt.

gruesse bernhard
bascom
 

Re: eintastendimmer

Beitragvon Berger » 07.08.2011, 08:18

Hallo!

Das Rowalt Board basiert IMHO auf dem AT Mega8.
Das Programm hier basiert auf dem AT Tiny26.
Also Datenblatt zur Hand nehmen, Registerbezeichnungen kontrollieren,
und ggf. abändern.


MfG
Berger
Berger
 
Beiträge: 52
Registriert: 27.04.2010, 15:10

Re: eintastendimmer

Beitragvon Nachthimmel » 07.08.2011, 08:42

Der Eintastendimmer war früher mal mit einem ATmega8. Tim Sasdrich hat ihn auch in der Galerie so gebaut. Das dürfte der Code sein:
Spoiler: show
Code: Alles auswählen
$regfile = "m8def.dat"
$crystal = 1000000

Dim Hell As Word
Dim An As Word
Dim Aus As Word
Dim Pressed As Word
Dim Neu As Word
Dim Heller As Word
Dim Pwm As Word
Dim Analog As Word
Dim Dimm As Word
Dim Dunkler As Word


' Festlegen der Starthelligkeit beim antippen des Tasters
' 0=Dunkel, 255=Hell
Const Starthelligkeit = 20

Config Portb.1 = Output
Config Portd.0 = Input

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1

Compare1a = 255 : Portd.0 = 1
An = 0 : Neu = 0 : Pwm = 255

Hell = 255 - Starthelligkeit
Dunkler = Hell
If Dunkler = 0 Then Dunkler = 255

Do
  If Pind.0 = 0 Then
    Incr Pressed : Waitms 1 : Neu = Heller
  End If
  If Pwm = 0 Then Heller = 0
  If Pwm = 255 Then Heller = 1
  If Pressed > 250 Then
    If Heller = 0 Then Incr Pwm Else Decr Pwm
    Waitms 30
  End If
  If Pind.0 = 1 And Pressed > 0 And Pressed < 250 Then
    If Pressed < 50 Then
      If Pwm = 0 Then
        Do
          Incr Pwm : Compare1a = Pwm : Waitms 5
          Pressed = 0 : Neu = 1 : An = 1
        Loop Until Pwm = Dunkler Or Pind.0 = 0
      Else
        Do
          Decr Pwm : Compare1a = Pwm : Waitms 5
          Pressed = 0 : Neu = 0 : An = 1
        Loop Until Pwm = 0 Or Pind.0 = 0
      End If
    Elseif An = 1 Then
      Do
        Incr Pwm : Compare1a = Pwm : Waitms 5
        Pressed = 0 : Neu = 1 : An = 0
      Loop Until Pwm = 255 Or Pind.0 = 0
    Else
      Do
        Decr Pwm : Compare1a = Pwm : Waitms 5
        Pressed = 0 : Neu = 0 : An = 1
      Loop Until Pwm = Hell Or Pind.0 = 0
    End If
    If Pind.0 = 0 Then Pressed = 250
  Elseif Pressed > 0 And Pind.0 = 1 Then
    If Neu = 1 Then Heller = 0
    If Neu = 0 Then Heller = 1
    Pressed = 0 : Waitms 100
  End If
  If Pwm = 255 Then An = 0 Else If Aus > 5 Then An = 1
  Incr Aus : Compare1a = Pwm
Loop

Ich glaube da musste noch ein Transistor in die Hardware, damit der µC aus dem Standby (wenn die LED aus ist) wieder anschaltbar ist. Der Eintastendimmer hat aber glaube das Problem, dass er die LED nicht linear aussehend regelt, da das Auge Helligkeit anders wahr nimmt. Es soll aber schon eine Version des Eintastendimmers geplant sein, die linear aussehend regelt.
Philosoph: Sein oder nicht sein? - Elektroniker: Das ist Wahr.
Benutzeravatar
Nachthimmel
 
Beiträge: 93
Registriert: 06.09.2010, 19:35
Wohnort: Villingen-Schwenningen


Zurück zu Schaltungen / Basteleien

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron