loetstelle.net
Lötstelle Userforum
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Atmel Mini Alarm Anlage

 
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> Digitaltechnik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
bombel_locke



Anmeldungsdatum: 19.03.2012
Beiträge: 6
Wohnort: Karlsruhe

BeitragVerfasst am: Mo 19.März 2012 21:35:18    Titel: Atmel Mini Alarm Anlage Bauteile finden Antworten mit Zitat

Hallo liebe Forumgemeinde.
Ich bin ein totaler Newbie und bräuchte mal Euere Hilfe zu dem o. g. Projekt.
Ich weiß nicht, ob das schonmal jemand gebaut hat, aber bei mir geht es nicht! Folgendes Problem: Ich habe mir die Amtel Tiny13 Platine angefertigt und den Attiny13 mit dem Code für die Mini-Alarmanlage http://www.loetstelle.net/projekte/tinyalarm/tinyalarm.php gebrannt (Fusebits habe ich nicht verändert!?).
Code:
.include        "tn13def.inc"

.def sreg_temp= r1
.def temp1= r16
.def FLAGS = r20
.def buzzer_counter=r21
.def led_counter=r22
.def pushbutton_counter = r23
.def exit_counter = r24
.def entry_counter = r25
.def wdt_counter = r26

.equ IO_PORT = PORTB
.equ IO_DDR = DDRB
.equ IO_PINS = PINB
.equ LED_PIN = 0
.equ BUZZER_PIN =2
.equ PUSHBUTTON_PIN = 3
.equ ALARM_PIN = 4

.equ FLAG_WDT = 0
.equ FLAG_PCI = 1
.equ FLAG_PUSHBUTTON_SHORT = 2
.equ FLAG_PUSHBUTTON_LONG = 3
.equ FLAG_ALARM_COUNTER = 4
.equ FLAG_EXIT_COUNTER = 5
.equ FLAG_ENTRY_COUNTER = 6
.equ FLAG_ALARM_ENABLED = 7
.equ pushbutton_max = 10
.equ pushbutton_short = 1
.equ pushbutton_long = 3
.equ entry_delay = 15
.equ exit_delay = 60
.equ alarm_duration = 60
.org $0000

             rjmp main

.org WDTAddr
             rjmp WDTHandler

.org PCI0Addr
             rjmp PCIHandler

.org (int_vectors_size*2)

main:
         ldi temp1,low(ramend)
         out spl,temp1
         clr buzzer_counter
         clr led_counter
         clr pushbutton_counter
         clr exit_counter
         clr entry_counter
         clr wdt_counter


         rcall init_io_port
         rcall init_wdt
         rcall init_pci

         sei
endless:
         sbrc FLAGS,FLAG_WDT
         rcall wdt_flag_handler
         nop

         sbrc FLAGS,FLAG_pci
         rcall pci_flag_handler
         nop

         sbrc FLAGS,FLAG_PUSHBUTTON_SHORT
         rcall pushbutton_short_handler
         nop

         sbrc FLAGS,FLAG_PUSHBUTTON_LONG
         rcall pushbutton_long_handler
         nop

         sbrc FLAGS,FLAG_EXIT_COUNTER
         rcall flag_exit_counter_handler
         nop
         sbrc FLAGS,FLAG_ENTRY_COUNTER
         rcall flag_entry_counter_handler
         nop
         ldi temp1,0b00110000
         out mcucr,temp1
         sleep

         rjmp endless

wdt_flag_handler:
         cbr flags,(1<<FLAG_WDT)

         rcall led_pulse
         ret


pci_flag_handler:
         cbr flags,(1<<FLAG_PCI)
         sbrc flags,FLAG_ALARM_ENABLED
         rcall counter_entry

         ret


flag_exit_counter_handler:

         cbr flags,(1<<FLAG_EXIT_COUNTER)
         sbr flags,(1<<FLAG_ALARM_ENABLED)
         rcall led_short
         ret

flag_entry_counter_handler:

         cbr flags,(1<<FLAG_ENTRY_COUNTER)
         rcall led_long
         rcall buzzer_alarm
         ret



pushbutton_short_handler:
         cbr flags,(1<<FLAG_PUSHBUTTON_SHORT)
         rcall counter_exit
         rcall led_long

         ret
pushbutton_long_handler:
         cbr flags,(1<<FLAG_PUSHBUTTON_LONG)
         clr entry_counter
         clr exit_counter
         cbr flags,(1<<FLAG_ALARM_ENABLED)|(1<<FLAG_ENTRY_COUNTER)|(1<<FLAG_EXIT_COUNTER)

         rcall led_short
         ret



init_io_port:
         ldi temp1,(1<<LED_PIN)|(1<<BUZZER_PIN)
         out IO_DDR,temp1
         //enable pullups
         ldi temp1,(1<<PUSHBUTTON_PIN)|(1<<ALARM_PIN)
         out IO_PORT,temp1

         ret



init_WDT:   ldi temp1,(0<<WDRF)
             out MCUSR,temp1
             in temp1,WDTCR
             ori temp1,(1<<WDE)|(1<<WDCE)
             out WDTCR,temp1
             ldi temp1,(1<<WDTIE)|(0<<WDE)|(0<<WDP3)|(1<<WDP2)|(1<<WDP1)|(0<<WDP0)
             out WDTCR,temp1
             ret

