Geocaching & GPS location based games

Thema anzeigen - Fragen zur Software


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 173 Beiträge ]  Gehe zu Seite Vorherige  1 ... 3, 4, 5, 6, 7, 8, 9 ... 18  Nächste


Autor Nachricht
 Betreff des Beitrags: Re: Fragen zur Software
BeitragVerfasst: Mo 22. Mär 2010, 14:20 
Offline
Geowizard
Benutzeravatar

Registriert: Mi 10. Okt 2007, 22:01
Beiträge: 2790
Code:
adr=getadc(x)
If adr>Schwelle then incr Ausloesezaehler
if Ausloesezaehler = 3 then
    MACHWAS
    Ausloesezaehler = 0
end if

Reicht das als "Anschubser"? ;)

Alternativ kannst Du über einen Timer noch die Länge der Blitze ermitteln lassen, oder, oder, oder :D


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zur Software
BeitragVerfasst: Mo 22. Mär 2010, 14:33 
Offline
Geowizard
Benutzeravatar

Registriert: Mo 24. Sep 2007, 15:52
Beiträge: 2315
Wohnort: 39326 Hohenwarsleben
ich versuche mich mal ;)
Danke

_________________
Bild..Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zur Software
BeitragVerfasst: Mo 22. Mär 2010, 14:44 
Offline
Geowizard
Benutzeravatar

Registriert: So 31. Dez 2006, 17:51
Beiträge: 1352
Wohnort: 77876 Kappelrodeck
Das wird so aber nicht ganz funktionieren, da bei langem Anleuchten der Zähler auch bis 3 hochläuft...
Zwischendurch müsste noch mal auf "Dunkel" geprüft werden, damit wirklich 3 Blitze detektiert wedren können.
Zusätzlich müsste über einen wie auch immer gearteten Timeout der Zähler wieder zurückgesetzt werden, wenn nach einer bestimmten Zeit keine weiteren Anblinkereien kommen. Sonst blinkt einer 2-mal, geht weiter und beim nächsten wird eine halbe Stunde später schon beim ersten Blitz ausgelöst...

Das Problem ist durchaus vielschichtiger...

_________________
Gruß aus dem (badischen) Schwarzwald, Andreas (1/4 Kappler)
Bekennender Fremdlogleser und Rosinenpicker


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zur Software
BeitragVerfasst: Mo 22. Mär 2010, 14:56 
Offline
Geowizard
Benutzeravatar

Registriert: Mo 24. Sep 2007, 15:52
Beiträge: 2315
Wohnort: 39326 Hohenwarsleben
stimmt :???: na ja, vielleicht das morseeingabeprogramm aus dem kochbuch modifizieren..... hat nur bisher nicht geklappt :kopfwand:

_________________
Bild..Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zur Software
BeitragVerfasst: Mo 22. Mär 2010, 14:59 
Offline
Geowizard
Benutzeravatar

Registriert: Mi 10. Okt 2007, 22:01
Beiträge: 2790
Schon klar, war auch nur ein grober Gedankenanstoß.

Aber ich habe mal folgendes draußen im Einsatz gehabt (genau genommen, hängt es sogar noch ;) )

Code:
$regfile = "ATtiny13.DAT"
$crystal = 16000                                            'Frequenz des internen Oszillators
$hwstack = 8                                                'hardwarestack herabsetzen damit genügend variablen zur verfügung stehen
Config Adc = Single , Prescaler = Auto
'Config Portb = &B00001110                                   'Pinb.3,2 auf 'Ausgang', Rest auf 'Eingang' schalten
Config Portb = &B00001100
Portb = 0                                                   'Ausgänge auf Low setzen
Stop Ac                                                     'Analog-Komparator abschalten, um Strom zu sparen
Wdtcr = &B11010011                                          'Watchdog definieren: 0.125 Sekunden, Interrupt auslösen, kein Reset
Enable Interrupts                                           'Interrupts freigeben
Const Schwelle = 50                                         'je größer der Schwellwert, desto unempfindlicher
Const Tagschwelle = 800                                     'Schwellwert für Schlafmodus
Const Zwangsimpuls = 8                                      'LED-Impuls tagsüber alle X Schlafyklen (á ca. 8 Sekunden)
Dim A As Byte                                               'Variablen definieren
Dim Tagzaehler As Byte
Dim Ldr As Integer                                          '0 = Dunkel, 1023 = Hell
Dim Alt As Integer
Dim Merker As Integer
Dim N As Integer
Dim X As Byte
Dim Merkx As Byte

