www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2313 PortA2 und PORTB DEFECT


Autor: Gerd A. (inputsammler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich bekomme mein Projekt nicht zum Laufen in der Sim gehts eigentlich.
Mit dem STK500 ist PortA nicht PortA am STK sondern Bei PortE Pin 7 und 
8 wahrscheinlich weil das die Funktionen sind.. aber egal.

Nun einige Fragen
1. PA2 funktioniert nur wenn man bei fuses Reset deaktiviert. Aber 
sobald mann das macht kann man doch icht mehr über SPI flashen oder
2. Warum ist bei PortA0 die Spannungsflanken kleiner als bei den 
anderen?
3. Mit dem Code unten müssten doch alle Ports schalten. Port 
PB1,PB2,PB3PB5,PB6 und PB7 funktionieren nicht. kann das sein das mein 
2313 defect ist. oder habe ich was falsch gemacht.

Fuses
high 0xDB
low  0xC2


Nun habe ich mir einen 2313 Porttest Code
#include <avr/io.h>
#include <stdint.h>
#define nop() asm volatile ("nop")  //nop - do nothing...just for the wait function

void wait(unsigned int a)  //a perfect waste of time
{              
  unsigned int b,c;
  for(b=0;b!= a; b++)for(c=0;c!= 10;c++) nop(); //do alot of nothing
  return;
}

int main(void)
{
  
  wait(10000);  //wait a while for power up

  DDRA = 0b111,    //OUTA; // Alles auf ausgang stellen hat nur PA0-PA2
  DDRB = 0x11111111;  //OUTB; Alles auf ausgang stellen hat PB0-PB7
  DDRD = 0b1111111;  // OUTD; Alles auf ausgang stellen hat nur PD0-PD6

//PA0 PA1 ist funktion XT1 und XT2
//PA2 ist RESET aber nicht disable bei den FUSES deswegen O.F.?

  while(1)
    {
    wait(10000);
    PORTA |= (1<<PA0) | (1<<PA1) | (1<<PA2);
    PORTB |= (1<<PB0) | (1<<PB1) | (1<<PB2)| (1<<PB3) | (1<<PB4) | (1<<PB5) | (1<<PB6)| (1<<PB7);
    PORTD |= (1<<PD0) | (1<<PD1) | (1<<PD2)| (1<<PD3) | (1<<PD4) | (1<<PD5) | (1<<PD6);
    
    wait(10000);
    PORTA &= ~((1<<PA0) | (1<<PA1) | (1<<PA2));
    PORTB &= ~((1<<PB0) | (1<<PB1) | (1<<PB2)| (1<<PB3) | (1<<PB4) | (1<<PB5) | (1<<PB6)| (1<<PB7));
    PORTD &= ~((1<<PD0) | (1<<PD1) | (1<<PD2)| (1<<PD3) | (1<<PD4) | (1<<PD5) | (1<<PD6));

    }
}

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was schreibt denn Atmel zu der maximalen Stromaufnahme/Stromabgabe des 
ganzen Attiny2313 und was saugst du während wait(10000) bei HIGH an 16 
Pins raus? Wurde oder wird der AVR warm?

Wie stabil ist deine Spannungsversorgung? Schafft die den Strom bei Vcc 
oder geht die Spannung Vcc in die Knie? Unter den Wert, der als 
Brownout-Level im Attiny2313 eingestellt ist (4,3V), so dass der AVR in 
den RESET-Zustand geht?

> Nun einige Fragen
> 1. PA2 funktioniert nur wenn man bei fuses Reset deaktiviert. Aber
> sobald mann das macht kann man doch icht mehr über SPI flashen
>
> Fuses
> high 0xDB
> low  0xC2

Ja. RSTDISBL ist somit programmiert, d.h. Frage 1 mit der 
ISP-Programmierung hat sich erledigt. Du kommst nur noch per 
HV-Programming an diesen AVR ran.

> 2. Warum ist bei PortA0 die Spannungsflanken kleiner als bei den
> anderen?

Ich kann es mangels Schaltplan nur vermuten: Vielleicht ist irgendwas an 
PortA0 angeschlossen?

> 3. Mit dem Code unten müssten doch alle Ports schalten. Port
> PB1,PB2,PB3PB5,PB6 und PB7 funktionieren nicht. kann das sein das mein
> 2313 defect ist. oder habe ich was falsch gemacht.

Ich kann es mangels Schaltplan nur vermuten: Vielleicht ist irgendwas an 
PB1,PB2,PB3,PB5,PB6 und PB7 angeschlossen?

Autor: Gerd A. (inputsammler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Antwort.
Ich habe den 2313 aus der Schaltung genommen un auf meinen STK gesetzt 
und den TEST code von oben benutzt.
Am Ausgang sind die LED von STK jeweils nur max 8 Stück.. Dadurch darf 
er eigentlich nicht kaputt gehen.
Anschließend ohen LED nur mit OSZI gemessen.
Kein Rechtecksigmnal an PB1,PB2,PB3PB5,PB6 und PB7 und PA2

An PA0 ist Rechteckspannung nicht so hoch wie bei den funktionierenden.


Stefan B. wrote:
> Was schreibt denn Atmel zu der maximalen Stromaufnahme/Stromabgabe des
> ganzen Attiny2313 und was saugst du während wait(10000) bei HIGH an 16
> Pins raus? Wurde oder wird der AVR warm?
Nein eigentlich nicht in der Schaltung aund auf dem STK
In der Schaltung werden die LED mir Vorwiderstand betriebnen.
Relais werden über einen uln2803AG angesteuert


> Wie stabil ist deine Spannungsversorgung? Schafft die den Strom bei Vcc
> oder geht die Spannung Vcc in die Knie? Unter den Wert, der als
> Brownout-Level im Attiny2313 eingestellt ist (4,3V), so dass der AVR in
> den RESET-Zustand geht?

Spanung ist 5V und bricht nicht ein (nachgemessen in der Schaltung)
Und auf den STK500 4,5V
Brownout-Level habe ich auf 2,7

> Ja. RSTDISBL ist somit programmiert, d.h. Frage 1 mit der
> ISP-Programmierung hat sich erledigt. Du kommst nur noch per
> HV-Programming an diesen AVR ran.
>

So sehen bei mir die FUSES aus. Also kann i9ch den PORTA2 nie VERWENDEN 
wenn ich SPI machen will.
Für was gehört eigentlich selfprgen ?

>> 2. Warum ist bei PortA0 die Spannungsflanken kleiner als bei den
>> anderen?
>
> Ich kann es mangels Schaltplan nur vermuten: Vielleicht ist irgendwas an
> PortA0 angeschlossen?
>
Leider nur eine LED oder OSZI

>> 3. Mit dem Code unten müssten doch alle Ports schalten. Port
>> PB1,PB2,PB3PB5,PB6 und PB7 funktionieren nicht. kann das sein das mein
>> 2313 defect ist. oder habe ich was falsch gemacht.
>
> Ich kann es mangels Schaltplan nur vermuten: Vielleicht ist irgendwas an
> PB1,PB2,PB3,PB5,PB6 und PB7 angeschlossen?
An der Orginal Schaltung ist an 
/*
Port  pin  E/A  Funktion

PA0   5  A  LED rot
PA1   4  A  LED gruen
PA2   1  A  LED blau 

PB0  12  E  0 Taster
PB1  13  E  1 Taster
PB2  14  E  2
PB3  15  E  3
PB4  16  E  4
PB5  17  E  5
PB6  18  E  6
PB7  19  E  7

PD0   2  E  8
PD1   3  E  9
PD2   6  E  *
PD3   7  E  #
PD4   8  A  Garage Gaby
PD5   9  A  Garage Gerd
PD6  11  A  Alarm

*/

Autor: Pat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

Ich kenne mich jetzt mit C nicht sonderlich aus aber muss bei dem "DDRB 
= 0x11111111" denn nicht eigendlich ein "0b11111111", bei dir ists nen 
0x...

Gruß
Pat

Autor: Marvin M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Autsch. Das hab ich auch nicht gesehen... ;-)

@Gerd: Hast Du schonmal darüber nachgedacht, die Tastatur per 
Multiplexing abzufragen? Dann hättest Du etwas mehr Reserve... Den Reset 
sollte man sich nur dann wegdefinieren, wenn es absolut nicht mehr 
anders geht.
Andere Alternativen: Port-Erweiterungen über SPI oder I²C

Autor: Gerd A. (inputsammler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also Vielen Dank für die Infos.

Der Code war nur zum Testen der Ports geschrieben. Nicht für das Projekt
Ja das heißt 0b11111111.

Ja das ist nicht gut das ich defekt mit c geschrieben habe aber ich war 
so vertieft in "C" das ich es sogar schrieb.

Bin gerade dabei die Tastertur mit AD einzulesen.
http://www.elektronik-projekt.de/thread.php?threadid=4030

Bin nicht 100% fit in C. Wie soll ich das angehen das Multiplexen.
Über einen Externen Baustein ?

Gruß Gerd

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerd A. wrote:

> Bin nicht 100% fit in C. Wie soll ich das angehen das Multiplexen.
> Über einen Externen Baustein ?

Als Einstieg so wie im AVR Tutorial in den Abschnitten zum Multplexen 
und zu den Schieberegistern, vielleicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.