Universeller Zähler mit internem Speicher   

von  Holger Fritzsch                     
      
Elektronik-Labor  Projekte  AVR  Sparrow  Contest          


 

Einmal programmiert, kann der Sparrow autark arbeiten und Daten sammeln. Diese können per serieller Schnittstelle ausgelesen werden. Dazu ist keine weitere Hardware nötig. Der Zählwert wird im EEProm des ATTINY13 abgelegt und ist auch nach dem Ausschalten noch präsent. Der Zählumfang kann individuell angepasst werden. Momentan ist die Zählvariable F als Byte definiert. Als Word-Variable wäre es theoretisch auch möglich. Jedoch muss man das Hi- und Lo- Byte trennen. Das Programm "Cheepit Sparrow over RS232" von B. Kainka ist so genial wie einfach in der Bedienung. Über die serielle Schnittstelle kann der Sparrow ja auch offline geflasht werden. Jetzt wird das Programm zum Datenempfang eingesetzt. Dazu ist ein Häkchen bei TxD zusetzen und clear anzuklicken. Einstellungen: Baud 9600,8,n,1. Möglich ist auch das  Bascom-eigene Terminal. Ein Druck auf  Taster S2 überträgt die Daten von B1 nach RXD ins PC-Terminal.

Funktionsweise im Detail:
Betriebsspannung anlegen. Jetzt PB4 kurz nach Masse mit Drahtbrücke schalten (Taster optional). Das entspricht einem Reset. Led2 (rot), an PB3 quittiert diesen RESET mit einem 3- fachen Blinken. Der Zähler wird auf 0 gesetzt und ins EEProm wird 00 geschrieben. Mit Taster S1, an PB0, werden die Impulse eingegeben, Led1 an PB1 (grün) quittiert jede Eingabe. Mit Druck auf S2 werden die Daten, wie oben erwähnt, zum PC geschickt. Led1 quittiert. Statt des Tasters S1 sind andere Kontakte möglich. So z.B. Reed-Kontakte, Neigungsschalter, Piezokapseln, Mikrotaster u.ä. Hier wird nur, um die Contestbedingungen einzuhalten, S1 betrachtet. Der Zählumfang lässt sich im Programm (dargestellt durch die Rechenvariable H ) den eigenen Bedürfnissen anpassen. So kann man zwischen der Anzahl der gelaufenen Schritte beim Sport oder der Anzahl seiner Partygäste umschalten. Wichtig ist es zu wissen, dass (die Angabe schwanken hierzu ) das EEprom zwischen 10.000 und 100.000 mal beschrieben werden kann. Dem Auslesen hingegen sind keine Grenzen gesetzt.


Download: Sparrow_Zaehler.zip
Direkt laden: http://tiny.systems/categorie/cheepit/UniversellerZ%C3%A4hler.html

'******************************************************************************'
'*                                                                            *'
'*      Universalzähler - Datenspeicherung im EE- Prom des ATTINY13           *'
'*                                                                            *'
'******************************************************************************'
'* S1 ist Eingang  für Zählimpulse                                            *'
'*                                                                            *'
'* S2 überträgt die Daten zum PC                                              *'
'*                                                                            *'
'* Ein Stück Draht an  PinB.4 , optional ein Taster löst den RESET aus        *'
'*                                                                            *'
'*                                                                            *'
'******************************************************************************'
$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 16
$swstack = 8
$framesize = 8

Open "comb.1:9600,8,n,1,INVERTED" For Output As #1
Config Pinb.0 = Input                                       'PB0 ist Eingang  "Schritte"
Portb.0 = 1                                                 'Pullup
Config Portb.1 = Output                                     'Led1
Portb.1 = 0                                                 'Led1 aus
Config Pinb.2 = Input                                       'PB2 ist Eingang "Anzeige"
Portb.2 = 1                                                 'Pullup
Config Pinb.4 = Input
Portb.4 = 1                                                 'Pullup
Config Portb.3 = Output                                     'Led2

Dim H As Byte
H = 0
Dim F As Byte                                               'Rechenvariable
F = 0

  Do                                                        'Endlos - Abfrage /Schritte
     Debounce Pinb.0 , 0 , Zaehlen , Sub
     Debounce Pinb.2 , 0 , Anzeigen , Sub                   'Anzeige
     Debounce Pinb.4 , 0 , Ruecksetzen , Sub                '***optional RESET***
  Loop                                                      '**Draht nach Masse**


End                                                         'Programmende

Zaehlen:                                                    'Subroutine "zaehlen"
 Incr F
 'H = F / 10                                                'Zählbereich festlegen
 'H = F / 100
 H = F
 Writeeeprom H , 1                                          'H= Zählwert, Speicherzelle
 Print #1 , H
 Return                                                     'Eingabekontrolle


Anzeigen:
 Readeeprom H , 1                                           'Subroutine "anzeigen"
 Print #1 , H
 Return


Ruecksetzen:                                                'Ausgangsbedingung herstellen
 F = 0
 Writeeeprom H , 1
 Portb.3 = 1
 Waitms 50
 Portb.3 = 0
 Waitms 50
 Portb.3 = 1
 Waitms 50
 Portb.3 = 0
 Waitms 50
 Portb.3 = 1
 Waitms 50
 Portb.3 = 0
 Waitms 50
 Return




Elektronik-Labor  Projekte  AVR  Sparrow Contest