init_pci:
         ldi temp1,(1<<ALARM_PIN)
         out pcmsk,temp1
         ldi temp1,(1<<PCIE)
         out GIMSK,temp1


         ret

led_pulse:  cpi led_counter,$00
             brne exit_pulse
             cpi exit_counter,$00
             brne do_pulse
             sbrs flags,FLAG_ALARM_ENABLED
             rjmp exit_pulse

             inc wdt_counter
             cpi wdt_counter,5
             brne exit_pulse
             clr wdt_counter

do_pulse:
             sbi IO_PORT,LED_PIN
             ldi temp1,100
delay:      dec temp1
             brne delay
             cbi IO_PORT,LED_PIN
exit_pulse:
             ret


wdthandler:
             in sreg_temp,sreg
             push temp1
             sbr FLAGS,(1<<FLAG_WDT)
             rcall buzzer_handler
             brne exit_wdt_handler

             rcall led_handler
             rcall pushbutton_handler
             rcall exit_counter_handler
             rcall entry_counter_handler


exit_wdt_handler:
             pop temp1
             out sreg,sreg_temp
             reti

exit_counter_handler:
             cpi exit_counter,$00
             breq exit_exit_counter_handler
             dec exit_counter
             brne exit_exit_counter_handler
             sbr flags,(1<<FLAG_EXIT_COUNTER)
exit_exit_counter_handler:
             ret

entry_counter_handler:
             cpi entry_counter,$00
             breq exit_entry_counter_handler
             dec entry_counter
             brne exit_entry_counter_handler
             sbr flags,(1<<FLAG_ENTRY_COUNTER)
exit_entry_counter_handler:
             ret



pushbutton_handler:
             sbic IO_PINS,PUSHBUTTON_PIN
             rjmp pushbutton_release
             cpi pushbutton_counter,pushbutton_max
             breq exit_pushbutton_handler
             inc pushbutton_counter
exit_pushbutton_handler:
             ret


pushbutton_release:
             cpi pushbutton_counter,pushbutton_short
             brlo exit_pushbutton_release
             cpi pushbutton_counter,pushbutton_long
             brlo do_pb_short
             sbr flags,(1<<FLAG_PUSHBUTTON_LONG)
             rjmp exit_pushbutton_release


do_pb_short:
             sbr flags,(1<<FLAG_PUSHBUTTON_SHORT)


exit_pushbutton_release:
             clr pushbutton_counter
             ret

buzzer_handler:
             cpi buzzer_counter,$00
             breq buzzer_off
             sbi IO_PORT,BUZZER_PIN
             dec buzzer_counter




             ret


buzzer_off:    cbi IO_PORT,BUZZER_PIN
             ret

led_handler:
             cpi led_counter,$00
             breq led_off
             dec led_counter


             sbi IO_PORT,LED_PIN

             ret


led_off:    cbi IO_PORT,LED_PIN
             ret



PCIHandler: in sreg_temp,sreg
             push temp1
             sbr FLAGS,(1<<FLAG_PCI)


             pop temp1
             out sreg,sreg_temp
             reti

buzzer_alarm:
             ldi buzzer_counter,alarm_duration
             ret
led_short:
             ldi led_counter,1
             ret
led_long:
             ldi led_counter,3
             ret



counter_exit:
             ldi exit_counter,exit_delay
             ret

counter_entry:
             cpi entry_counter,$00
             brne exit_counter_entry

exit_counter_entry:
             ldi entry_counter,entry_delay
             mov led_counter,entry_counter
             ret

Leider gab es schon beim Compilieren die ersten Probleme z.B. (Zeilenumbruch). nachdem ich endlich diese Hürde geschafft habe, habe ich den Debugger gestartet und der bleibt mit einem gelben Pfeil bei "rjmp main" stehen. Habe leider keine Ahnung weshalb und bin - nachdem ich meinen ganzen freien Tag nun schon probiere - etwas entnervt! Kann mich jemand aufklären? Leider kann ich keine Progamme schreiben weder in C noch Assembler, brauche aber so eine Lösung für meine Katzenklappe mit RFID Zugang. Zeiten könnte ich wahrscheinlich selbst ändern. Hilfreich wäre für mich noch, wenn man den Taster zum Starten weglassen könne und stattdessen die Routine automatisch mit der Spannungsversorgung beginnt. Gibt es diese Platine http://www.loetstelle.net/projekte/tinydil/tinydil.php evtl noch?? Ich wäre wirklich über Hilfe sehr dankbar!
LG bombel_locke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
bombel_locke



Anmeldungsdatum: 19.03.2012
Beiträge: 6
Wohnort: Karlsruhe

BeitragVerfasst am: Mi 21.März 2012 07:44:59    Titel: Atmel Mini Alarm Anlage Bauteile finden Antworten mit Zitat

Hallo liebe Forumgemeinde.
Es gibt neues zu berichten. Habe ein Fehler auf meiner Platine gefunden. Nun funzt das Progamm. Wenn mir jetzt noch jemand sagen könnte, wie ich den Code ändern muss, damit der Progammablauf schon startet, sobald Spannung angelegt wird, also ohne Taster startet?
VG Armin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Anzeige






Verfasst am: Heute 08:54:51    Titel: Bauteile finden

Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> Digitaltechnik Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen


Powered by phpBB 2.x © 2001, 2002 phpBB Group

Sie sind Besucher Nr. 1200402
©opyright by Markus Vohburger 2005 All Rights reserved