- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 19

Thema: Ortungspieper mit ATtiny13 für Modell-Elektrosegler

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    20.08.2011
    Beiträge
    61

    Ortungspieper mit ATtiny13 für Modell-Elektrosegler

    Hallo an alle Modellflieger,
    habe mit Pic 12Cxxx etwa 10 Stück von den Ortungspiepern erstellt. Nun dachte ich, dieses Thema
    mit einem 8 poligen tiny13 aufzubauen. Bin noch Anfänger und sags gleich vorraus "meine Englischkenntnisse=0".
    Bitte nicht mit dem Hinweis "ins Datenblatt schauen"! habe mir Bücher in Deutsch zugelegt.
    Angefangen mit den AVR hats mit einem Lernpacket vom Franzis-Verlag, hinzugekommen ist eine
    Programmiereinheit von myAVR, die ich über die ISP Schnittstelle erweitert habe.
    Über die Funktionsweise des Ortungspiepers (OP) werde ich später berichten, es würde jetzt zu weit führen.

    Als ersten Test habe ich mit Bascom eine IF / ELSE / ENDIF Routiene aufgebaut und komme hier nicht weiter.
    Sofort nach Zugeben der Versorgung blinkt die LED an PortB.0 obwohl keine Taste betätigt ist.
    Ich meinte zu wissen, das:
    wenn keine Taste gedrückt, wird zwischen Else und Endif abgearbeitet, (Input=High / Pullupp aktiviert)
    wenn Taste gedrückt, wird zwischen If und Else abgearbeitet.
    Rein vom logischen dürfte die LED doch nicht blinken, wo hab ich nur einen Denkfehler!

    'Datei-Name: tinypieper00.bas

    'Datum: 03.09.2011

    'Zielsetzung:Ortungspieper für 20/30/40 Minuten

    'Taste "Test" für Testbetrieb an PB3 Pin 2
    'Schalter "Sw1" für 20 Min. an PB4 Pin 3
    'Schalter "Sw2" für 30 Min. an PB1 Pin 6
    'Schalter "Sw3" für 40 Min. an PB2 Pin 7
    'Ausgang an PB0 Pin 5

    'System-Einstellungen
    '================================================= =====
    'Definition für ATtiny13
    $regfile "attiny13.dat"

    'Angabe der Taktfrequenz
    $crystal = 1000000


    'Konfiguration Ausgang / Eingänge:
    '================================================= =====
    'PORTB.0 als Output
    Piep Alias Portb.0
    Config Piep = Output


    Test Alias Pinb.3
    Config Test = Input
    Portb.3 = 1


    Sw1 Alias Pinb.4
    Config Sw1 = Input
    Portb.4 = 1

    Sw2 Alias Pinb.1
    Config Sw2 = Input
    Portb.1 = 1

    Sw3 Alias Pinb.2
    Config Sw3 = Input
    Portb.2 = 1

    'Hauptprogramm-Schleife

    Do
    Abfrage:
    If Test = 0 Then
    Goto Piepen
    Else
    Goto Zeit1
    End If

    Zeit1:
    If Sw1 = 0 Then
    Goto Piepen
    Else
    Goto Zeit2
    End If

    Zeit2:
    If Sw2 = 0 Then
    Goto Piepen
    Else
    Goto Zeit3
    End If

    Zeit3:
    If Sw3 = 0 Then
    Goto Piepen
    Else
    Goto Abfrage
    End If

    Loop

    Piepen:
    Piep = 1
    Wait 1
    Piep = 0
    Wait 1
    Goto Piepen

    Grüße

    Rolf

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Moin Rolf,

    vom reinen Code her würde ich auf den ersten Blick auch sagen, dass das Programm eigentlich in der "Piepen"-Schleife landen müsste, wenn keiner der vier Taster geschlossen wird. Auch wenn man den Code hier & da noch etwas verschlanken könnte - aber darum geht´s im Moment ja (noch) nicht

    Ich hatte einmal ein ähnliches Problem, als ganz am Anfang des Programms (noch vor der Do-Loop-Schleife) ein komplettes Byte mittels DIP-Schalter eingestellt und eingelesen werden sollte. Dabei kamen auch ganz andere Werte heraus, als mit dem Schalter eingestellt wurden.

    Das Problem ließ sich beheben, indem ich nach der Aktivierung der PullUp-Widerstände eine kurze Wartezeit programmiert habe (waitms 50). Irgendwie scheinen sich diese High-Pegel nicht unmittelbar sofort einzustellen, warum weiß ich auch nicht genau, denn die Zeitkonstante aus dem PullUp-Widerstand und der Eingangskapazität ist schon sehr kurz. Aber nach dieser kleinen initialen Pause ging´s einwandfrei: Taster offen = 1, Taster geschlossen = 0.

    Versuch´s einfach mal!


    Gruß,

    Daniel

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    20.08.2011
    Beiträge
    61
    Hallo Daniel,
    danke für Deine Antwort!

    Habe Waitms 50 hinzu gefügt, leider nichts...es blinkt und blinkt.
    Das Ganze sieht jetzt in der Konfiguration der Eingänge so aus:

    Test Alias Pinb.3
    Config Test = Input
    Portb.3 = 1
    Waitms 50

    Sw1 Alias Pinb.4
    Config Sw1 = Input
    Portb.4 = 1
    Waitms 50

    Sw2 Alias Pinb.1
    Config Sw2 = Input
    Portb.1 = 1
    Waitms 50

    Sw3 Alias Pinb.2
    Config Sw3 = Input
    Portb.2 = 1
    Waitms 50

    Grüße

    Rolf

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Wie seltsam... dann hilft es wohl nur noch, das Problem etwas systematischer "einzukreisen".

    Dazu würde ich mal als erstes überprüfen, ob das Zusammenspiel zwischen Tastern und Eingangspegeln auch ordentlich funktioniert:

    Code:
    $regfile "attiny13.dat"
    $crystal = 1000000
    
    Piep Alias Portb.0
    Config Piep = Output
    
    Test Alias Pinb.3
    Config Test = Input
    Portb.3 = 1
    
    Do
    Piep = Test
    Loop
    Das ganze prüft natürlich nur einen Eingang, müsste also ggf. noch mit den anderen 3 Eingängen wiederholt werden. Aber dann weißt Du schon mal ob´s gleich schon an den Eingängen scheitert, oder doch noch ein Problem im Code steckt (das ich aber nach wie vor nicht sehe).

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    20.08.2011
    Beiträge
    61
    Hallo Daniel,
    hab mich gleich ran gemacht und die Pegel an den Eingängen gemessen.
    Siehe da, Deine Vermutung lag richtig!
    an Portb.1 (definiert als Sw2) lagen etwa 1,xx Volt!
    Der Grund ist nicht der Taster noch der Pin-Eingang...sondern:
    Hier muß ich nochmal zurück greifen, um das Ganze zu verstehen.
    Ich legte mir eine myAVR zu. Der Sockel ist aber nur gedacht für Atmega8 (28 pol.)
    da sich hier eine 10 pol. ISP Schnittstelle befand, habe ich auf einer Lochrasterkarte
    einen Sockel für tiny13 aufgelötet und die Steuerleitungen (MISO/MOSI/SCK mit Vers.) rüber geführt.
    Damit haute die Programm. hin. Im Betrieb dann aber das Kabel von der myAVR dran gelassen. Hier muß
    mir die myAVR das High-Signal runter gezogen haben.
    Das kabel abgenommen und der Pegel lag sauber bei 5 Volt.
    Aber jetzt geht es erst richtig ins Eingemachte, denn ich benötige 3 Zeiten (20/30/40 Minuten)
    Und die sollte ich mit Timer 0 und Interrupt realisieren.
    Bevor es aber weiter geht, werde ich den Ortungspieper näher erklären.

    Danke nochmal

    Grüße
    Rolf

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Na, das ist doch schon mal ein guter Anfang!
    Dann bin ich mal gespannt auf Details zum Ortungspiepser - aber die genannten Aufgaben müssten sich mit einem Tiny13 problemlos realisieren lassen!

Ähnliche Themen

  1. Was ist das für ein Modell?
    Von mcrene im Forum Staubsaugerroboter / Reinigungs- und Rasenmähroboter
    Antworten: 1
    Letzter Beitrag: 09.12.2007, 18:10
  2. Farbsteuerung im HSV modell
    Von Jörn Arne im Forum Assembler-Programmierung
    Antworten: 5
    Letzter Beitrag: 05.10.2007, 23:40
  3. Funk Modell
    Von Nr. 5 im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 26.02.2007, 20:47
  4. NS5 als Modell?
    Von nemro im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 4
    Letzter Beitrag: 01.08.2006, 19:14
  5. 3D-Modell aus Sensorwerten???
    Von Papa Schlumpf im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 9
    Letzter Beitrag: 08.06.2006, 22:15

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test