MEGA128 Pin PB7 lässt sich nicht als Ausgang definieren

Gast #2349387
Lesenswert?
• ▲
▼
Hallo Zusammen,

ich habe folgende Hardware zwei Boards jeweils mit einem Mega128 zur 
Programmierung verwenden ich AVR Studio mit GCC.
Programmiersprache C.

Ich habe folgendes programmiert
1
main {
2
   unsigned int r;
3
   DDRB |= (1<<DDB0);
4
   DDRB |= (1<<DDB1);
5
   DDRB |= (1<<DDB2);
6
   DDRB |= (1<<DDB3);
7
   DDRB |= (1<<DDB4);
8
   DDRB |= (1<<DDB5);
9
   DDRB |= (1<<DDB6);
10
   DDRB |= (1<<DDB7);
11
   for(;;) {
12
       if(r==30000){
13
          PortB ^= (P1<<PB0);
14
          PortB ^= (P1<<PB1);
15
          PortB ^= (P1<<PB2);
16
          PortB ^= (P1<<PB3);
17
          PortB ^= (P1<<PB4);
18
          PortB ^= (P1<<PB5);
19
          PortB ^= (P1<<PB6);
20
          PortB ^= (P1<<PB7);
21
       }
22
       r++;
23
   }
24
}

Beim ersten Board habe ich nur eine ISP Schnittstelle daher kann ich nur 
den Mega programmieren, aber das Programm läuft.

Spiele ich nun das gleiche Programm auf mein zweites Board läuft das 
Programm nicht los.
Habe nun dank der vorgesehenen JTAG Schnittstelle den JTAGICE2 mal 
verwendet und das programm im Debug Mode laufen lassen.

Hierbei muss ich feststellen das das Programm läuft bis zur Stelle
 "DDRB |= (1<<DDB7);" dann gibt es zwei Möglichkeiten.

1 Möglichkeit:
Der Ablauf bricht ab und Beginnt wieder am Anfang zu 99% der Fall.

2 Möglichkeit:
Die Bits 0 bis 6 werden gesetzt wie programmiert beim Bit7 springt das 
Programm weiter jedoch werden alle Bits zurückgesetzt  oder gesetzt 
fünfzig fünfzig.

Dann läuft aber auch das Programm.

An was kann das liegen and Pin ist ein Transistor angeschlossen der ein 
Relai schaltet.
Beim ersten Board habe ich einen Treiberbaustein der eine LED ansteuert 
da ich dieses als Testboard verwende.

Fuse Bits sind auf beiden Boards gleich.

Hat jemand eine Idee

Danke

TOM
Gast #2349529
Lesenswert?
• ▲
▼
Habe jetzt mal den Transistor ausgelötet der das Relai und nun scheind 
es zu funktionieren.

Vielleicht sieht ja jemand ob etwas falsch ist an der Ansteuerung des 
Transistors.

Hat jedoch bei der ersten Version der Leiterplatte immer funktioniert.

Danke schon mal für die Vorschläge bin schon gespannt.

Thomas
Angehängte Dateien:
Gast #2349617
Lesenswert?
• ▲
▼
@all,

Ich habe den Transistor nur ausgebaut um diesen prüfen zu können, 
Funktion OK und auch NPN sollte also alles passen.

Freilaufdiode ist auch richtig gepolt.

Ich habe nun das auch mal ohne Transistor laufen lassen jedoch läuift 
die Initialisierung durch doch bricht das Programm immer ab und startet 
neu also auch das hat nicht den Erfolg gebracht.
Ich habe nun nur eines bemerkt, den uC gelöscht und die Spannung an den 
Portpins gemessen und da hat PORTB auf allen Pins ca.4.5Volt.
PORTF z.B hat 0Volt.
Auch mein Testboard hat nach dem Löschen beim PORTB 0 Volt.

Was ist eigentlich normal wenn kein Externer Pullup am Pin angeschlossen 
ist nach einem Reset und einem gelöschten uC.

0Volt oder 5 Volt?

Tom

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.