Forum: Mikrocontroller und Digitale Elektronik Atmega32 Problem


von Mark (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich bin Neuling im Bereich AVR Programmierung und habe folgendes 
Problem.
Wie in dem Schaltplan zu sehen ist, habe ich eine ATMEGA32 beschaltet.

Mein Bascom Source :

$regfile = "m32def.dat"
$crystal = 4000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40

Mcusr = &H80   'disable JTAG
Mcusr = &H80   'disable JTAG

Config Porta = Input        'Configure Port A as Input
Config Portb = Output       'Configure Port B as Output

Dim Status As Bit

Do

   If Pina.0 = 1 Then
      Status = 1
   End If

   If Pina.1 = 1 Then
      Status = 0
   End If

   If Status = 1 Then
      Portb.0 = 1
   End If

   If Status = 0 Then
      Portb.0 = 0
   End If

Loop

End


Mein Problem ist nun, dass sich die LED nicht ein und Ausschalten lässt.
Ein festhalten der Taster bringt auch nix.

Habe ich nun nen Denkfehler, ist meine Schaltung Falsch oder liegts am 
Code ?

Grüße

Mark

von Johannes M. (johnny-m)


Lesenswert?

1.: Die Taster sind Low-aktiv, Taster gedrückt -> "0" am Portpin
2.: VCC hat an AREF nichts verloren (was aber auf das aktuelle Problem 
keinen Einfluss hat)...
3.: externe Pull-Up-Widerstände sind bei AVRs witzlos. Der Mega32 hat 
interne Pull-Ups, die man nur aktivieren muss.

von Mark (Gast)


Lesenswert?

Wie aktiviere ich in Bascom die internen Pullups ?

in C wäre es ja
1
DDRA = 0x00       // Configure PortA as Input
2
PORTA = 0xFF      // enable PortA internal Pullups

von Johannes M. (johnny-m)


Lesenswert?

Ganz blöde Frage: Wenn Du C kannst, warum wurschtelst Du dann mit 
basskomm rum?

Abgesehen davon kann ich Dir mit BASCOM leider nicht viel weiterhelfen. 
Es müsste aber auch in BASCOM die Möglichkeit geben, entweder irgendwo 
ein "Schlüsselwort" wie "Pullup" anzubringen oder auf die Portregister 
zuzugreifen, oder sehe ich das falsch?

von Mark (Gast)


Lesenswert?

Naja ich kann halt besser Basic Programmieren wie C.

von Joerg W. (joergwolfram)


Lesenswert?

versuchs mal mit

   If Pina.0 = 0 Then
      Status = 1
   End If

   If Pina.1 = 0 Then
      Status = 0
   End If

da Deine Taster LOW-aktiv sind.

Gruß Jörg

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.