www.mikrocontroller.net

Forum: PC-Programmierung itoa programmierung


Autor: Hüsameddin N. (hsameddin_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

Ich habe ein programm geschrieben unter windows 7, beim terminate werden 
auch die richtigen ad wandlerwerte angezeigt, jedoch wenn ich das selbe 
programm auf einem windows xp rechner laufen lasse bekomme ich nur 
irgendwelche askii zeichen...

kann mir da bitte jemand helfen...

danke

: Verschoben durch Moderator
Autor: Der Magier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moment noch, ich hole gerade die Glaskugel, um deine Programmiersprache 
herauszufinden, danach schau ich mir deinen Quellcode an. Das ganze 
dauert halt ein bißchen.... :-)

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jepp Dein Problem ist in Zeile 42

Autor: rogie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Datei Problem.c

Autor: Der Magier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, jetzt seh ich´s auch, flalscher Befehl in Zeile 42!

Autor: Michael S. (Firma: electro-tester) (michael0307)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja .. ja  definitiv Zeile 42.

Autor: Hüsameddin N. (hsameddin_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aso sry für die fehlenden informationen,

das programm habe ich für einen avr atmega8 geschrieben, da es unter 
windows 7 geht nehm ich an das es nicht programmspezifisches ist

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

Bewertung
0 lesenswert
nicht lesenswert
Hüsameddin N. schrieb:
> aso sry für die fehlenden informationen,
>
> das programm habe ich für einen avr atmega8 geschrieben, da es unter
> windows 7 geht nehm ich an das es nicht programmspezifisches ist

Ah ja, wenn das so ist!
Dann wirds wohl in der Zeile 42 + 42, also 84, sein!

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

Bewertung
0 lesenswert
nicht lesenswert
Immer noch nicht verstanden?


Z E I G E    D E I N E N    C O D E

Autor: Hans-Georg Lehnard (h-g-l)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hüsameddin N. schrieb:
> aso sry für die fehlenden informationen,
>
> das programm habe ich für einen avr atmega8 geschrieben, da es unter
> windows 7 geht nehm ich an das es nicht programmspezifisches ist

Ich dachte Windows soll erst mir der nächsten Version auf nicht Intel 
Hardware laufen. Aber Windows 7 auf einem armega8 find ich echt cool ;)

Autor: Hüsameddin N. (hsameddin_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier nunmal der programmcode
#include <avr/io.h> 
#include <inttypes.h> 
#define FOSC 12000000UL            //12MHz Taktfrequenz 
#define BAUD 9600UL            //9600 Baud 
#define MYUBRR (FOSC/(16*BAUD))-1 
/* ADC initialisieren */ 
void ADC_Init(void) { 
uint16_t result; 
ADMUX = (1<<REFS1) | (1<<REFS0);          // interne Referenzspannung nutzen 
ADCSRA = (1<<ADPS1) | (1<<ADPS0);         // Frequenzvorteiler 
ADCSRA |= (1<<ADEN); // ADC aktivieren 
/* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man liest 
also einen Wert und verwirft diesen, um den ADC "warmlaufen zu lassen" */ 
ADCSRA |= (1<<ADSC);             // eine ADC-Wandlung 
while (ADCSRA & (1<<ADSC) );           // auf Abschluss der Konvertierung warten 
/* ADCW muss einmal gelesen werden, sonst wird Ergebnis der nächsten 
Wandlung nicht übernommen. */ 
result = ADCW; 
} 
/* ADC Einzelmessung */ 
uint16_t ADC_Read( uint8_t channel ) 
{ 
// Kanal waehlen, ohne andere Bits zu beeinflußen 
ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F); 
ADCSRA |= (1<<ADSC);             // eine Wandlung "single conversion" 
while (ADCSRA & (1<<ADSC) )           // auf Abschluss der Konvertierung warten 
; 
return ADCW;               // ADC auslesen und zurückgeben 
} 
void USART_Transmit( unsigned char data ) 
{ 
  while (!(UCSRA &(1<<UDRE))) 
    ; 
  UDR = data; 
} 
void USART_Transmit_String( char* s ) 
{ 
  while( *s != '\0' )  
  { 
    USART_Transmit( *s ); 
    ++s; 
  } 
} 
int main (void) 
{ 
 UBRRH=(unsigned char)(MYUBRR>>8);         //4 höheren Bits des UBRR 
 UBRRL=(unsigned char) MYUBRR;           //4 niedere Bits des UBRR 
 UCSRB=(1<<RXEN)|(1<<TXEN);           //Empfangen und Senden ermöglichen 
 UCSRC|=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);                                              //UCSRC Register wählen und via Z1 und Z0 8bit als Ergebnisslänge zum Einlesen festlegen 
ADC_Init(); 
char Werte[10]; 
while(1) 
{ 
int i = ADC_Read(0); 
    itoa( i, Werte, 10 ); 
    USART_Transmit_String( Werte ); 
    USART_Transmit( ' ' ); 
}  }

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

Bewertung
0 lesenswert
nicht lesenswert
1) Dein Programm läuft weder auf Windows 7 noch auf Windows XP

   Dein Programm läuft auf dem ATMega 8

   und auf deinem PC läuft ein Terminalprogramm, welches dem
   µC zuhört, was der so auf der seriellen Schnittstelle dahersendet.

2) da daher das Programm auf dem Mega8 gar nicht von der Windows-
   Version abhängen kann, kann auch nicht itoa der Übeltäter sein.

   Denn: Der µC schickt immer das gleiche auf der seriellen
   Schnittstelle raus, egal wer ihm zuhört.

3) Wenn dein Terminalprogramm auf Windows 7 den µC versteht,
   das Terminalprogramm auf Windows XP aber nicht,

   dann muss der Fehler in der Konfiguration des Terminalprogramms
   zu suchen sein.

   Das wahrscheinlichste ist, dass dein Terminalprogramm auf
   Windows 7 korrekterweise auf 9600 Baud steht, das Terminal-
   programm, welches auf XP läuft aber nicht.



Immer unter der Voraussetzung natürlich, dass du zwischendurch die Mega8 
Hardware nicht getauscht hast, d.h. du schliesst ein und dieselbe 
Platine mit dem gleichen Mega8 einmal an Windows 7 und einmal an Windows 
XP an.

Autor: Hüsameddin N. (hsameddin_n)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es ist die selbe platine gewesen, ich habe auch die selben einstellungen 
gehabt beim terminal, heißt das, dass ich die baudrate ändern muss?

Autor: Juergen Roeck (stumpjumper)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erst  mal solltest Du prüfen ob die Baudrate, Stopbits u. Parität auf 
beiden Systemen gleich eingestellt sind.
Nur mal so am Rande - um welches Terminalprogramm handelt es sich denn?

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.