Portb.2 = 1
Portb.3 = 1
Wdtcr = &B11110001
'Portb.1 = 1                                               'Watchdog auf 8 Sekunden stellen
Reset Watchdog
Powerdown
Reset Watchdog
Powerdown
Reset Watchdog
Powerdown
Reset Watchdog
Powerdown
Reset Watchdog
Powerdown
Reset Watchdog
Powerdown
Reset Watchdog
Powerdown
Reset Watchdog
Powerdown
'Portb.1 = 0
Wdtcr = &B11010011
Portb.3 = 0
Portb.2 = 0

Do
 Reset Watchdog
 Powerdown                                                  'prozessor bremsen da sonst lichtänderung nicht erkannt wird
 Start Adc                                                  'A/D-Wandler starten
 Ldr = Getadc(2)                                            'Helligkeitswert einlesen
 Stop Adc                                                   'A/D-Wandler zum Stromsparen wieder stoppen
 Merker = Ldr - Alt                                         'Unterschied zwischen letzter und aktueller Messung ermitteln
 Alt = Ldr                                                  'letzten LDR-Wert sichern
 If Merker > Schwelle Then                                  'Bei großer Änderung Dunkel->Hell: Blinken
  If X < 8 Then Incr Merkx
  If Merkx = 3 Then
      Merkx = 0
      X = 0
      Portb.2 = 1
      Portb.3 = 1
      Wdtcr = &B11110001
      'Portb.1 = 1                                               'Watchdog auf 8 Sekunden stellen
      Reset Watchdog
      Powerdown
      Reset Watchdog
      Powerdown
      Reset Watchdog
      Powerdown
      Reset Watchdog
      Powerdown
      Reset Watchdog
      Powerdown
      'Portb.1 = 0
      Wdtcr = &B11010011
      Portb.3 = 0
      Portb.2 = 0
      N = 280

  Else
     For A = 0 To 10
     Portb.3 = 1
     Reset Watchdog
     Powerdown
     Portb.3 = 0
     Reset Watchdog
     Powerdown
     Next A
     X = 0
     Alt = 1023
  End If
 End If
 If X < 10 Then
   Incr X
 Else
   Merkx = 0
 End If

 If Ldr > Tagschwelle Then                                  'prüfen ob helligkeit über tagschwelle liegt
  If Tagzaehler < 255 Then Incr Tagzaehler                  'int-variable geht nur bis 255
 Else
  Tagzaehler = 0                                            'wenn wieder dunkel tagzähler löschen
 End If
 If Tagzaehler < 200 Then                                   'wenn mehr als x zyklen hell dann schlafmodus
  If N = 1 Then Portb.2 = 1
  If N = 2 Then Portb.2 = 0
  If N = 64 Then Portb.2 = 1
  If N = 65 Then Portb.2 = 0
  If N = 300 Then
   N = 0
  Else
   Incr N
  End If
 Else
  N = 0
  Wdtcr = &B11110001
  'Portb.1 = 1                                               'Watchdog auf 8 Sekunden stellen
  Reset Watchdog
  Powerdown
  Reset Watchdog
  Powerdown
  Reset Watchdog
  Powerdown
  'Portb.1 = 0
  Wdtcr = &B11010011
 End If
Loop

End


Macht folgendes:
Wenn nach dem Auslösen innerhalb von 1 Sekunde erneut ausgelöst wird, und das 3 mal, dann gehen alle beschaltete Ausgänge auf HIGH


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zur Programmierung
BeitragVerfasst: Mo 17. Mai 2010, 20:42 
Offline
Geocacher
Benutzeravatar

Registriert: Mi 29. Okt 2008, 22:41
Beiträge: 235
Hallo, die Herren, ich verzweifel mal wieder. Und hoffe auf Erleuchtung durch Euch.
Habe eine Schaltung, bei der LEDs gemultiplext werden. Das Muster holt sich der uC aus einer Tabelle. Nacheinander werden 4 Bytes gelesen und auf PortA ausgegeben, der Transistor, der gegen gemeinsame Masse von je 8 LEDs zieht, hängt an PortB. Nun ist der tiny84 gerade so ausreichend und - bevor ich ihn mit meinem einfach-programmer nicht mehr proggen kann, wollte ich natürlich meinen PB3 nicht als Ausgang setzen. Das erst, wenn alles klappt. Es klappt aber gar nichts. Nicht einmal das Setzen der 1 LED in der Initialisierung klappt. Wo ist mein (offensichtlicher?) Fehler?
Code:
$regfile = "ATtiny84.DAT"

