- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 12

Thema: Bascom Programm läuft nicht richtig

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    dnggn
    Gast
    danke schon mal für die antworten, aber ganz verstehe ich das nicht ... also nur pinb.0, pinb.1 usw. hat nicht funktioniert, selber fehler. muss ich jetzt beim input immer eine zahl und einen buchstaben eingeben und beim output nur buchstabe? tut mir leid, ich stehe total auf dem schlauch danke für die hilfe

    EDIT: achja und reset pin hab ich jetzt nicht besonders drauf geachtet, heißt das ich kann diesen port gar nicht als solchen benutzen?

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    35
    Beiträge
    3.501
    Blog-Einträge
    9
    Was genau meinst du? Ich verstehe die Frage leider nicht so ganz.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    muss ich jetzt beim input immer eine zahl und einen buchstaben eingeben und beim output nur buchstabe? tut mir leid, ich stehe total auf dem schlauch
    Das mit Config Port und Config Pin ist in der Tat verwirrend.
    Eindeutig geht´s mit dem DDR-Register (DDR = Data Direction Register):

    DDRX.Y = 0 bedeutet: Anschluss X.Y ist ein Eingang
    DDRX.Y = 1 bedeutet: Anschluss X.Y ist ein Ausgang

    Da bei Power-On-Reset alle DDDR-Register den Wert 0 enthalten, sind alle I/O-Anschlüsse zunächst mal Eingänge. Für diese Aufgabe muss man sie nicht konfigurieren, das sind sie ganz von alleine.

    Soll ein Anschluss ein Ausgang werden, muss das entsprechende Bit im DDR-Register auf 1 gesetzt werden. Das kann entweder einzeln geschehen, also z.B.

    DDRB.2 = 1
    DDRB.3 = 1
    DDRB.4 = 1
    DDRB.5 = 1

    oder Du setzt gleich alle 8 Bits des Registers:

    DDRB = &B00111100 ("&B" heißt, dass die folgende Zahl binär ausgeschrieben wird)
    Mit diesem Befehl sind die Anschlüsse B5,B4,B3 und B2 Ausgänge, der Rest sind Eingänge.

    Und wenn Du den PullUp-Widerstand eines Eingangs aktivieren willst, musst Du eine 1 in das entsprechende PORT-Register schreiben. Also für Deine beiden Eingänge also z.B.

    PORTB.0 = 1
    PORTB.1 = 1

    In anderen Worten:
    1. Ob Ein- oder Ausgang, legt das DDR-Register fest.
    2. Ist der Anschluss ein Ausgang, legt das PORT-Register seinen Pegel fest.
    3. Ist er ein Eingang legt das PORT-Register fest, ob der PullUp-Widerstand aktiviert wird.

    Jetzt etwas klarer?

  4. #4
    Allgemein ist das Programm richtig geschrieben.
    Wie Sauerbruch schon schreibt das aktivieren der internen Pullups (ist unten mal bei dein Programm eingebunden)
    Allgemein versteh ich auch nicht warum du ein Attiny verwendest und den Reset aus programmierst.
    Was für ein Programmiergerät verwendest du?
    Überträgst du den Hexcode mit Basom oder mit ein anderes Programm.
    Ich glaube eher das in der Richtung was nicht richtig eingestellt ist und dadurch keine (fehlerhafte) Übertragung erfolgt.

    mfg

    Rick


    $regfile = "attiny85.dat"
    $crystal = 1000000

    Config Pinb.0 = Input
    Portb.0 = 1
    Config Pinb.1 = Input
    Portb.1 = 1
    Config Portb.2 = Output
    Config Portb.3 = Output
    Config Portb.4 = Output
    Config Portb.5 = Output


    Do

    If Pinb.0 = 1 And Pinb.1 = 1 Then
    Portb.2 = 1
    Portb.4 = 0
    Portb.3 = 1
    Portb.5 = 0
    Else
    End If

    If Pinb.0 = 0 And Pinb.1 = 0 Then
    Portb.2 = 0
    Portb.4 = 1
    Portb.3 = 0
    Portb.5 = 1
    Else
    End If

    If Pinb.0 = 0 And Pinb.1 = 1 Then
    Portb.2 = 1
    Portb.4 = 0
    Portb.3 = 0
    Portb.5 = 1
    Else
    End If

    If Pinb.0 = 1 And Pinb.1 = 0 Then
    Portb.2 = 0
    Portb.4 = 1
    Portb.3 = 1
    Portb.5 = 0
    Else
    End If

    Loop

    End

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Zitat Zitat von dnggn Beitrag anzeigen
    EDIT: achja und reset pin hab ich jetzt nicht besonders drauf geachtet, heißt das ich kann diesen port gar nicht als solchen benutzen?
    Ja, Du kannst ihn zunächst mal nicht als "normalen" I/O Portpin benutzen.

    Es gibt folgende Beschreibung zum RESET Pin im Datenblatt:

    Zitat Zitat von ATtiny85 Datenblatt (doc2568)
    RESET: External Reset input is active low and enabled by unprogramming (“1”) the RSTDISBL Fuse. Pullup is activated and output driver and digital input are deactivated when the pin is used as the RESET pin.
    Wenn Du seit Kauf an den Fuses nichts verändert hast ist PB5 also RESET. Die output driver sind deaktiviert. Bedeutet,
    PORTB.5 = 0 oder 1 hat zumindest nach außen keine Wirkung.

    Nun kommt es auf die Deine Beschaltung des PB5 an. Sieht so aus, als wenn dort über die Motorbeschaltung ein GND auf RESET (PB5) kommen könnte und dann der µC resettet.

    Wenn Du also nicht ganz genau weißt, was sich da tut, laß den PB5 frei bzw. verwende ihn nur als RESET

    Schaltplan Deines Aufbaus würde weiterhelfen.

    Gruß
    Searcher
    Geändert von Searcher (22.09.2011 um 10:42 Uhr)
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  6. #6
    dnggn
    Gast
    ich hab mal einen schaltplan mit pc entworfen, ich bin mir jetzt ziemlich sicher dass es am reset pin liegt, denn die programmänderungen haben alle nichts bewirkt ... soll ich einfach noch einen zweiten attiny anschließen oder lieber einen größeren uC bestellen?

    zum schaltplan, 1Y bis 4Y werden mit den beiden motoren verbunden.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken tCad2.jpg  

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.715
    Blog-Einträge
    133
    Hallo dnggn,

    um bei Deiner Schaltung den Reset frei zu bekommen, brauchst Du mehr Pins an dem µC. zB ginge ein ATtiny44. Ein zweiter Tiny macht die Sache zu kompliziert, da die beiden ja miteinander kommunizieren müßten?

    Leider kann ich Dir zu sonstigen Schaltung wenig sagen, da ich selbst die verwendeten Komponenten noch nicht genutzt habe.

    Folgende Dinge, auf die mir aufgefallen sind:
    - Reset ist klar. Den kannst Du so nicht als I/O benutzen.
    - Die Batteriespannung ist mit 6V vor dem Spannungsregler sehr gering. Was ist das für einer? Möglicherweise gibt der Dir nicht genug Spannung am Ausgang. Vielleicht bricht Dir die Spannung ein, wenn die Motoren Strom bekommen? Wieviel Strom brauchen die Motoren?
    - Kondensatoren am Spannungsregler und 100nF am µC sind nicht vorhanden.
    - Die LEDs haben keine Vorwiderstände.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Ähnliche Themen

  1. AVR-Schaltung läuft nicht richtig
    Von Amri im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 08.11.2008, 17:31
  2. Antworten: 4
    Letzter Beitrag: 21.07.2008, 15:48
  3. Timer1 Läuft nicht richtig
    Von DeltaEx im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 23.01.2006, 16:19
  4. Antworten: 3
    Letzter Beitrag: 15.08.2005, 16:41
  5. Programm Läuft nicht richtig,hilfen Sie mir mal
    Von janboejle im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 08.06.2005, 20:49

Berechtigungen

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

12V Akku bauen