-
Thread
AVR und __property
Testvariable; }; cTest Test; volatile uint8_t x; int main() { x=99; Test.Testvariable=x | PORTC; Test.Wert=PORTB | 42; x=Test.Wert; // Test.Wert++; // sowas geht (noch) nicht! -> '++' implementieren Test.Wert=Test.Wert+1; // ist hier natürlich 'gewöhnungsbedürftig',
ganz toll: "wenn ich die nicht für kleinen Speicher geeigneten Features von C++ verwende, dann geht's nicht. Also kann ich C++ nicht verwende!" Nein, falscher Schluß! Dann muß man das weglassen, was nicht geht! Was glaubt ihr denn, was von [c]Test.Wert=PORTB | (uint8_t)42; [/c] übrig bleibt
-
Thread
I2C mit Bascom Fehlersuche bei LTC2945
40 $swstack = 16 $framesize = 32 $baud = 9600 Config Lcd = 20 * 2 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Sda = Porta.6 Config Scl = Porta.7 Const Basewrite = &HCE Const Baseread = &HCF Dim Vin_msb As Byte ,
framesize = 32 $baud = 9600 '$lib "i2c_twi.lbx" Config Lcd = 20 * 2 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Sda = Portd.1 Config Scl = Portd.0 Const Basewrite = &HCE Const Baseread = &HCF
-
Thread
hd44780 initialisierung
Du setzt deine PORTC Pins für das LCD nicht auf Ausgang.
holger schrieb im Beitrag #2929970: > Du setzt deine PORTC Pins für das LCD nicht auf Ausgang. Das stimmt natürlich. Nachdem ich dies tat blinken sehr kurz alle Pixel auf beim flashen, dann ist wieder ein Pixelloses Display zu sehen... holger schrieb
-
Thread
4x4 Tastenmatrix Problem
wurde). Vielen Dank schon mal im Vorraus. :) PS: Ich verwende einen Atmega8 LEDs an den PORTC 0,1,3,4,5 Tastatur: Zeilen auf PORTD 0-3 Spalten auf PORTD 4-7
Kanst du sicher ausschließen dass die Hardware nicht geht? Haben die LEDs in dieser Konstellation denn schon mal _überhaupt_ geleuchtet?
-
Thread
erster Atmega ->
'$regfile = "M8def.dat" $regfile = "M8adef.dat" Config Portc.1 = Output Config Portc.2 = Output Do Portc.1 = 0 Portc.2 = 1 Loop End
bissel Leben 'eingehaucht' $regfile = "M8def.dat" 'es handelt sich um einen ATmega8 Config Portc.1 = Output Config Portc.2 = Output Do Portc.1 = 0 Portc.2 = 1 waitms 500 Portc.2 = 0 Portc.1 = 1 waitms 500 Loop End da iss es nitt so monoton (monolicht) vlG
-
Thread
Glcd Anzeigefehler
Resonator und es hat nicht geklappt. Zeige mal deinen jetzigen Code hier nochmal mit dem es nun geht,sollte auch mit mehr als 1 Mhz gehen.
>Jetzt gehts einzeln mit den Linien und >dem Text aber Zusammen Fehlalarm Oh, oh. Was geht denn da jetzt wieder nicht? Bild machen;)
-
Thread
Sinnvolle Programmgliederung
Lcd von Libs abhängig (als beispiel eben ringpuffer.h) sind diese nicht mehr eigenständig, darum gehts mir. Hab eben unglücklicherweise ein Beispiel gewählt das du wiederlegen konntest :-)
Aber eigentlich wollt ich mich nicht so auf Puffer festfahren, das Beispiel war nur grade zur Hand. Geht natürlich genauso mit einer StringToInt-Funktion.
-
Thread
Hardware PWM Timer1 funktioniert nicht
PINA0))) { PORTC &=~ (1<<PB0); } if(PINA &(1<<PINA0)) { PORTC |= (1<<PB0); } if(!(PINA &(1<<PINA1))) { PORTC &=~ (1<<PB1); } if(PINA &(1<<PINA1)) { PORTC
Karl Heinz hat doch geschrieben, wie es schneller geht: Indem Du den Wert nicht nur um eins erhöhst sondern einen größeren Wert (STEP).
-
Thread
BRGE-Befehl unklar
Moin Moin, ich hab mal wieder ein kleines Problem mit meinem Mega32... Es geht um den BRGE-Befehl. [avrasm]freqschleife: out portc,wf inc wf cpi freq,1 brge freqcount rjmp freqschleife freqcount: mov a1,freq
Anstatt BRSH geht dann auch BRNE, denn x ≥ 1 ich gleichbedeutend mit x ≠ 0 Und es geht auch ein CPSE wenn man ein Register übrig hat: [avrasm] clr zero freqschleife: out portc, wf inc wf
-
Thread
NAND mit TAmega32 ansteuern
Das mit dem 74HC573 verstehe ich nicht richtig. Ups, der Mega32 hat kein Memory-Interface. Das geht nur mit z.B. ATmega162, ATmega128. Peter
noch einen Pull-down und WP einen Pull-up spendieren. In Deiner NAND.c setzt/löschst Du mit jedem PORTC-Zugriff immer nur genau einen Pin, die anderen werden dabei LOW - das ist sicher nicht Deine Absicht. (siehe Hans Peter B.) PORTC = (0<<x) Was soll das? Schiebe mal eine Null hin und her, was erhältst
-
Thread
ISR viel zu mollig
könntest du den CTC Modus des Timers benutzen. Dazu ist er schliesslich da. Und wenn du anstatt PORTC ^= (1 << PHI_2); die scheinbar längere Variante if( PORTC & ( 1<<PHI_2 ) ) PORTC &= ~( 1<<PHI_2 ); else PORTC |= ( 1<<PHI_2 ); wählst, ermöglichst du dem Compiler die Benutzung
Karl Heinz Buchegger schrieb im Beitrag #2920074: > die scheinbar längere Variante > if( PORTC & ( 1<<PHI_2 ) ) > PORTC &= ~( 1<<PHI_2 ); > else > PORTC |= ( 1<<PHI_2 ); > > wählst, ermöglichst du dem Compiler die Benutzung der Port-Bitbefehle, > was ihn dann wiederrum nicht
-
Thread
Array auf PIN Register schieben
Schön. Warum nimmst du bool Arrays? Ein Bitmuster auf PIN geht doch auch und ist nichts anderes als dein bool Array nur zusammengesetzt. Falls du da AVRs nutzt solltest du anstatt PINx lieber PORTx benutzen falls du das auf einem Port ausgeben willst.
gemacht :D mr. mo schrieb im Beitrag #2919802: > Warum nimmst du bool Arrays? Ein Bitmuster auf PIN geht doch auch und > > ist nichts anderes als dein bool Array nur zusammengesetzt. Weil ich sonst später bei der USB-Übertragung Probleme bekomme. Hmm schrieb im Beitrag #2919797: > Mach doch!
-
Thread
Atmega16 + 75HC595 Problem
probier mal den code von tuxgraphics [c] #ifdef USE_74595 // SER pin 14: #define S74595_0 PORTC&=~(1<<PORTC5) #define S74595_1 PORTC|=(1<<PORTC5) // RCLK pin 12: #define S74595_RCLKDOWN PORTC&=~(1<<PORTC4) #define S74595_RCLKUP PORTC|=(1<<PORTC4) // SRCLK pin 11: #define S74595_CLOCKDOWN PORTC&=~(1<<PORTC3) #define S74595_CLOCKUP PORTC|=(1<<PORTC3) // Inline assembly, nop = do nothing for a clock cycle. //#define nop() asm volatile("nop\n\t" "nop\n\t"::) #define nop() asm volatile(
-
Thread
Keine Reaktion auf Eingabe
> #define BUTTON_PORT (&PORTC) > #define BUTTON_DDR (&DDRC) Ist es an irgendeiner STelle wichtig, dass du die Adresse benutzen kannst? Wenn nein: dann lass es. Das verschafft dir nur zusätzlichen Aufwand bei der Benutzung von
geht es deutlich schneller (mit ISP-Anschluss), wenn man einfach was probieren möchte. Kann ich den direkt an die Ports hängen (siehe Pollin-Board) oder muss ich etwas zwischendran hängen (weil das Pollin-Board
-
Thread
AVR Einstieg / Probleme mit Programm Interrupt
0b000010; GetWaitTime(); PORTB = 0b000001; GetWaitTime(); PORTB = 0b000000; PORTC = 0b000001; GetWaitTime(); PORTC = 0b000010; GetWaitTime(); PORTC = 0b000100; GetWaitTime(); PORTC = 0b001000; GetWaitTime(); PORTC = 0b000100; GetWaitTime(); PORTC =
nur PORTC3. Das wollte ich eigentlich damit ausdrücken. Es geht doch nur um die Absicherung 0 und kleiner 0, klar hätte auch kleiner 1 schreiben können aber das macht hier doch nun wirklich keinen Unterschied
-
Thread
mC wird "warm"
dimmt in 1 Stunde von 65535/65535 auf 1/65535 Duty-Cycle herunter, schaltet dann den Ausgang aus und geht in den Sleep Mode. In dem Moment sieht man die LED deutlich ausgehen.
du die kathoden müsstest du die transistoren logischerweise > zwischen + und anode schalten. das geht mit einem npn tranistor > schlechter. Nö, das geht sogar besser (keine Geistersegmente), da schneller geschaltet wird. Niemand zwingt Dich, immer nur die Emitterschaltung zu verwenden. Peter
-
Thread
JTAG lässt sich nicht deaktivieren (ATMega32)
16MHz Quarz. Geflasht wird mit ISP VCC = 5V Ich beobachte folgendes Problem: Ich möchte den PORTC vom ATMega32 als I/O verwenden. Alternativ liegt ja darüber das JTAG Interface. Im Code ist der PORTC als Ausgang deklariert, an diesem Port hängen jeweils 8 LEDs gegen Masse. D.h. JTAG Fuse Bit
µC nicht mehr über mein mySmartUSBlight dongle programmierbar, oder? Oder geht dieses Interface immer, da ja beim Flashen der Reset Pin auf low gezogen wird und dadurch der µC immer über die ISP Schnittstelle programmierbar ist? Ich habe das zwar noch nciht probiert, aber würde
-
Thread
Umstieg von Atmega8 auf Atmega168 LCD initialisiert nicht mehr
Schau mal Deine Fuses an und setz mal JTAGEN auf disable. Damit solltest Du PORTC wie gewohnt verwenden können. Gruß, Sam
Ganz im Gegenteil, die Delay.h des AVR-GCC benötigt die Optimierung, vorzugsweise -Os. Mit -O0 geht sie total falsch. Peter
-
Thread
Timer2 Sekundentakt: Denkfehleranalys erbeten
Beitrag #2913440: > ja eh. Wieso gibts da keine Compiler-Warnung für? -ESILLYTYPO oer so... Das geht erst, wenn dein Compiler den neuen "figure out what I mean" Modus unterstützt.
> Das geht erst, wenn dein Compiler den neuen "figure out what I mean" > Modus unterstützt. Meine Güte, wie ich auf den warte!
-
Thread
Ultraschallmodul SRF08 und Bascom
geschriebeen: [code]Config Scl = Porta.4 Config Sda = Porta.3[/code] Aber die Leitungen sind bei PORTC.1 und PORTC.0 geblieben. Kann man die I2C_Bus Leitungen etwa garnicht auf andere Pins konfigurieren? Da gibts doch eine Hardware-Lösung und eine Software-Lösung in Bascom wenn ich mich nicht irre
bindet die LBX ein. Ist die LBX eingebunden muss man zwangsläufig die Hardware-TWI-Pins benutzen sonst geht nichts.
-
Thread
Funktion für eine LED-Matrix. Optimierung für Interupt ?
c] // Pinbelegung für die Matrix, an verwendete Pins anpassen #define mtx_zeilen_port PORTC // Port für Matrix Zeilen Ansteuerung #define mtx_zeilen_ddr DDRC // Port-Richtung #define mtx_z1 PC0 #define mtx_z2 PC1 #define mtx_z3 PC2 #
MTX_COUNTER; // Counter vorbelegung vom Timer neu setzen. CTC Modus ist hier einfacher und zeitgemäß. Geht aber vorerst auch so. Hast du mal simuliert, wie lange deine alte und deine neue Routine brauchen? MFG Falk
-
Thread
Verständnisproblem PullUp PullDown
ich zur Sicherheit mal nach: Atmega88, PortC. [c] DDRC |= (1<<PINC0) // PinC0 = Eingang PORTC |= (1<<PINC0) // interner PullUp an [/c] Verbinde ich nun PinC0 mit Masse (Taster), dann ist die if-Abfrage True und der Code in der Klammer wird ausgeführt: [c] if (PINC & (1<<PINC0)) {
Bit) in PINB geloescht (0) ist */ if ( !(PINB & (1<<PINB2)) ) { /* Aktion */ } [/c] Das geht soweit ich weiss gar nicht. [c] if (PINC & ~(1<<PINC0)) { // Tu was... } [/c]
-
Thread
ATmega32 mit Timer1 (PD5) + restliche Ports als I/O nutzen
Dann kommst Du mit 1 Byte pro index aus (read_idx & write_idx) und kannst Punkt 2 abhaken. Ausserdem geht der Zugriff auf Deinen Buffer über Indices im allgemeinen flotter als mit Pointern - jedenfalls auf einem µC.
wartet, bis das Senderegister frei ist und beschreibt erst dann UDR. So, wie Du das oben machst, geht das in die Hose.
-
Thread
USART TXC Interrupt
/delay.h> int main(void) { DDRD = 0xFF; DDRB = 0xFF; DDRC = 0xFF; PORTC= 0xFF; //test led an //---USART config registers--- //UCSRA |= (1<<UDRE); UCSRB |= (1<<TXCIE) | (1<<TXEN); //rxc interrupt enable, transmitter enable alternative: 1<<TXCIE UCSRC |=
synchron, 8-bit, Rising XCK Edge UBRRL=25; //2400bps error 0.2% sei(); while(1) { PORTC=0xFF; } } ISR(USART_TXC_vect) { UDR=0xFF; while ( !(UCSRA & (1<<UDRE)) ); PORTB = 0x00; _delay_us(10); PORTB = 0x00; PORTC = 0x00; //schaltet test led aus }
-
Thread
GLCD geht nicht
* 64sed , Dataport = Porta , Controlport = Portc , Ce = 0 , Ce2 = 1 , Cd = 2 , Rd = 3 , Reset = 5 , Enable = 4 'The dataport is the portname that is connected to the data lines of the LCD 'The controlport is the portname which pins are used to
geht leider auch nicht
-
Thread
Vorwärts/Rückwärtszähler
ausgeben. // Invertierung des Zählerstands für die Ausgabe auf den LEDs // nicht vergessen. PORTC = ~Cnt; while (1) { switch (State) { case 0: if((PINB & (1 << 7)) && Cnt < 254) { Cnt++; PORTC = ~Cnt; State = 1; } else
spielen sich aber nur die Bälle zu und tun im Grunde nichts. Erst wenn keine Taste mehr gedrückt ist, geht es wieder zurück in den Zustand 0.
-
Thread
Atmega88 reagiert nicht auf seriellen Eingang
Daher ist es wichtig, dass du erst mal feststellst, ob die USART grundsätzlich funktioniert. Und das geht am einfachsten, wenn der µC sendet und der PC empfängt. Immer so wenig Unbekannte wie möglich und ungetestete Systeme die Fehler enthalten können im System haben!
damit ging es nicht. In dieser Version wird das UCSR0A Register in Ruhe gelassen so wie es ist, damit geht es. Muss wohl mal genauer nachlesen. Das Datenblatt das ich mir von Reichelt geladen hatte geht nur bis Seite 35, muss wohl mal ein komplettes Datenblatt suchen... [c] /* * DruckerSteuerung.c
-
Thread
Frage zum TWI
main (void) { DDRC |=(1 << PC5);//LED DDRB &=~(1 << PB1); //Taster while(1) { PORTC |=(1<<PC5); if((PINB & (1<<PB1))) { TWCR =| (1<<TWEN); } } } [/c]
Dshing Sung schrieb im Beitrag #2896054: > PORTC |=(1<<PC5); Hat evtl. der TWI was mit dem Pin C5 zu tun? Was steht denn dazu im Datenblatt? [pre] SCL/ADC5/PCINT13 – Port C, bit 5 SCL, 2-wire Serial Interface Clock: When the TWEN bit in TWCR
-
Thread
Stoppuhr mit Atmega 8 und 4x20 LCD Display
Timer1 Timer1_isr Enable Interrupts Const Timervorgabe = 22456 Timer1 = Timervorgabe Config Portc.5 = Input Config Portc.4 = Input Taste_startreset Alias Pinc.5 Taste_stop Alias Pinc.4 Portc.5 = 1 'Pullupwiderstand Portc.4 = 1
Timer1 Timer1_isr Enable Interrupts Const Timervorgabe = 19456 Timer1 = Timervorgabe Config Portc.5 = Input Config Portc.4 = Input Taste_startreset Alias Pinc.5 Taste_stop Alias Pinc.4 Portc.5 = 1 'Pullupwiderstand Portc.4 = 1
-
Thread
Interrupt Problem ATm16 C
(1<<PD0) | (1<<PD1) | (1<<PD2) ); SegIndex++; if( SegIndex == 3 ) SegIndex = 0; PORTC = SegPattern[SegIndex]; if( SegPattern == 0 ) PORTD |= (1<<PD0); else if( SegPattern == 1 ) PORTD |= (1<<PD1); else PORTD |= (1<<PD2); } [/C] Das ist deine Multiplexroutine
ist dein erstes Ziel, um zu sehen, ob die Ausgabe und der Multiplex korrekt laufen. Und von dort gehts dann weiter. Und PS: Tastenauswertung macht man nicht mittels Interrupt
-
Thread
ATMega8, Multiplexing, ULN2803a
Hm.. Also schalte ich jetzt vor den PortC einfach meinen ULN2803a (auf GND schalten, COM offen lassen)? Brauche ich dann überhaupt meinen, in diesem Fall 1kOHM Widerstand, weil der Treiber ja auch 2,7 kOhm Resistor vorzuweisen hat? Und
nicht mit PNP-Transistoren funktionieren können? Und falls ja, würden doch 33Ohm ausreichen? Jetzt geht's ans Programmieren, das dürfte jetzt alles klappen ;) MfG Nik
-
Thread
Interrupts in Assembler und C
include "uart.h" /* 9600 baud */ #define UART_BAUD_RATE 2400 void Schalter1 (void) { PORTC &= ~(1<<PORTC0); // Bit 0 loeschen, LED an _delay_ms(2000); PORTC |= (1 << PORTC0); // Bit 0 setzen, LED aus uart_putc ('1'); } void Schalter2 (void) { PORTC &= ~(1<<PORTC1); // Bit
BIT_Overflow (1<<F_INT1_Overflow) volatile int Zaehl_Int0=0, Zaehl_Int1=0; void Schalter1 (void) { PORTC &= ~(1<<PORTC0); // Bit 0 loeschen, LED an _delay_ms(2000); PORTC |= (1 << PORTC0); // Bit 0 setzen, LED aus uart_putc ('1'); } void Schalter2 (void) { PORTC &= ~(1<<PORTC1); // Bit
-
Thread
timer0 beim AT90USB162
main (void){ DDRB=0xff; //set PORTB as output PORTB=0x00; DDRC=0x00; //set PORTC as input with pull ups PORTC=0xff; TCNT0 = 112; //set the reload value TCCR0B |= (1<<CS02) | (1<<CS00);//prescaler clk/1024 TIMSK0 |= (1<<TOIE0); //overflow interrupt enable sei
Hiermit sollte einfach anhand von 4 leds an PORTB überprüft werden, ober > der Timer0 läuft. Also geht alles.
-
Thread
Wo liegt mein Denkfehler
Hi, ich habe folgendes kleines Programm geschrieben: [c] void Schalter1 (void) { PORTC &= ~(1<<PORTC0); // Bit 0 loeschen, LED an _delay_ms(2000); PORTC |= (1 << PORTC0); // Bit 0 setzen, LED aus } void Schalter2 (void) { PORTC &= ~(1<<PORTC1); // Bit 0 loeschen, LED an
schreib ich in die Schleife nur rein PORTC = PINB; dann geht die Lampe0 an, wenn ich an PORTB mit Masse verbinde.
-
Thread
Probleme beim Blinklicht
(1000); PORTC = 0x00; _delay_ms(1000); } } [/c] Zuerst lege ich fest - PORTC = Ausgang ---> DDRC = 0xFF; Alle LEDs an PORTC sollen einmal aufleuchten für 2 Sekunden ---> PORTC = 0xFF; alle PINS
die ich dierekt ansteuere geht an und aus, also in diesem Fall die zweite LED an PORTC1. Ich kapiere nicht, warum die anderen Lampen alle brennen, wenn ich schreibe PORTC = 0x00; dann sage ich alle Ports sind LOW und dennoch sind
-
Thread
8Bit Datenleitung auf 2 Ports splitten, für LCD, bidirektional
Hi >Gibt es da anderen weg, weiß es nicht warum das so nicht geht... Was geht nicht? JTAG abgeschaltet? MfG Spess
Ungetestet: [c]// schreiben: PORTA = (PORTA & ~(3 << 6)) | (bitsVar << 6); PORTC = (PORTC & 3) | (bitsVar & ~3); // lesen: return (PORTA >> 6) | (PORTC & ~3);[/c]
-
Thread
Hilfe bei Binär-Uhr
} PORTD = (sekunde/10)*16 + sekunde%10; PORTB = (minute/10)*16 + minute%10; PORTC = (stunde/10)*16 + stunde%10; } } [/c] Ich würde mich über ein wenig Hilfe sehr freuen. Mit freundlichen Grüßen, Niklas Aust
direkt einen Uhrenquarz angeschlossen hast. Der braucht weit weniger Energie für die Anregung und geht bei zu hoher Anregung auch gerne mal kaputt. Für den bräuchtest du die "Low Frequency"-Einstellung. > Kondensatoren vor dem Quarz sind auch vorhanden. Sind es auch die richtigen? =) Irgendwas um
-
Thread
Pollin Controller Port Ausgang auf "high" schalten
auf 0 setzen //PORTC |= (1<<PC0);[/c] Nöö, die Anweisung ist ja auskommentiert ;-)
[c]PORTC |= (1<<PC0); // einschalten PORTC &= ~(1<<PC0); // ausschalten[/c]
-
Thread
ATMEGA8, RN-MiniControl, Lauflicht per CTRL-Stecker
von PB0 über PC3 bis hin zu PD7 geht. Wie stelle ich das an, unter Verwendung verschiedener Ports ein Lauflicht zu bekommen?
& 0x04, PORTB, PB0 ); SWITCH_LED( Licht & 0x08, PORTB, PB5 ); SWITCH_LED( Licht & 0x10, PORTC, PC3 ); SWITCH_LED( Licht & 0x20, PORTB, PB3 ); SWITCH_LED( Licht & 0x40, PORTD, PD3 ); SWITCH_LED( Licht & 0x80, PORTC, PC2 ); delay_ms(70); } return 0; } [/C]
-
Thread
IO-View-Anzeige erweitern
Paarungen, die zu PortB gehören. Was ist aber, wenn ich mehrere gleichzeig sehen will, ohne umzuschalten. Geht das in der 6.0 Version noch? Was ist z.B. wenn ich gleichzeitig Werte von PORTB sehen will und die Werte von PORTC, dann müsste ich als hin -und herklicken und das ist irgendwie nicht so praktisch, sondern eher unpraktisch. Geht das vielleicht?
-
Thread
DS1302 - Sekunden / Minuten von 0 - 90!
Daniel_HH schrieb im Beitrag #2871022: > .include "m32def.inc" > .equ XTAL = 3686400 > ... Geht soetwas nicht als Anhang???
..geht sicherlich auch als Anhang, war ich grad aber zu doof für -ich bite um eine harte und gerechte Bestrafung!
-
Thread
"I2C-Stopp" wird nicht ausgeführt (HW-TWI, AVR)
in der Interrupt Aktion "twi_stop" in das TWCR eingetragen wurde. [avrasm] .equ TWI_PORT = PORTC .equ TWI_SCL = 0 .equ TWI_SDA = 1 [/avrasm] Hier die Aufgabe im Interrupt das STOP zu senden: [avrasm] twi_process_stop: ldi r16, twi_stop_cmd lds r17, (PCMSK2) sbr
Hallo, nachdem > while (TWCR & (1<<TWSTO)); // warte bis STOP ausgeführt nichts hilft (geht eigentlich immer) sehe ich jetzt nur noch zwei Möglichkeiten: 1. Du rufst dein TWIM_Stop bereits vor Ende der gerade laufenden TWI-Aktion auf (TWINT ist noch nicht gesetzt) oder 2. deine
-
Thread
Atmega 32 zu hoher Low Pegel
= (0 << 6); DDRC |= (0 << 7); MCUCSR = (1<<JTD); MCUCSR = (1<<JTD); while(1==1) { PORTC |= (0 << 7); PORTC |= (0 << 6); PORTC |= (0 << 5); PORTC |= (0 << 4); PORTC |= (0 << 3); PORTC |= (0 << 2); PORTC |= (0 << 1); PORTC |= (1 << 0); } }
unpassenden Bezeichnungen laufend Eigentore schiessen. In deinem Fall (solange es sowieso nur ums testen geht) [C] int main() { DDRC = 0x00; while( 1 ) { PORTC = 0x00; } } [/C] dann gibts auch erst mal keine Diskussionen. Und das JTAG: Schalte es per Fuse aus. Dann bist du auch
-
Thread
2-Draht Übertragnung
selbige dann bitweise ausliest, hast Du mit wenig Aufwand sehr viele Signale verarbeitet. Vielleicht gehts auch ohne Umweg über ne weitere Variable, aber ich kenne Dein System nicht. Grüße, Tom PS: Welche SPS verwendest Du?
Func2=In Func1=In Func0=In // State6=P State5=P State4=P State3=P State2=P State1=P State0=P PORTC=0x7F; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=
-
Thread
Sinustabelle wird nicht richtig ausgelesen!
in das Hobby uC einzusteigen. Nun bin ich dabei, ein kleines Stück Code zu schreiben, das über den PortC vom Mega32 bytes ausgibt, die ein DAC0808 dann als Sinus, Dreieck usw ausgeben soll. Für das Rechteck und Sägezähn klappt das ganze auch wunderbar. Nun wollte ich selbiges auch für den Sinus machen
ich nicht aus einer Tabelle. Für den Sägezahn lass ich einfach n Zähler hochlaufen und ausgeben. Geht gleichmäßig rauf und springt auf null zurück, so wie es sein soll. Für das Rechteck lass ich einfach 0X00 und 0Xff ausgeben und dazwischen zählt ein Timer für die Frequenz
-
Thread
PNP-Transistor an ATMega328 - LED glimmt?
Basiswiderstand und den Transistor die LED ein. Wenn die LED aber eigentlich dunkel sein sollte (PORTC |= 1<<PC0), glimmt sie ganz leicht, sie geht also nie ganz aus. Das passiert, sobald der Pin im Output-Modus ist (DDRC |= 1<<PC0). Woran liegt das, und wie kann ich es abstellen?
messe ich am Ausgangsport etwa 4,4V Tippe mal auf: AVCC nicht angeschlossen. Dann zieht sich PORTC seine VCC über die Pins. Peter
-
Thread
µC hängt sich nach einer weile auf
vielleicht dennoch ein Software Fehler sein kann. Wenn man die Steuerung ein und aus schaltet dann geht wieder alles ganz normal. Diese Phänomene treten für mein Erkennen sehr sporadisch auf so alle 12-16h. Hat jemand schon mal etwas ähnliches beobachtet? Ich muss leider sagen das ich es zum ersten
zu können, ob sich die da nur zufällig kreuzen und eigentlich geht die eine Leitung unter der anderen durch ohne etwas mit ihr zu tun zu haben ODER da ist eine echte Kreuzung, die beiden Leitungen sind an diesem Punkt tatsächlich miteinander verbunden, setzt
-
Thread
Beschleunigungssensor
nie ausgelesen werden. Außerdem die Sache mit der CPU-Frequenz und der Baudrate. 115.2kBaud@8MHz geht eigentlich nicht. Stephan
funktionen genauer an, und überleg, ob die tatsächlich das machen, was die machen sollten (evtl. PORTC auf UART ausgeben lassen).
-
Thread
lcd keine funktion auf atmega16 portc
sorry meinte so: [code] Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 [/code]
geht auch nichts! ist die display config richtig in deinem prog.? Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Lcd = 16 * 2