$crystal = 8000000                                          'Reale Frequenz des internen 128kHz-Oszillators
$hwstack = 10                                               ' default use 32 for the hardware stack
$swstack = 20                                               'default use 10 for the SW stack
$framesize = 20                                             'default use 40 for the frame

Const Runden = 10

Dim Daten As Byte                                           ' auszugebendes Byte
Dim Datena As Byte
Dim Datenb As Byte
Dim Datenc As Byte
Dim Datend As Byte
Dim Schleife As Byte
Dim Wiederholungen As Byte
Dim Zaehler As Word
Config Portb = &B11110111                                   'Portb.3 als Reset -Eingang schalten
Portb = &B00001000                                          'keine Pullups zuschalten
Config Porta = Output                                       ' einzelnes Byte (1..8,9..16,17..24,25..32)
Porta = 1
Portb = 1
Zaehler = 0
Waitms 5000



Do
   For Wiederholungen = 1 To 10
      Daten = Lookup(zaehler , Blinkmuster)
      If Daten <> &B01010101 Then                           ' Wenn das erste Byte keine 01010101 ist, sind alle 4 Bytes gültig
         Datena = Lookup(zaehler , Blinkmuster)
         Incr Zaehler
         Datenb = Lookup(zaehler , Blinkmuster)             'Zweites Byte holen
         Incr Zaehler
         Datenc = Lookup(zaehler , Blinkmuster)             'Drittes Byte holen
         Incr Zaehler
         Datend = Lookup(zaehler , Blinkmuster)             ' Viertes Byte holen
         Incr Zaehler
         For Schleife = 1 To 33                             ' 33x20ms = 2/3 Sekunde
            Porta = Datena
            Portb = 1
            Waitms 5
            Portb = 0
            Porta = Datenb
            Portb = 2
            Waitms 5
            Portb = 0
            Porta = Datenc
            Portb = 4
            Waitms 5
            Portb = 0
            Porta = Datend
            Portb = 8
            Waitms 5
            Portb = 0
         Next Schleife
      Else                                                  ' alles rum, dann reinitialisieren
         Zaehler = 0
         Porta = 0
         Portb = 0
         Waitms 1000                                        ' 1 Sekunde Pause
      End If
   Next Wiederholungen                                      'Das gesamte Muster 10x durchspielen, dann
   Mcucr = &B000100000                                      ' Schlafsettings
   sleep                                                    ' Schlafen
Loop

End






Blinkmuster:
Data &B00000000 , &B00000000 , &B00000000 , &B00000000
Data &B00000000 , &B00000000 , &B00000000 , &B10000000     
Data &B00000000 , &B00000000 , &B00000000 , &B10000001     
Data &B00000000 , &B00000001 , &B00000000 , &B10000001     
Data &B00000000 , &B10000001 , &B00000000 , &B10000001
Data &B01000000 , &B10000001 , &B00000000 , &B10000001
Data &B01000100 , &B10000001 , &B00000000 , &B10000001     
Data &B01000100 , &B10000101 , &B00000000 , &B10000001     
Data &B01000100 , &B10000101 , &B00000000 , &B10010001     
Data &B01000100 , &B10000101 , &B00000000 , &B10110001     
Data &B01000100 , &B10001101 , &B00000000 , &B10110001   
Data &B01100100 , &B10001101 , &B00000000 , &B10110001     
Data &B01100100 , &B10001111 , &B00000000 , &B10110001     
Data &B11100100 , &B10001111 , &B00000000 , &B10110001     
Data &B11100100 , &B10101111 , &B00000000 , &B10110001     
Data &B11100100 , &B10111111 , &B00000000 , &B10110001     
Data &B11100100 , &B10111111 , &B00000000 , &B10111001     
Data &B11100101 , &B10111111 , &B00000000 , &B10111001     
Data &B11100101 , &B11111111 , &B00000000 , &B10111001     
Data &B11100101 , &B11111111 , &B00000000 , &B10111011   
Data &B11100101 , &B11111111 , &B00000001 , &B10111011     
Data &B11100111 , &B11111111 , &B00000001 , &B10111011     
Data &B11101111 , &B11111111 , &B00000001 , &B10111011     
Data &B11111111 , &B11111111 , &B00000001 , &B10111011     
Data &B11111111 , &B11111111 , &B01000001 , &B10111011     
Data &B11111111 , &B11111111 , &B01000101 , &B10111011     
Data &B11111111 , &B11111111 , &B01100101 , &B10111011     
Data &B11111111 , &B11111111 , &B01110101 , &B10111011     
Data &B11111111 , &B11111111 , &B11110101 , &B10111011     
Data &B11111111 , &B11111111 , &B11110111 , &B10111011     
Data &B11111111 , &B11111111 , &B11111111 , &B10111011     
Data &B01010101                                             ' Endemarker         '


