So hier mal ein kleiner Zwischenstatus des Projektes (Ohne Breakout-Detection):
Schaltplan:
http://www.filedealer.com/freeupload...e362c21a3c.pdf
Quellcode für den Tiny24:
Code:
'Mikrocontrollereinstellungen:
$regfile = "attiny24.dat" 'Einstellen des verwendeten Chips
$crystal = 8000000 'Taktfrequenz (hier der Takt aus dem
'internen kalibrierten Oszillator
'Variablen:
Dim Gang As Byte 'Festlegen der Variable und des Types
'Ports:
Config Porta = Output 'PortA wird als Ausgang festgelegt
Config Pinb.0 = Input 'Neutralstellung
Config Pinb.1 = Input 'Signal vom Sensor "oben"
Config Pinb.2 = Input 'Signal vom Sensor "unten"
Declare Sub Nullstellung 'Deklarieren der Sub-Programme
Declare Sub Schalten
Gang = 0 'Variable "Gang" wird auf 0 gesetzt
Do 'Das eigentliche Do-Loop Programm
If Pinb.0 = 1 Then Call Nullstellung Else Waitms 1000 'Abfragen des Ports für Neutralstellung
'und ausführen der entsprechenden Sub-Routine
If Pinb.0 = 0 Then Call Schalten Else Waitms 1000 'Low-Abfrage für den Port für die Nullstellung
If Gang = 1 Then Ddra = &B00110000 Else Waitms 100 'Anzeigen des Variablenwertes auf der
'7-Segment Anzeige
If Gang = 2 Then Ddra = &B01101101 Else Waitms 100
If Gang = 3 Then Ddra = &B01111001 Else Waitms 100
If Gang = 4 Then Ddra = &B00110011 Else Waitms 100
If Gang = 5 Then Ddra = &B01011011 Else Waitms 100
If Gang = 6 And Pina.7 = 0 Then Ddra = &B00011111 Else Waitms 100
Loop
End 'Programmende
Sub Nullstellung 'Festlegen der Sub-Programme
Gang = 0 'Gang wird auf 0 gesetzt
If Pinb.2 = 0 Then Gang = Gang + 1 Else Waitms 100 'Gang wird um eins erhöht wenn der
'untere Hall-Sensor aktiviert wird
If Pinb.1 = 0 Then Gang = 2 Else Waitms 100 'Gang wird auf 2 gesetzt wenn der
'obere Hallsensor auf GND gezogen
'wird (falls man direkt von Neutral auf 2 Schaltet)
End Sub 'Sub-Programm Ende
Sub Schalten(byval Gang As Byte) 'Festlegen des zweiten Sub-Programmes
If Pinb.1 = 0 Then Gang = Gang + 1 Else Waitms 100 'Gang wird um 1 erhöht wenn der obere
'Sensor gegen GND gezogen wird
If Pinb.2 = 0 Then Gang = Gang -1 Else Waitms 100 'Gang wird um 1 verringert wenn der
'untere Sensor gegen GND gezogen wird
End Sub 'Sub-Programm Ende
Und ist der $EEPROM Befehl im Bascom dafür da das interne EEPROM des Controllers zu beschreiben?
Lesezeichen