Forum: Mikrocontroller und Digitale Elektronik AVR Atmega 16 Inputs reagieren nicht


von Tobias S. (tryan)


Lesenswert?

Hi,
ich arbeite mit Pollin-board + Addon-board und die Programme schreibe 
ich mit Bascom und übertrage die .hex datei mit PonyProg.
Die Programme kommen auf einen ATmega16

Jetzt zum problem: Ich schaffe es einfach nicht die Inputs zu 
Aktivieren!
Wenn ich schreibe;

&regfile= "m16def.dat"
---------------------
Config PortA = Output
Config PortB = Output
Config PortC = Output
Config PortD = Output
---------------------
Do
 PortA = &B11111111
 PortB = &B11111111
 PortC = &B11111111
 PortD = &B11111111
Loop
end


Leuchten alle Leds  wie es sein soll.
Ich hab sogar ein ADC von PortA zulaufen und zum anzeigen gebracht.

Aber wenn ich z.b. schreibe

&regfile= "m16def.dat"
---------------------
Config PortA = Input
Config PortB = Output
Config PortC = Output
Config PortD = Output
---------------------

Do
 If PortA.0 = 1 Then PortD.0 = 1
loop
end

Der yC reagiert einfach nicht auf Input Signale.
Und hab einfach keine Idee mehr. Ist der Atmega16 vielleicht defekt?
Aber dann würde das ADC doch nicht laufen oder?

Vielen Dank Tryan

von Johannes M. (johnny-m)


Lesenswert?

Wenn man das PORTx-Register ausliest, dann liest man immer genau das, 
was man vorher hineingeschrieben hat. Du solltest Dich mal näher mit dem 
Register PINx (wobei x für den Port steht) befassen.

von Teplotaxl X. (t3plot4x1)


Lesenswert?

Der ADC hängt vor den Porttreibern (siehe Datenblatt). Die 
Digitaltreiber können gekillt sein, aber ADC wird immer noch 
Funktionieren.

PS: Bist du dir sicher, dass das Prorgramm funktioniert? (Lass es doch 
mal im AVRStudio Simulator laufen und setze die Eingangsregister)

von Tobias S. (tryan)


Lesenswert?

Also im Simulator funktioniert das Programm:

Config Portc = Input
Config Portd = Output

'---------------------------------
'Hauptprogramm:
'---------------------------------
   Do

   If Portc.0 = 1 Then Set Portd.0
   If Portc.1 = 1 Then Reset Portd.0

    Loop
End

Und wenn ich die Digitaltreiber gekillt habe,könnte ich sie auch nicht 
mehr als Outputs benutzten oder, aber das geht ja....

von Elbegucker (Gast)


Lesenswert?

Ich hab zwar nie in Bascom programmiert, aber

Ausgänge werden mit PORTx abgefragt
Eingänge mit Pinx

von Tobias S. (tryan)


Lesenswert?

Das kann ich gerne Testen, aber ich glaube es ist egal ob man port oder 
pin schreibt.

lg

von Johannes M. (johnny-m)


Lesenswert?

Tobias S. wrote:
> Das kann ich gerne Testen, aber ich glaube es ist egal ob man port oder
> pin schreibt.
Dann schmeiß BASCOM gleich weg und besorg Dir was Vernünftiges. 
Allerdings halte ich es für eher unwahrscheinlich, dass BASCOM da intern 
überhaupt keinen Unterschied macht.

von Markus F. (civicbcc)


Lesenswert?

es ist definitv nicht egal ob du port oder pin schreibst.

der kollege hier hatte gestern erst das selbe problem:

Beitrag "dual led mit bascom"

von Paul Baumann (Gast)


Lesenswert?

Der Simulator hält Dich in diesem Fall zum Narren.

So zum Bleistift:

If PIND.5=0 then
PORTD.6=1

MfG Paul

von Tobias S. (tryan)


Lesenswert?

Okey, hier habt recht man muss zwischen PIN und PORT unterscheiden. 
Vielen dank für eure Hilfe!!!!

Lg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.