Danke vorab,
Carsten


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zur Programmierung
BeitragVerfasst: Mo 17. Mai 2010, 22:36 
Offline
Geowizard
Benutzeravatar

Registriert: Fr 18. Nov 2005, 17:30
Beiträge: 1643
Wohnort: ~ N 51°21' E 12°00'
schnasemann hat geschrieben:
Es klappt aber gar nichts. Nicht einmal das Setzen der 1 LED in der Initialisierung klappt. Wo ist mein (offensichtlicher?) Fehler?
Also den offensichtlichen Fehler habe ich nicht, aber einen:

schnasemann hat geschrieben:
Code:
[...]
            Portb = 8
            Waitms 5
            Portb = 0
[...]
Sofern Du den /RST-Pin nicht lahm gelegt hast, geht das nicht, da PB3 auch gleichzeitig /RST ist und damit nicht als IO-Pin zur Verfügung steht.

HTH und viele Grüße,
Thomas(_st)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zur Software
BeitragVerfasst: Di 18. Mai 2010, 07:35 
Offline
Geocacher
Benutzeravatar

Registriert: Mi 29. Okt 2008, 22:41
Beiträge: 235
Hallo, Thomas,
das schrieb ich doch. Den PORTB3 will ich schon als Ausgang verwenden, aber erst, wenn alles geht. In den Fusebits ist er noch als normaler Reset-Eingang gesetzt. Und den Pull-up eingeschaltet. Dann müsste doch wenigstens der Anfang funktionieren, oder?
Carsten


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zur Software
BeitragVerfasst: Di 18. Mai 2010, 16:44 
Offline
Geowizard
Benutzeravatar

Registriert: Fr 18. Nov 2005, 17:30
Beiträge: 1643
Wohnort: ~ N 51°21' E 12°00'
schnasemann hat geschrieben:
das schrieb ich doch. Den PORTB3 will ich schon als Ausgang verwenden, aber erst, wenn alles geht.
Sorry, das hatte ich überlesen.

Da fällt mir mit meinen bruchstückhaften Bascom-Wissen nicht mehr viel ein, außer auf folgende Punkte hinzuweisen und zu fragen ob das so ok ist:
schnasemann hat geschrieben:
Code:
$crystal = 8000000                                          'Reale Frequenz des internen 128kHz-Oszillators
Die 8MHz sind gefused?

schnasemann hat geschrieben:
Code:
Config Portb = &B11110111                                   'Portb.3 als Reset -Eingang schalten
Portb = &B00001000                                          'keine Pullups zuschalten
Config Porta = Output                                       ' einzelnes Byte (1..8,9..16,17..24,25..32)
Das funktioniert so? Einmal über eine Konstante "Output" und einmal per Bitmuster konfiguriert.

Wie war das: gab es da nicht mal Probleme mit einem Config-File für eine Tiny-Reihe? Weiß aber nicht ob das die Tiny x4- oder Tiny x5-Reihe war.

Mehr weiß ich jetzt auch nicht mehr.

Viele Grüße und HTH trotzdem,
Thomas(_st)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Fragen zur Software
BeitragVerfasst: Di 18. Mai 2010, 19:56 
Offline
Geocacher
Benutzeravatar

Registriert: Mi 29. Okt 2008, 22:41
Beiträge: 235
8MHz ist gefused, PORT-Konfiguration habe ich beim 13er auch so gemacht, laut Doku soll das auch gehen.
Neue Bascom Version habe ich auch installiert, in der Hoffnung, dass das Config-File da stimmt. Ein Revision- oder History-File suche ich vergeblich.
Nun bin ich am Ende meines Lateins. Und das Ding läuft immer noch nicht und ich dachte, das klappt noch vorm Urlaub. :kopfwand:


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 173 Beiträge ]  Gehe zu Seite Vorherige  1 ... 3, 4, 5, 6, 7, 8, 9 ... 18  Nächste


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Impressum