Atmega32 PortB freigeben, freischalten

OP #524303
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.
Gast #524313
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.
OP #526114
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
Angehängte Dateien:
#526165
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.
OP #526275
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
OP #526569
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.
#526588
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.


OP #526846
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.
OP #527136
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren