-         

Ergebnis 1 bis 4 von 4

Thema: Newbie Frage(n)

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    29.03.2007
    Beiträge
    64

    Newbie Frage(n)

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,

    als erstes möchte ich mich mal eben Vorstellen.
    Mein Name ist Daniel. 26J, Energieelektroniker und auf dem Weg zum staatl. gepr. Elektrotechniker.
    Programmierkentnisse: SPS- und Delphiprogrammierung. Beides nicht perfekt , aber man lernt ja immer dazu

    Vor zwei Tagen habe ich den µController Einstieg gewagt und mir bei Pollin das Evulation Board gekauft. Es war schön billig, so daß ich erst mal probieren kann. Jetzt habe ich hier die ganzen Tutorials gelesen um mir einen Überblick zu verschaffen. Einfache Programme, wie z.B. das Schalten einer LED auf Knopfdruck, laufen. Jetzt möchte ich aber doch mal eine "echte" Schaltung mit Programm entwickeln.
    Folgendes Projekt hab ich im Auge:
    Eine Radlampe über PWM gedimmt. Nach drei Sekunden Betätigen eines Schalters soll die Lampe in der kleinsten Dimmstufe einschalten. Nach drücken des Tasters soll man in die nächst höhere Dimmstufe wechseln können. Ist die dritte Stufe erreicht (Max Stufe), soll nach Betätigen des Tasters wieder in die erste Stufe gewechselt werden.
    Wenn der Taster wieder 3 Sekunden betätigt wird, schaltet man die Lampe aus.

    Folgenden Quelltext habe ich mal getippt (hier nur zwei PWM Stufen, und in den Sprüngen werden zum test nur led´s getogglet):
    Code:
    'Tell the compiler which AVR chip we use
    $regfile = "m16def.dat"
    
    'Tell the compiler which crystal frequency was used
    $crystal = 16000000      '16.00000 MHz
    
    'Specify baud rate for serial port
    $baud = 9600
    
    
    '################### Ausgänge ######################################
    config portd.5 = Output			'Port D5 als Ausgang konfigurieren
    led1 alias portd.5
    config portd.6 = output			'Port D6 als Ausgang konfigurieren
    led2 alias portd.6
    
    '################### Eingänge ######################################
    config pind.2 = input			'Pin D2 als Eingang konfigurieren
    taster1 alias pind.2
    
    '################### Variablen ######################################
    Dim EIN as Bit
    Dim A as Integer
    
    
    do								'Beginn Hauptschleife
    main:							
    if taster1=1 then				'Wenn Taster 3s gedrückt
    waitms 3000 
    if taster1=1 then
    goto schalten
    end if
    end if
    
    if EIN =1 then					'Wenn EIN
      if taster1=1 then				'Und Taster gedrückt
      waitms 50
      if taster1=1 then 
      incr A						'Variable um 1 erhöhen
    end if
    end if
    end if
      
    if A = 2 then					'Wenn Variable = 2
    A = 0							'Variable wieder auf 0 
    end if
    
    if EIN =1 then					'Wenn EIN
    if A = 0 then					' UND A=0
    goto PWM1 						' Gehe zu PWM1
    end if
    end if
    
    if EIN =1 then					'Wenn EIN
    if A=1 then						' UND A=1
    goto PWM2						'Gehe zu PWM2
    end if
    end if
     				
    if EIN =1 then 
    led2 = 1
    end if
    					
    loop							'ENDE
    
    
    schalten:						'Eischalten
    toggle EIN
    A = 0							'Variable auf 0
    goto main
    
    
    
    PWM1:
    toggle led1
    goto main
    
    PWM2:
    toggle led2
    goto main
    Leider läuft es nicht so wie geplant, vielleicht kann mir ja hier jemand einen Tipp geben.

    Ich wäre euch sehr dankbar!

    Gruß
    Daniel

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    51
    Beiträge
    117
    wenn du das mal im simulator mit f8 schritt für schritt machst ,wirst du sehen das du immer wieder in deiner main mit der 3 sekunden abfrage landest. dort must du es ändern,bzw in der sub schalten. nicht wieder in die main sondern in eine zweite main springen nach der 3 sek abfrage.
    habe aber mir die sache noch nicht genauer angeschaut.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    29.03.2007
    Beiträge
    64
    Hallo Helimike,

    danke für die Antwort!
    Ich weiß aber leider nicht wie ich das Programm simulieren soll.
    Der Debugger funktioniert bei meiner Bascom Demo Version nicht.

    Was versteht man denn genau unter Subroutine?

    Gruß
    Daniel

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    51
    Beiträge
    117
    ich habe mir die letzte demo von Bascom geladen,da funzt alles,sowie in der letzten version.
    eine subroutine ist ein programm-abschnitt in dem etwas abgearbeitet wird und von dem man aus wenn etwas erfüllt ist in einen anderen programm-abschnitt (routine) springt.wie in deinem programm z.b. der sprung ins "schalten:" oder "pwm1:","pwm2:
    versuche mal nach deiner "main:" eine "main2:" in dem anschnitt zwischen den end if und deiner zweiten abfrage der taste bei "if EIN=1 then" als main2: zu deklarieren.gehe in den simulator und arbeite mit f8 alles schrittweise durch,dann kommst du schon darauf wie es ablaufen muss,so das es läuft wie du möchtest.eins noch wenn du in deine pwm
    springst ist nach abarbeitung schluss,sprich du läufst ins leere -> ende programm,dort musst du wieder in eine abfrage der tasten springen.
    hoffe dir soweit geholfen zu haben.

Berechtigungen

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