-
Thread
Für LCD nicht nutzbare Pins an Atmega8L
dieses Problem letztens schon bei einem Atmega644P, da funktionierte das LCD an PortA richtig, an PortC kamen aber nur diese verzerrten Worte. Mittlerweile habe ich herausgefunden, dass es an der JTAG-Fuse liegen könnte, hab es aber noch nicht ausprobiert. Meine Frage ist nun, ob es etwas ähnliches
, außer die ersten beiden Antwortenden, können ahnen, wieviel Zeit bei so einer Fehlersuche drauf geht. Die Ratlosigkeit steigt so weit, dass ich mich ans Mikrocontrollerforum wende, in der Hoffnung, dass es sich trotz erfolgloser google-Suche um ein bekanntes Problem handelt. Ich hab nicht bis kurz
-
Thread
Ist mein µC schnell genug?
) { PORTC &= ~( (1<<phase1m) | (1<<phase2m) | (1<<phase3p) | (1<<phase1p) ); PORTC |= ( (1<<phase2p) | (1<<phase3m) ); MCUCSR |= ( 1<<ISC2); } if(pPWM == 0) { PORTC
) { PORTC &= ~( (1<<phase1m) | (1<<phase2m) | (1<<phase3p) | (1<<phase1p) ); PORTC |= ( (1<<phase2p) | (1<<phase3m) ); MCUCSR |= ( 1<<ISC2); } if(pPWM == 0) { PORTC
-
Thread
15x 7-Segmentanzeigen (5x 3er) mit Bascom
Statisch mit Schieberegistern geht's ganz einfach http://www.mikrocontroller.net/topic/291503#new
eigenes, beschrifte es ausführlich. Egal in welcher Programmiersprache du das umsetzt, allem voran geht ein Programmablaufplan auf PAPIER. Der Timer soll den Takt für die gesamte Abarbeitung der Routinen vorgeben. Maßgeblich ist er für den Multiplextakt verantwortlich. Es geht auch ohne Timer mit 1000en
-
Thread
if Verschachtelung
Programm bleibt in der ersten if Abfrage hängen die LED blinkt aber >wenn die Spannung <= 7400 geht es nicht mehr in die andere if Abfrage. Ja, klar! Wie auch? Du hast eine while(1) Schleife programmiert!
aus sein nur die Statusled soll rot schnell blinken. Wie schreiben ich das in C switch / case geht ja auch nicht da dort kein Bereichsüberprüfung gemacht werden kann.
-
Thread
LCD und Makefile Problem
cyblord ---- schrieb im Beitrag #3359195: > Doch die Portzuordnungen. Ja aber nur ob PortD oder Portc .... Diese Einstellung habe ich so belassen mir geht es eher um diese Aussage: // Anpassungen im makefile: // ATMega8 => MCU=atmega8 im makefile einstellen // lcd-routines.c in SRC =
---- schrieb im Beitrag #3359195: >> Doch die Portzuordnungen. > > Ja aber nur ob PortD oder Portc .... > Diese Einstellung habe ich so belassen > > mir geht es eher um diese Aussage: > > // Anpassungen im makefile: > // ATMega8 => MCU=atmega8 im makefile einstellen > // lcd-routines.c
-
Thread
STM32 - Fragen zum Einstieg
schon im stm32_flash.ld sein, oder? Nachdem in diesem Linker Script die .text Section nach "> FLASH" geht, sollte mein Programm im User Flash ab 0x08000000 landen ... hab ich das so richtig interpretiert? Nur damit ich weiss wie ich die Jumper auf meinem Board stecken muss
Beim GPIO_Init() muß es auch PORTC heißen.
-
Thread
DS18B20 mit Atmega8 bekomme nur 1 empfangen
Else Locate 2 , 10 Lcd " " ; Temp_string ; Chr(0) ; "C" End If If Temp_soll >= Temp_ist Then Portc.0 = 0 Else Portc.0 = 1 End If If Pinc.3 = 1 And Temp_soll < 300 Then Temp_soll = Temp_soll + 1 End If If Pinc.2 = 1 And Temp_soll > -150 Then Temp_soll = Temp_soll - 1 End If Waitms
Ich sehe gerade, dass 2MHz auch noch geht, aber bei 1MHz bekomme ich dein Programm nicht zum Laufen.
-
Thread
ATMEGA128 externer Interrupt resettet
werden im 1sec Takt gewechselt. ************* */ while(1) { if (aaa == 0) { PORTC = gelb; } else { PORTC = blau; } } } /* ********************************** Interrupts ***************************** */ ISR(INT0_vect) { //cli();
if (aaa == 0) { aaa = 1; } else { aaa = 0; } } [/c] ersetz habe geht alles. Danke für die schnelle Hilfe.
-
Thread
Mikroncontroller über Programm mit intigrierter GUI steuern
so aus (nur zur Orientierung, wie Ablauf aussieht): Do 'PC2: Signal einschalten (HIGH) Portc.2 = 1 'xx Sekunden Warten Waits 3 'PC2: Signal ausschalten (LOW) Portc.2 = 0 'xx Sekunden Warten Waits 60 Loop Jetzt würde ich gerne die delay-Zeiten über eine GUI
übertragen von Steuersignalen an den USART ersparen Da wirst du wohl nicht drum herum kommen. Um was geht es denn genau?
-
Thread
high & low Byte zusammensetzen
PORTB &= ~ ( 1 << PB1 | 1 << PB2 ); __disable_interrupt(); PORTB |= (1 << PB2); //PORTC &= ~ (1 << PC0 | 1 << PC4 | 1 << PC1 | 1 << PC5 | 1 << PC3 | 1 << PC2); } [/C]
PORTB &= ~ ( 1 << PB1 | 1 << PB2 ); __disable_interrupt(); PORTB |= (1 << PB2); //PORTC &= ~ (1 << PC0 | 1 << PC4 | 1 << PC1 | 1 << PC5 | 1 << PC3 | 1 << PC2); }
-
Thread
Protokoll für Kommandos an den MC selber schreiben
set PORTE as output PORTE.OUT = 0xff; // set PORTE to high (LED = off) PORTC.DIR = 0xff; PORTC.OUT = 0xff; } void ConfigCLK(void) // Configure ClockSystem { OSC.CTRL = 3; // set internal oscillator to 32MHz while(OSC.STATUS != 3); CCP
alle "dummen" Fragen zu CRC allgemein: http://www.flipcode.com/documents/crc.txt Achja allgemein geht es um Parität: http://de.wikipedia.org/wiki/Parit%C3%A4tsbit Dir reicht es wenn Du einen Bitfehler erkennst und immer wieder neu senden kannst.
-
Thread
USART Empfangs bzw. Sendeproblem
deaktivieren USARTC0.CTRLB = USART_TXEN_bm | USART_RXEN_bm; // Transmitt + Receive Enable PORTC.DIR = 0x08; // TxD Pin als Ausgang schalten PMIC.CTRL = PMIC_HILVLEN_bm; // High Level Interrupts aktivieren sei(); // Globale Interrupts aktivieren
Okay, anscheinend bin ich wirklich zu optimistisch gewesen ;) Mit 1200 Baud gehts einigermaßen, oft kommen die Zeichen aber noch falsch an @Karl: Der Wert der in USARTC0.CTRLA geschrieben wird, brechnet sich wie folgt (mit BSCALE = 0): [math] BSEL = \frac{f_{CLK}}{2^{BSCALE
-
Thread
Tastenenprellung Deluxe P. Dannegger
Das geht schon, aber für das toggeln geht es einfacher und schneller so beim xmega: PORTE.OUTTGL = 0x01;
Clock auf 32Mhz einstellen*/ CLK.CTRL = CLK_SCLKSEL_RC32M_gc; /* Pullup für alle Taster */ PORTC.PIN3CTRL |= PORT_OPC_PULLUP_gc; PORTC.PIN2CTRL |= PORT_OPC_PULLUP_gc; PORTC.PIN0CTRL |= PORT_OPC_PULLUP_gc; PMIC.CTRL |= PMIC_LOLVLEN_bm; // Lo Interrupt Enable init_timer(
-
Thread
(Löt)jumper machen ATMega verrückt
Funktion. Also, als erstes bitte einmal im Datenblatt nachlesen wie das mit der ADC Versorgung geht. Lg.
dazwischen an Vcc, also auf jeden Fall niederohmig. Der versorgt auch > nicht nur den AD-Wandler. So geht das auf gar keinen Fall.
-
Thread
Timer + Interrupt Inkrementalgeber
count ++; //counter erhoehen } int main(void) { DDRA=0xff; //PORTC komplett als Ausgaenge nutzen prog_init(); //Initialisierung der Interrupt Funktion while(1); //untaetige Endlosschleife if(count>10000){ PORTA &= (1<<PA4)
D. schrieb im Beitrag #3333827: > PORTA &= (1<<PA4); Was soll das werden? PA4 auf 0 oder 1? geht beides nicht so, wie's da steht. auf 0: PORTA &= ~(1<<PA4); auf 1: PORTA |= (1<<PA4); s. http://www.mikrocontroller.net/articles/Bitmanipulation
-
Thread
Verwaltung von Pins und Peripherie global oder lokal
eine Änderung und keine externen Listen (brrr das ist sowieso so eine Idee aus der Hölle). Das geht auch, wenn ein Modul die Zuweisungen nur über #defines bekommt. gruß cyblord
_PORT PORTC #define SPARE1 PC2 #define SPARE1_PIN PINC #define SPARE1_DDR DDRC #define SPARE1_PORT PORTC #define SPARE2 PD7 #define SPARE2_PIN PIND #define SPARE2_DDR DDRD #define SPARE2_PORT PORTD
-
Thread
Wieso Objektorientiert?
// Rotary encoder B configuration encoder_B.ddr = &DDRC; encoder_B.port = &PORTC; encoder_B.pin = &PINC; encoder_B.pinNr_A = PC3; encoder_B.pinNr_B = PC2; encoder_B.internPullup = True; encoder_B.autoAcceleration = True; encoder_B.accerelationFactor = 100;
Technisch betrachtet ist das in diesen Faellen so, aber konzeptionell eben nicht. Und um das Konzept geht es, nicht ob der Pointer links oder rechts vom Methodennamen steht. Bei den obigen Beispielen geht es in erster Linie um Kapselung. Nun ist mir aber klar, warum ihr mit eurem Projekt so grosse Probleme
-
Thread
Pin Change Interrupt
Quellcode nach meinem Gedächnis, sitze nicht vor dem Laptop im Moment. DDRC = 0b00000000; PORTC = 0b00000111; // die 1 sind für 3 Taster die noch am Port C hängen Pin Change interupt aktivieren PCICR |= (1 << PCIE1); Pin Change Mask entsprechend für die Zwei Pins setzen. PCMSK |= (1
die Zeitweiterschaltung) genau eine Runde. D.h. deine Hauptschleife WIRD laufend ausgeführt. Der µC geht ja nicht nach dem Abarbeiten der ISR automatisch wieder schlafen. Wird sleep() aufgerufen, dann geht der AVR in den eingestellten Sleep Mode. Wird er aufgeweckt, dann wird in deinem Fall dann eben
-
Thread
PIC - delay macht mehr als es soll
/LED1 RA2 = 0; //LED2 // Ist Taster 0 an PortC gedrückt? if(RC0==1) { //Ja RA1 = 1; //LED3 RC1 = 1; //LED4 RA0 = 1; //LED5 } else { //
Erster Preis geht an Stefan es fehlte das CMCON Register. Mit [c]CMCON = 0b00000111;[/c] klappts. Danke
-
Thread
Siedle In-Home-Bus Protokoll
PC1: 100 Ohm // 10ms 2,2k // bits mit 100 Ohm DDRC |= _BV( PC0 ) | _BV( PC1 ); PORTC = 0; while (1) { long_delay( 5000 ); PORTC |= _BV( PC0 ); long_delay( 11 ); PORTC &= ~_BV( PC0 ); PORTC |= _BV( PC0 ); PORTC |= _BV( PC1 ); uint8_t bits
&= ~_BV( PC1 ); PORTC |= _BV( PC1 ); PORTC &= ~_BV( PC1 ); PORTC &= ~_BV( PC0 ); } [/c]
-
Thread
Atmega8A - PWM-Einstellung über Spannungsteiler mit AD Wandlung
// PORTD2 als Ausgang für 5V an Spannungsteiler DDRC |= (1<<PORTC0); // PORTC als Eingang von Poti ADCSRA |= (1<<ADEN) | (1<<ADIE) | (1<<ADFRA) | (0<<ADPS2) | (0<<ADPS1) | (1<<ADPS0); // AD-Wandlung aktivieren + Interruptfreigabe
PortB2 als Ausgänge // festlegen. DDRC |= (0<<PORTC0); // PORTC0 als AD-Eingang ADCSRA |= (1<<ADEN) | (1<<ADSC); // AD-Wandlung aktivieren } int main() { InitPWM();
-
Thread
Drehgeber auslesen
& 1<<PA1) #define PHASE_B (PINA & 1<<PA3) #define LEDS_DDR DDRC #define LEDS PORTC // LEDs against VCC volatile int8_t enc_delta; // -128 ... 127 static int8_t last; void encode_init( void ) { int8_t new; new = 0; if( PHASE_A )
einfach blinken. AN, Pause, AUS, Pause. Die Pausen macht man einfach mit _delay_ms(1000); Wenn das geht, solte auch der Rest laufen.
-
Thread
AVR Project – Relay Timer with ATmega8 AVR MCU
interrupt.h> #include "lcd.h" //Connection of Load #define LOAD_DDR DDRC #define LOAD_PORT PORTC #define LOAD_POS PC0 //Global variable for the clock system volatile unsigned int clock_millisecond=0; volatile char clock_second=0; volatile char clock_minute=0; volatile char
: > Eine bessere Übung gibt es nicht. Hast du auch einen Vorschlag wie man dort am besten ran geht?
-
Thread
TFT 480 X 320 falsche farben ILI9481
hmm.es sollte doch aber stimen das ich DB0,1,2,3..7 an PortB 0,1,2,3...7 angeklemmt habe und PortC dann weiter db DB8,9,10..15 und am xmega an PortC 0,1,2,3..7 oder?
vermutlich ein BUG?!? Wenn ich TFT_16bit_Set_Reg(0x21, 0x05); und damite infach alles invertiere, gehts :-)
-
Thread
F_CPU bei atmega644 Standardeinstellungen
/ WARTEN AUF CTS SIGNAL UDR0 = data; PORTC=1<<PC0; } [/C]
genau. Besser wäre ein Quarz. Selbst mit Quarz beträgt der Baudratenfehler 8.5%. Sprich Baudrate geht nicht mit 1MHz.
-
Thread
µc hängt sich auf bei meiner lüftersteuerung :/
PORTC ^= (1<<PC5); PORTB ^= (1<<PB0); _delay_ms(300); } } } [/c] Den kleinen Lüfter habe ich laut Anhang angeschlossen. Das Gate hängt am PB0 Port. VCC zapfe ich
Das habe ich bereits. Die LED geht an und aus. Es kann eigentlich nur an meiner Lüfter-Beschaltung liegen. btw. als Mosfet nehme ich das IRLZ34N. Fehlt mir vielleicht irgendwo noch ein Widerstand oder eine DIODE? mfg µc
-
Thread
Wer sieht den Fehler im Code
= uart_getc(); // hier etwas mit c machen z.B. auf PORT ausgeben //DDRC = 0xFF; // PORTC Ausgang //PORTC = c; if (buffer == test) { PORTB = 0b00001110; _delay_ms(100); } else { PORTB = 0b00000100; _delay_ms(
Treiber im PC was nicht. Wenn schon, dann nachverfolgen, an welchem µC Pin diese blinkende Leitung geht. Es muss der Rx Pin vom µC sein.
-
Thread
Frage zu Bitmanipulation.
: Mein Programm besteht nur aus: int main(void) { DDRC |= (1<<PC5); // (PC5 LED) PORTC &=~ (1<<PC5); while(1) { } } Obwohl ich mit &=~ den Port an PC5 "ausschalte" leuchtet meine LED?! Woran liegt das? Mein Multimeter zeigt 0V an. Die LED leuchtet aber trotzdem. Mache ich es umgekehrt und lege mit PORTC |= (1<<PC5) Spannung an geht die LED aus?! Kann das wer erklären? Danke schonmal! r.
-
Thread
Atmel und SRAM, timing
Header-Definition von _delay_us geschaut, immer angenommen dass da nur eine Ganzzahl als Argument geht. Jetzt sehe ich dass das Argument von Typ double ist.
nicht rein garnichts zu tun. Das hängt nur am Vorhandensein und der Mächtigkeit eines Präprozessors. Geht also z.B. in Assembler ganz genauso.
-
Thread
Einsteigerfrage: Pin Toggeln in Assembler - PIC
Das PORTC Register lässt sich nur in der Bank 0 ansprechen, wenn eine andere Bank aktiv ist geht der Zugriff ins Leere.
genau was es soll - ohne die BSF/BCF Krücke ;-) main BANKSEL ANSELC clrf ANSELC BANKSEL PORTC clrf PORTC BANKSEL TRISC clrf TRISC BANKSEL PORTC endlos movlw b'00000001' xorwf PORTC,F goto endlos END (deinen Denkfehler habe ich oben schon erklärt)
-
Thread
Bitreverse elegant programmieren
Hallo, es geht um Bitreverse elegant programmieren. Ich hab mir gedacht: [c] bla = ((bla >> 4) & 0x0F)|((bla << 4) & 0xF0); bla = ((bla >> 2) & 0x33)|((bla << 2) & 0xCC); bla = ((bla >> 1) & 0x55)|((bla << 1)
Im anderen kommt das Wort gar nicht vor. Wieso schade? Ernst hat gar nicht verstanden worum es geht.
-
Thread
swap in C Vs. Asm
Yalu X. schrieb im Beitrag #3304290: > PORTD = swap(PORTC); Dieser Code geht noch kürzer: [c] PORTD = 0; for(;;); [/c] Du meintest warscheinlich: [c] for(;;) PORTD = swap(PINC); [/c]
Peter Zz schrieb im Beitrag #3351547: > Und es geht doch: leider falsch...
-
Thread
LCD im 4bit Modus initialisieren, funktioniert nicht, C, Atmega8
Der Betrieb im 8bit Modus ist mir bereits gelungen, aber warum die 4Pins opfern, wenns auch ohne geht. Zur Hardware: μC: Wie oben erwähnt, Atmel Atmega8-16PU LCD: ANAG VISION AV1624 (Datenblatt hier: http://www.produktinfo.conrad.com/datenblaetter/175000-199999/183342-da-01-ml-LCD_Modul_16x2_Zeichen_de_en.pdf
für Eure Hilfe! Grüße. [c]#include <avr/io.h> #include <util/delay.h> #define LCD_Control PORTC #define LCD_DDR_Control DDRC #define LCD_Enable 5 #define LCD_ReadWrite 4 #define LCD_RegisterSelect 3 #define LCD_Data PORTD #define LCD_DDR_Data DDRD /* * send enable signal */ void
-
Thread
Wieder mal ein PWM Beitrag (Atmega8)
Angaben: Fuses eingestellt auf internen 8MHz Takt •[c] #define F_CPU 8000000L #define LED_AN PORTC &= ~(1<<PINC5) #define LED_AUS PORTC |=(1<<PINC5) #include <avr/io.h> #include <avr/Interrupt.h> void initialize(void) { DDRC=0xff; TCCR0 |= (1<<CS00); //hier
Preload von 251 zählt 5x bis zum Überlauf: 2, 3, 4, 5, 0. Nimm aber lieber Timer2. Der kann CTC. Damit geht das viel eleganter. mfg.
-
Thread
Benötige Hilfe beim Einstieg in die Mikrocontrollerwelt mit PIC
= 0b00000000; while(1){ PORTA = 0b00000000; PORTB = 0b00000000; PORTC = 0b00000000; __delay_ms(1000); PORTA = 0b11111111; PORTB = 0b11111111; PORTC = 0b11111111; __delay_ms(1000); } }
Threadstarter ging es um Hilfe und Infos und er hat schon was mit AVRs gemacht. Die Aussage war: 'Ja es geht, wenn Du Dir einen gewissen stil angewöhnst geht es leichter. Wenn Du mit etwas weitermachst das Du schon kennst geht es noch einfacher.' Worauf immer Deine Überzeugungen sich auch begründen, von
-
Thread
LED umschalten mit Taster
tasteJetzt ) { if( tasteJetzt == TASTE_GEDRUECKT ) { PORTC = 0b00000001; } if ((tasteJetzt == TASTE_GEDRUECKT) && (PORTC=0b00000001)) { PORTC=0b00000000; PORTC=0b00000010; }
geht das nicht einfach mit: [c] if( PINB & ( 1 << PB0 ) ){ if(PortC == 0b00000100){ PortC= 0b00000001; } else { PortC << 1; } _delay_ms(30); } [/c]
-
Thread
Atmega162 (MLF) timer interrupt will nicht, AVRstudio debugger mit mega16 funktioniert (AVR-GCC)
delay.h> #include <avr/interrupt.h> ISR(TIMER1_COMPA_vect) { //1 sec. timer cli(); PORTC = 1; sei(); } int main(void) { sei(); TIMSK = (1<<OCIE1A); //enable interrupts OCR1A=976; //1 sec. TCCR1B = (1<<CS12)|(1<<CS10)|(1<<WGM12); //CTC with prescaler 1024
obersten zeilen vergessen: Wenn kein Hardwarefehler vorliegt sollte es eigentlich funktionieren. Beim PortC solltest du aber beachten, das im Auslieferzustand des ATMega162 PC4..PC7 vom JTAG-Interface belegt sind. >DDRC=0b11111111; //sry für diese schreibweise veständlicher als >PORTC = 2; //zum
-
Thread
TWI Bus Hardware
>Aber natürlich !! ;-) Das bedeutet jetzt was? Es geht jetzt? Dann ist ja alles ok. Es geht nicht? Dann klopp den unbekannten LA in die Tonne.
reinscrollst wird das "!" dort dir das vermutlich auch sagen. Wenn SCL=high und SDA von low auf high geht ist das eine STOP condition (soweit OK). Dann geht aber (während SCL immer noch high ist) SDA von high auf low, was eine START condition ist. Keine Ahnung ob du die an dieser Stelle haben willst.
-
Thread
Atmega48 ADC zu PWM
adc_value = 0; uint16_t pwm_calc_value = 0; DDRB |= (1<<PB1); DDRC &= ~(1<<PC0); PORTC |= (1<<PC0); TCCR1A |= ((1<<COM1A1) | (1<<WGM10)); //non inverting, Prescaler 256 TCCR1B |= ((1<<WGM12) | (1<<CS12)); // Prescaler 256, Fast PWM OCR1A = 200; ADMUX |= (1<<REFS0
meinte ich, habe nur falsch geschrieben, in meinem Source den ich gepostet habe, hatte ich es richtig, geht aber trotzdem nicht. Werde mir nochmal das Dateblatt unter die Lupe nehmen.
-
Thread
Maximale Helligkeit von 7-Segment-Displays im PWM-Multiplex-Betrieb
status==1) PORTC |= (1<<PC4); if(status==0) PORTC &=~(1<<PC4); break; case 4: if(status==1) PORTC |= (1<<PC4); if(status==0) PORTC &=~(1<<PC4); break; case 5: if(
SELECT_SEGMENTS(unsigned char symbol) { switch(symbol) { // Unterstrich case '_': PORTC |= (1<<PC0); PORTC &=~(1<<PC1); PORTC &=~(1<<PC1); PORTC &=~(1<<PC1); PORTC &=~(1<<PC1); PORTC &=~(1<<PC1); PORTC &=~(1<<PC1); PORTC &=~(1<<PC1);
-
Thread
Probleme mit For-Schleife und Rückgabeparameter
Wenn an PORTC.0 und/oder PORTC.1 ein Taster o.ä. hängt, dann ist die Portkonfiguration <TRISC = 0x00> falsch - damit ist der gesamte PORTC nämlich OUTPUT.
wiederverwenden, sollten sie gebraucht werden. Chris B. schrieb im Beitrag #3287319: > Wenn an PORTC.0 und/oder PORTC.1 ein Taster o.ä. hängt, dann ist die > Portkonfiguration <TRISC = 0x00> falsch - damit ist der gesamte PORTC > nämlich OUTPUT. Das habe ich schon angepasst, war ein alter code
-
Thread
Probleme mit einfachem C-Code
Ich setz mal voraus, das Du am PORTC4 einen Widerstand nach Masse hast und durch drücken der Taste der Pin auf high gehen soll. Wenn da kein Massewiderstand ist, dann ist PINC4 immer high, weil Du durch PORTC=0xFF den internen Pullup
funktioniert es wie erwartet. Genauer: Wenn ich in der while-Schleife eine volatile-Variable verändere, geht es nicht mehr. Nur warum nicht??
-
Thread
Programmierbare Relaiskarte - Konfigurationsdaten Lesen/Speichern/Übertragen
deiner Umgebung um. Man kann viel lernen, indem man beobachtet, wie andere Dinge machen. Und plötzlich geht einem dann oft sogar ein Licht auf, WARUM die das genau so gemacht haben.
frage mich nur warum es nicht auf dem Mega8 laufen will. Abgesehen davon das ich hier alle Pins des PortC nutzen kann und beim Mega8 hier noch UART drauf liegt hat sich nichts geändert. Habe jediglich das Target geändert und die beidem Pins des PortC dazu genommen. Hat hier jemand eventuell einen Ansatz
-
Thread
PIC18, bekomm I2C nicht ordentlich ans laufen
Sprich die Hardware ist ok. Wenn ich dann aber den PIC resette und mein Programm drin ist, dann gehts nicht. Nochmal genauer: 1. Fremdes Programm rein: funktioniert 2. Mein Prog rein: funktioniert auch 3. Strom aus oder Erase 4. Strom an: Geht nicht 5. Mein Prog nochmal rein: Geht nicht
Programm ist für CCS geschrieben, kenn ich nicht, hab ich allerdings nach Recherche alles so gut es geht übernommen. D/A Wandler ist MAX5812L Im obigen Beispiel sollten eigentlich 5V rauskommen. Das Einzige was ich im anderen Programm nicht versteh ist: #byte portc = 0xF82 Was bedeutet das? Aus