www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega32 PortB freigeben, freischalten


Autor: Daniel H. (doomstar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Sitze schon wieder nee ganze weile an neem Problem mit meinem Atmega32.

Programmiere gerade eine LCD Ausgabe mit über PortB mit Peters Lib. Hab 
ich vorher auch schon alles mit neem Atmega8 gemacht und hat alles super 
geklappt. Leider geht das mit dem Atmega32 nicht so toll irgendwie. 
Programmiere mit GCC und aufspielen mit STK500 und WINAVR. Hab beim 
Atmega8 PortD benutzt und wollte nun mal fragen ob da irgend eine 
Doppelbelegung von PortB automatisch an ist? Auserdem ist es kommisch 
sobald ich einen PORT per DDRX als Ausgangdeklariere leuchten bei mir 
aufm STK alle LEDs des Ports wenn ich sie anschließe ohne den Pullup 
aktiviert zu haben.

JTAG hab ich auch aus gemacht.

Und die Zusatzfunktionen wie sie im Datenblatt beschrieben sind nutze 
ich auch alle nicht von PortB.

Jemand nee Idee?

Gruß und gute Nacht noch
Daniel.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<Auserdem ist es kommisch
<sobald ich einen PORT per DDRX als Ausgangdeklariere leuchten bei mir
<aufm STK alle LEDs des Ports wenn ich sie anschließe ohne den Pullup
<aktiviert zu haben.

Wunderbar, d.h. es funktioniert :-)
Die Leds sind low aktiv, sie gehn an wenn du deinen Port als Ausgang 
deklarierst mit Low Pegel.

Autor: Guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du das JTAG-Bit rausgenommen? Ansonsten wird das nichts mit nem LCD 
am Port B.

Autor: Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielleicht liegts ja doch am Code...

Autor: Brewster (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte das gleiche Problem auf nem Mega32. Die JTAGEN-Fuse invertieren 
(standard ist: an)-

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Brewster & Guest:
Das JTAG liegt beim Mega32 aber an Port C und nicht an Port B...

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PB6 und PB7 sind auch die Anschlüsse für nen externen Quarz, also die 
Fuses checken ! Wenn er mit internem RC Oszillator läuft, dann gehts.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> PB6 und PB7 sind auch die Anschlüsse für nen externen Quarz,
Nö, das sind PC6 und PC7. Warum schaut eigentlich keiner mal ins 
Datenblatt, bevor er hier irgendwas schreibt?

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BTW: Der "externe Quarz" an PC6 und PC7 ist nur für den asynchronen 
Betrieb von Timer 2. Für den Hauptoszillator hat der Mega32 separate 
Anschlüsse...

Autor: Daniel H. (doomstar)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Sorry hatte die letzten 2 Tage kein I-Net zum antworten (Telekom).

Also hab mal alles getestet aber leider ohne erfolg.
Als Anhang hab ich mal meine geänderte lcd.h beigefügt.

Hab auch mal auf der Platine alles nochmal durchgemessen aber stimmt 
auch alles. Hab immer die oberste Reihe voller Blocke also keine 
Initialisierung.

Hier auch mal der Code ist auch übersichtlich:

// RS = PB0
// R/W = PB1
// E = PB2
// D4 = PB3
// D5 = PB4
// D6 = PB5
// D7 = PB6

#include <stdlib.h>
#include <avr/io.h>
#include <lcd.h>
#include <lcd.c>

int main(void)
{
  DDRB = 0xFF;

  lcd_init(LCD_DISP_ON);
  lcd_clrscr();
  lcd_gotoxy(0,0);
  lcd_puts("Hallo");

  for(;;)
  {
  }
}


Habs auch schon ohne DDRB versucht aber leider auch ohne erfolg.

Wünsch euch noch nee gute nacht.

Gruß
Daniel

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den DDRB kannst du in Ruhe lassen.

Alle Einstellungen werden in lcd.h gemacht.
Wenn dort alles richtig ist, die Hardware auch
entsprechend der in lcd.h gemachten Einstellungen
angeschlossen ist, dann gibt es keinen Grund mehr
warum das LCD nicht funktionieren sollte.

PS: lcd.c solltest du nicht includieren.
lcd.c wird zum Projekt hinzugefügt, seperat
compiliert und zum kompletten Programm dazugelinkt.
Beim AVR-STudio machst du das indem du bei den
Source Files auf die rechte Maustaste drückst, "Add existing
source Files" auswählst und danach dem AVR-STudio die
lcd.c zeigst. Dadurch weiss AVR-Studio, dass diese *.c
auch noch zum Projekt gehört und kümmert sich entsprechend
darum.

Autor: Daniel H. (doomstar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Buchegger

Programmiert wird mit Winavr. Übertragen wird es nur mit avr Studio. 
Deswegen hab ich es per include eingebunden ansonsten ist mir keine 
andere möglichkeit bekannt.

Hmm kann das was mit der Taktfrequenz zu tuen haben? Dachte gerade daran 
das mein Mega32 im moment mit internem Oszi 1MHz läuft. aber er wartet 
doch eh auf die busy flag oder?

MFG
Daniel

Autor: Daniel H. (doomstar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So hab mal wieder ein bischen mehr rumspielt und denke es liegt am ISP 
der ja auch auf dem PortB hängt. Wenn ich den LCD an andere Ports hänge 
klappt es sofort. Meine nexte frage wäre dann kann ich den ISP irgendwie 
freigeben? Ich weis das ich den zum Programmieren brauch. Vielleicht 
gibt es da noch nee andere lösung. Hab das STK500 Board von Atmel.

Wäre echt schade wenn nicht hab extra ne Platine geätzt und leider ist 
der LCD auf PortB.

So ich guck dann mal weiter nach neer lösung.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> So hab mal wieder ein bischen mehr rumspielt und denke es liegt am
> ISP der ja auch auf dem PortB hängt.

Zieh doch einfach mal den Programmer während deiner Tests
ab. Sobald ausser dem LCD nichts mahr am µC PORTB hängt,
gibt es keinen grund mehr warum das nicht gehen sollte.

(Was mich eher verwundert: dass du trotz angehängtem LCD
noch programmieren kannst)

> Programmiert wird mit Winavr. Übertragen wird es nur mit avr
> Studio. Deswegen hab ich es per include eingebunden ansonsten
> ist mir keine andere möglichkeit bekannt.

Das macht es auch nicht richtiger.



Autor: Daniel H. (doomstar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also Proggen geht nur wenn ich den lcd Abgezogen hab beim PortB.  Wenn 
ich ich dann wieder dran Stecke klappt es nach mehrmaligem reseten mehr 
oder weniger (mal initaliesiert er mal den haben text mal fast alles) je 
nachdem. Dachte immer wenn ich den Mikro vom STK500 runter nehme auf 
meine Platine dann ist das kein Problem mit dem SPI pins.

Autor: Daniel H. (doomstar)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das darf nicht sein ich habs gefunden. Kalte Lötstelle.

Alles klappt wie es soll.

Ich möchte mich trotzdem noch mal bei Herr Buchegger und allen anderen 
für die nette Hilfe bedanken.

Tut mir schon ein wenig leid die Zeit von euch so verplemmpert zu haben 
aber ich habs 3 mal gemessen und 3 mal hatte ich durchgang. Hoffe ihr 
nehmt es mir nicht zu übel.

Gruß und nochmals Danke
Daniel

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
;-)

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.