Forum: Mikrocontroller und Digitale Elektronik Atmega32 PortB freigeben, freischalten


von Daniel H. (doomstar)


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.

von Gast (Gast)


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.

von Guest (Gast)


Lesenswert?

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

von Werner (Gast)


Lesenswert?

vielleicht liegts ja doch am Code...

von Brewster (Gast)


Lesenswert?

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

von johnny.m (Gast)


Lesenswert?

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

von Michael K. (mmike)


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.

von johnny.m (Gast)


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?

von johnny.m (Gast)


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...

von Daniel H. (doomstar)


Angehängte Dateien:

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

von Karl H. (kbuchegg)


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.

von Daniel H. (doomstar)


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

von Daniel H. (doomstar)


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.

von Karl H. (kbuchegg)


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.



von Daniel H. (doomstar)


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.

von Daniel H. (doomstar)


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

von winne (Gast)


Lesenswert?

;-)

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.