• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

ATtiny 13: Ports einlesen

El-man

Geocacher
Hallo zusammen,
im zusemmenhang mit dem Reaktiven Licht habe ich angefangen mit dem µC zu spielen. Leider bekomme ich es nicht hi einen Port einzulesen.
Ungefähr so habe ich es versucht:


Code:
dim a as bit
do
portb.5 = input
portb.5 = 0
A = portb.5

if portb.5=1 then portb.4 = 1
else portb.4 = 0
end if

loop
End

An Portpin 4 habe ich eine LED angeschlossen die wenn ich die If Abfrage weglasse auch leuchtet. Auf Portpin 5 lege ich mit einer Drahtbrücke testweise +UB.
Müsste dann die Variable A nicht auf 1 eingelesen werden?

Wer weiß Rat?

Gruß Thomas
 

Starglider

Geoguru
El-man schrieb:
Zu den Ports beim Atmel gehören jeweils 3 Register:

DDRx um die Pins zu konfigurieren
PORTx zum ausgeben von Werten
PINx zum einlesen von Werten

In Assembler muss man z.B. zum einlesen von Port B den Wert von Register PINB lesen. Das wird in Basic wohl auch so sein.
 

_DiSa_

Geocacher
Also normalerweise deklariert man einen Pin nicht innerhalb einer do-loop Schleife. Das macht man zu Programmbeginn mit config.


$regfile = "m128def.dat"
$crystal = 16000000
Config Pinb.4 = Input
Config Pinb.5 = Output
Portb.4 = 1 ' interner Pullup aktiviert

Do

If Pinb.4 = 0 Then ' Taste gedrueckt (nach GND schaltend)
Portb.5 = 1 ' LED leuchtet
Else
Portb.5 = 0
End If

Loop

End

So koennte man das loesen. (Funktioniert. Gerade auf einem ATMega128 getestet. Pullup Widerstaende bei Eingaenge sind immer wichtig. In Ermangelung eines solchen kann man beim Atmel auch durch Portb.x=1 diese "aktivieren". Das ist dann so als haette man einen solchen zwischen dem Eingang und +5V geschaltet.

Wenn Du mehr mit Atmels rumexperimentierst empfehle ich Dir das Forum von http://www.roboternetz.de
Da gibts auch ne Abteilung Bascom.
 
OP
E

El-man

Geocacher
Ja vielen Dank,

habe jetzt meinen Fehler gefunden.
Ich habe die ganze Zeit den Port statt den Pin eingelesen und das ging natürlich nicht.
Ich glaube das ich mit Win AVR weiterprogramiere weil der Compiler bei einem Programmfehler einfach abbricht und keine Fehlermeldung ausspuckt.
So merkt man nur an der Compilerzeit das etwas nicht stimmt.
Schade, Basic kann ich besser als C.

Gruß EL-Man
 

Windi

Geoguru
El-man schrieb:
JIch glaube das ich mit Win AVR weiterprogramiere weil der Compiler bei einem Programmfehler einfach abbricht und keine Fehlermeldung ausspuckt.
Bascom öffnet doch während des Compilierens bei einer Fehlermeldung unten am Bildschirmrand eine Art Fenster und zeigt dort die Fehler an.
 
OP
E

El-man

Geocacher
Ich habe mir gerade die neuste Demo von Bascom heruntergeladen und sieh da: Er hat ein Statusfenster beim Compilieren und und schmeißt auch brauchbare Fehlermeldungen aus.

Gruß Thomas
 
OP
E

El-man

Geocacher
Beides funktioniert,
da man den Pullup Widerstand auch abschalten kann.

Gruß Thomas
 
Oben