Forum: Mikrocontroller und Digitale Elektronik PortC Pin2 Funktioniert nicht


von Lukas (Gast)


Lesenswert?

Hallo

Ich benutz als Controller den ATMega 16-16PU. Der ganze Port A ist als 
Eingang konfiguriert und funktioniert auch einwandfrei. Die Pins von 
PortC sind auch Eingänge allerdings funktionieren nur die Pin 0 und 1. 
Bei Pin2 geschieht nichts. Ich brauche von PortC nur die ersten 3 Pins. 
Ich hab noch anstatt Pin2 Pin3 versucht aber der hat auch nicht 
funktioniert. Muss man bei den Pins irgendetwas aktivieren oder 
Deaktivieren damit ich sie als Eingänge verwenden kann?

von ich (Gast)


Lesenswert?

Schaltplan / Programm?

von ich (Gast)


Lesenswert?

jtag vielleicht?

von Lukas (Gast)


Lesenswert?

hab leider kein jtag aber das Programm kann ich dir reinstellen

von hp-freund (Gast)


Lesenswert?

Aus dem Datenblatt:

• TMS – Port C, Bit 3
TMS, JTAG Test Mode Select: This pin is used for navigating through the 
TAP-controller state
machine. When the JTAG interface is enabled, this pin can not be used as 
an I/O pin.

• TCK – Port C, Bit 2
TCK, JTAG Test Clock: JTAG operation is synchronous to TCK. When the 
JTAG interface is
enabled, this pin can not be used as an I/O pin.

Musst also JTAG ausschalten...

von Lukas (Gast)


Lesenswert?

Ich lese den Wert den an PortA und die ersten 3 von PortC ein und 
erzeuge damit ein PWM Signal. Sobald der 3 te Pin von PortC logisch 1 
ist sollte der PWM Ausgang abschalten und der Controller ist in einer 
endlosschleife gefangen. (ganz unten)



;  Programm:PWM Signal mit 10Bit Eingang


.nolist
.include "m16def.inc"        ;Include Datei
.list

.org 0x000
         rjmp init                ; Falls Reset
.org 0x008
     rjmp T2_OVF  ;Timer2 Over Flow
.org 0x00C
    rjmp T1_CMPA  ;Timer 1 CMP A
.org 0x00E
    rjmp T1_CMPB  ;Timer 1 CMPB

                                          ;Register Definition
.def temp=r16

.def spswertl=r17

.def spswerth=r18

.def startwertl=r19

.def startwerth=r20

.def ausgang = r24



init:

  ldi   temp, HIGH(RAMEND)
  out   SPH, temp      ; High s-ram Stapel (16bit)

  ldi   temp, LOW(RAMEND)    ; LOW s-ram Stapel(8bit)
  out   SPL,  temp

  ldi  ausgang,0
  ldi  temp,0
  ldi  spswertl,0
  ldi  spswerth,0
  ldi  startwertl,0
  ldi  startwerth,0           ;Alle register auf 0


  ldi   temp,255
  out   ddrb,temp      ;PortB= ausgänge
  ldi  temp,0
  out  ddra,temp
  ldi  temp,0
  out  ddrc,temp

  ldi   temp,4
  ldi  startwertl,0

  out   OCR1BH,temp    ;Pulslänge
  out   OCR1BL,startwertl

  ldi  spswertl,50
  ldi  spswerth,0

  out   OCR1AL,spswertl           ;Pulsbreite
  out   OCR1AH,spswerth

  ldi   temp,0b01011000    ;Innterrupt CMPB CMPA Timer1 erlauben und 
timer 2 overflow
  out   timsk,temp


  ldi  temp,0b00000010    ;Setze Prescaller 1 Timer1
  out   TCCR1B,temp           ;Starte Timer1

  ldi  temp,0b00000101           ;Setze Prescaler 1024 Timer2
  out  tccr2,temp
  sei
main:

  rjmp   main             ;Leere schleife

T1_CMPA:          ;Schalte PWM aus

  andi  ausgang,0b11111110
  out   portb,ausgang

  reti

T1_CMPB:                ;Schalte PWM ein

   ori   ausgang,0b00000001          ;setze PWM ausgang auf 1
  out   portb,ausgang

  ldi   temp,0

  out   TCNT1H,temp          ;Setze Timer1 auf 0
  out   TCNT1L,temp

  reti

T2_OVF:

  in   spswertl,pina
  in  spswerth,pinc
  andi  spswerth,0b00000111

  out   OCR1AH,spswerth
  out   OCR1AL,spswertl

  in  temp,pinc
  andi  temp,0b00000100
  cpi  temp,0b00000100
  breq  fehler

  reti

fehler:    ;Prüfe ob PinC2 überhaupt als eingang angenommen wird
  ldi  temp,0
  out  portb,temp
  rjmp  fehler

von Lukas (Gast)


Lesenswert?

Oh okey danke. Und wo kann ich das ausschalten? Bei den Fuses ? Ich 
schau gleich mal nach villeicht finde ich es auch selbst raus. Aber 
schonmal viellen Dank

von Lukas (Gast)


Lesenswert?

Oke bei den Fuses hats ein hacken bei Jtagen. Dann kann ich den einfach 
entfernen und immer noch Programme rein laden oder ? Hab immer ein 
bisschen respekt vor den fuses.^^

von hp-freund (Gast)


Lesenswert?

Wenn Du ISP und nicht JTAG benutzt, ist das in Ordnung.

von Lukas (Gast)


Lesenswert?

Juhu Funktioniert alles! Danke!

von raketenfred (Gast)


Lesenswert?

Besorg dir nen HV-Programmer, und du brauchst dir keine Sorgen mehr bei 
den Fuse machen ;-)

naja von der Reset-Fuse würde ich pers. die Finger lassen, aber sonst 
so?- Alles eigentlich mit einfachen Mittel rettbar

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.