- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Erstes Programm mit Bascom-AVR

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    17.05.2009
    Beiträge
    46

    Erstes Programm mit Bascom-AVR

    Anzeige

    Praxistest und DIY Projekte
    Hallo

    Meine ersten Schritte in Bascom sind eher Fehltritte.
    Hoffe jemand kann mir sagen wo das der Fehler liegt.
    Wen ich den Taster drücke soll eine LED Leuchten. Doch leider leuchtet die LED immer.

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    
    
    
    Config Portd.2 = Input                                      'D.2 ist Eingang
    Portd.2 = 1                                                 'D.2 Inter Pull an
    
    Config Portb.5 = Output                                     'B.5 ist Ausgang
    Led Alias Portb.5                                           'B.5 heisst LED
    
    
    Do                                                          'Start Hauptprogramm
    
    If Portd.2 = 1 Then
       Led = 1
       Else
       Led = 0
    End If
    
    
    Loop
    End
    Danke Für die Hilfe

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    port und pin problem du kannst nicht aus einem port lesen nur von pin also dort wo die eingabe machst schreibst du pin.

    edit
    also statt Config Portd.2 = Input
    Config Pind.2 = Input

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    17.05.2009
    Beiträge
    46
    Merci fürd schelli Hilf
    Aber Leider funktioniert es immer noch nicht. Habe es Versucht mit PORT auf PIN umzuschreiben.
    Kenntest du mir rasch die Zeile ändern di Relevant ist?

    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    
    
    
    Config Pind.2 = Input                                       'D.2 ist Eingang
    Pind.2 = 1                                                  'D.2 Inter Pull an
    
    Config Portb.5 = Output                                     'B.5 ist Ausgang
    Led Alias Portb.5                                           'B.5 heisst LED
    
    
    Do                                                          'Start Hauptprogramm
    
    If Pind.2 = 1 Then
       Portb.5 = 1
       Else
       Portb.5 = 0
    End If
    
    
    Loop
    End
    So funktioniert es leider nicht

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    Code:
    $regfile = "m8def.dat"
    $crystal = 3686400
    
    
    
    Config Pind.2 = Input                                      'D.2 ist Eingang
    Pind.2 = 1                                                 'D.2 Inter Pull an
    
    Config Portb.5 = Output                                     'B.5 ist Ausgang
    Led Alias Portb.5                                           'B.5 heisst LED
    
    
    Do                                                          'Start Hauptprogramm
    
    If Pind.2 = 0 Then
       Led = 1
       Else
       Led = 0
    End If
    
    
    Loop
    End
    jetzt müsste es gehen

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    17.05.2009
    Beiträge
    46
    leider nein [-(

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    hast du mal die eletronische seite getestet?
    Do
    Portb.5=1
    waitms 500
    Portb.5=0
    waitms 500
    Loop
    dann müsst die led blinken

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    17.05.2009
    Beiträge
    46
    LED Blinkt im Halbsekunden Takt. Könnte es sein, dass der Taster nicht in Ordnung ist?

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    30.12.2008
    Beiträge
    1.427
    kann sein schaltest du nach gnd ? oder vcc ? du musst nach gnd schalten. wenn du den schalterverdächtigst mit kabel testen bzw kontrolieren ob der taster am richtigen pin ist

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    17.05.2009
    Beiträge
    46
    Die LED Leuchtet Andauernd. Wenn ich jedoch nun auf den Taster drücke Leuchtet sie minim heller (fast nicht erkennbar).

    So wie ich das Layout entziffere ist der Schalter mit GND verbunden.


    EDIT:
    Ist an der Schaltung etwas nicht IO?

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    'nabend Bongo,

    Die Sache mit PORT und PIN sind nur am Anfang etwas verwirrend. Wenn so ein Mikrocontroller "aufwacht", sind erstmal alle (!) I/O-Pins als Eingänge konfiguriert. Einfach deshalb, weil ein als Eingang geschalteter, d.h. hochohmiger Pin an umliegenden Bauteilen keinen Schaden anrichten kann. Eine spezielle Konfiguration als Eingang brauchst Du also schonmal nicht.

    Um einen Pin zu konfigurieren, kann man natürlich den befehl "Config" verwenden. Die Bascom-Hilfe (genial gut!!!) schreibt hierzu folgendes:

    Syntax
    CONFIG PORTx = state
    CONFIG PINx.y = state
    You can also set a single port pin with the CONFIG PIN = state, statement.

    Heißt also im Klartext, dass Du Config PINX.Y nehmen musst, um einen einzelnen Anschluss zu definieren. Mit Config PORTX erreichst Du alle Anschlüsse des Ports (z.B. B.0 bis B.7).

    Weil ich das etwas verwirrend finde, verwende ich persönlich die "DDR"-Register (Data Direction Register). Mit dem simplen Befehl DDRB.5 = 1 wird B.5 zum Ausgang gemacht, DDRD = &B00100000 macht das gleiche.

    Wenn der Port als Ausgang geschaltet ist, ist eigentlich nur das PORT-Register wichtig. Nach dem Schema PORTB.5 = 1 oder PORTB.5 = 0.

    Ist der Pin ein Eingang, sind 2 Register wichtig: Das PIN-Register gibt die Information wieder, die an dem Anschluss anliegt. Eingänge also immer mit PINX.Y abfragen (!!). Wird am Anfang oft falsch gemacht!!
    Mit dem PORT-Register schaltest Du den PullUp-Widerstand ein, wenn der Anschluss als Eingang konfiguriert ist. Also auch wichtig!!

    Also für Deine Anwendung ganz konkret:


    Code:
    PORTD.2 = 1  'PullUp für D.2, Eingang ist er schon
    DDRB.5 = 1   'B.5 als Ausgang
    
    Do
    If PIND.2 = 1 then
    PORTB.5 = 1
    else
    PORTB.5=0
    Loop
    
    End
    Etwas klarer jetzt?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests