Hallo,
ich nutze nun immer öfters die µC für kleine Steuerungen für meine Modelleisenbahn. Bisher habe ich immer nur Steuerungen programmiert die ohne Eingänge auskahmen (z.B. Blinklichter, Ampelsteuerung). Nun will ich folgende Steuerung bauen. Die Hardware sollte für mich kein Problem mehr sein.
Ein, in die Fahrbahn eingelassener Reedschalter, soll über die selbstfahrenden Autos betätigt werden. Wenn 10 Autos über den Reedschalter gefahren sind soll ein Blitzer kurz aufblitzen. Ich will also so zusagen ein "Starrenkasten" auf meiner Anlage installieren der aber nicht jedes mal auslöst.
Wie könnte nun das Programm aussehen?
Gruß Felix
Welchen µC willst du verwenden? Gibt ja sehr viele.
modellfreund hat folgendes geschrieben: |
Wenn 10 Autos über den Reedschalter gefahren sind soll ein Blitzer kurz aufblitzen. |
Code: |
DIM char_count AS BYTE ... DO Debounce reed_taster , 0 , On_reed_taster , Sub LOOP END On_reed_taster: INCR char_count IF char_count = 10 THEN char_count = 0 LED_BLITZER = 1 WAITMS 100 LED_BLITZER = 0 END IF RETURN |
Hallo Gerold,
vielen Dank für deine Antwort. Ich werde mich am Wochenende mal ranstürzen.
Welchen µC verwende ich denn am besten für solche kleinen Aufgaben? Bisher habe ich immer einen Atmega8 genommen, aber der erscheint mir für solche kleinen Schaltungen etwas groß.
LG Felix
modellfreund hat folgendes geschrieben: |
Welchen µC verwende ich denn am besten für solche kleinen Aufgaben? |
Hallo Gerold,
ich habe mir die Kapitel mal durchgelesen und bin schon etwas schlauer geworden. Nur das Programmierbeispiel "Goto" könnte etwas ausgedehnter und Praxisnaher dargestellt werden. Ich habe mal versucht, mit deinem oben gezeigten Beispiel, ein Programm zu erstellen:
Code: |
$regfile = "Attiny13.dat"
$crystal = 1000000 $hwstack = 100 $swstack = 100 $framesize = 100 Dim Char_count As Byte Led_blitzer Alias Portb.3 Config Led_blitzer = Output Reed_taster Alias Pinb.4 Config Reed_taster = Input Portb.4 = 1 Do Debounce Reed_taster , 0 , On_reed_taster , Sub Loop End On_reed_taster: Incr Char_count If Char_count = 10 Then Char_count = 0 Led_blitzer = 1 Waitms 100 Led_blitzer = 0 End If Return |
Hallo!
Was willst Du mit Goto?
Wenn Du den µC mit Spannung versorgst, rennt Dein Programm
los. Wenn der Reedschalter 10x betätigt wurde leuchtet die Led auf.
Das wiederholt sich permanent.
Übrigens: Den Tiny13 musst Du auf crystal=1200000 stellen,
der kann keine 1MHz. Auch Framesize, Softwarestack u. Hardwarestack
sind ein bißchen viel für den kleinen Kerl.
MfG
caargoo
Hallo Felix!
modellfreund hat folgendes geschrieben: |
Ich weiß jetzt aber nicht, wie ich das Programm mit Goto ausführe. |
Code: |
$regfile = "attiny13.dat"
$crystal = 1200000 $hwstack = 16 $swstack = 10 $framesize = 16 Dim Char_count As Byte Led_blitzer Alias Portb.3 Config Led_blitzer = Output Reed_taster Alias Pinb.4 Config Reed_taster = Input Portb.4 = 1 Main: If Char_count = 10 Then Char_count = 0 Led_blitzer = 1 Waitms 100 Led_blitzer = 0 End If Debounce Reed_taster , 0 , On_reed_taster Goto Main End On_reed_taster: Incr Char_count Goto Main |
modellfreund hat folgendes geschrieben: |
Gibt es die Möglichkeit im Programm zu schauen wie groß der Programmiercode ist? |
BASCOM kann das sehr wohl, es tuts aber nur beim Compilieren.
Sprich: Wenn du beim compilieren zu wenig SRAM hast, dann meckert er "Out of SRAM-Space"
Gruß Rainer (der selber gerade merkt wie knapp der SRAM auf nem Mega32 auch werden kann...)
pcprofi hat folgendes geschrieben: |
BASCOM kann das sehr wohl, es tuts aber nur beim Compilieren. |